diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 36e03dfc..5e6dc6b3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -36,7 +36,7 @@ concurrency: env: POETRY_VERSION: "1.7.1" PYTHON_VERSION: "3.10" - TERRAFORM_VERSION: "1.7.3" + TERRAFORM_VERSION: "1.9.3" REGISTRY: ghcr.io IMAGE_NAME: ${{ github.repository }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b3ddc2d..aed866e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,9 +8,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added ### Changed +### Deprecated +### Removed +### Fixed +### Security + +## [1.4.0] + +### Added + - Issue 205 - Define a an API key for the Confluence workflow and usage plan limits + - Issue 201- Create table for tracking granule ingest status + - Issue 225 - Create one track ingest table per feature type + - Issue 222 - Add operations to load granule Lambda to write granule record to track ingest database + - Issue 198 - Implement track ingest lambda function CMR and Hydrocron queries + - Issue 193 - Add new Dynamo table for prior lake data + - Issue 196 - Add new feature type to query the API for lake data +### Changed ### Deprecated ### Removed ### Fixed + - Issue 210 - Features with large geometries cannot be loaded ### Security ## [1.3.0] diff --git a/README.md b/README.md index 9b886502..10ac661b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ ## Overview + Hydrocron API is a new tool that implements functionalities that will allow hydrologists to have direct access to filtered data from our newest satellites. This innovative tool will provide an effortless way to filter data by feature ID, @@ -6,6 +7,7 @@ date range, polygonal area, and more. This data will be returned in formats such as CSV and geoJSON. ## Requirements + Python 3.10+ ## Running Locally with Docker @@ -18,10 +20,14 @@ Python 3.10+ ### 1. Build or Pull Hydrocron Docker Build the docker container: + ```bash + docker build . -f docker/Dockerfile -t hydrocron:latest ``` -Pull a pre-built image from https://github.com/podaac/hydrocron/pkgs/container/hydrocron: + +Pull a pre-built image from [https://github.com/podaac/hydrocron/pkgs/container/hydrocron](https://github.com/podaac/hydrocron/pkgs/container/hydrocron): + ```bash docker pull ghcr.io/podaac/hydrocron:latest ``` @@ -29,6 +35,7 @@ docker pull ghcr.io/podaac/hydrocron:latest ### 2. Run Docker Compose Launch dynamodb local on port 8000 and hyrdrocron on port 9000 + ```bash docker-compose up ``` @@ -42,6 +49,7 @@ poetry install ``` This will load the data in `test/data` into the local dynamo db instance. + ```bash python tests/load_data_local.py ``` diff --git a/docs/examples.md b/docs/examples.md index 32897f9b..cf87fa59 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -270,6 +270,56 @@ Will return GeoJSON: } ``` +## Get time series GeoJSON for a lake + +Search for a single lake by ID. + +[https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=PriorLake&feature_id=6350036102&start_time=2024-07-20T00:00:00Z&end_time=2024-07-26T00:00:00Z&fields=lake_id,time_str,wse,area_total,quality_f,collection_shortname,crid,PLD_version,range_start_time&output=geojson](https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=PriorLake&feature_id=6350036102&start_time=2024-07-20T00:00:00Z&end_time=2024-07-26T00:00:00Z&fields=lake_id,time_str,wse,area_total,quality_f,collection_shortname,crid,PLD_version,range_start_time&output=geojson) + +Will return GeoJSON: + +```json +{ + "status": "200 OK", + "time": 391.613, + "hits": 1, + "results": { + "csv": "", + "geojson": { + "type": "FeatureCollection", + "features": [ + { + "id": "0", + "type": "Feature", + "properties": { + "lake_id": "6350036102", + "time_str": "2024-07-25T22:48:23Z", + "wse": "260.802", + "area_total": "0.553409", + "quality_f": "1", + "collection_shortname": "SWOT_L2_HR_LakeSP_2.0", + "crid": "PIC0", + "PLD_version": "105", + "range_start_time": "2024-07-25T22:47:27Z", + "wse_units": "m", + "area_total_units": "km^2" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -42.590727027987064, + -19.822613018107482 + ] + } + } + ] + } + } +} +``` + +**NOTE:** Due to the size of the original polygon in the lake (L2_HR_LakeSP) shapefiles, we are only returning the calculated center point of the lake. This is to facilitate conformance with the GeoJSON specification and center points should not be considered accurate. + ## Get time series CSV for river reach Search for a single river reach by ID. @@ -310,6 +360,26 @@ Will return CSV: } ``` +## Get time series CSV for lake + +Search for a single lake by ID. + +[https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=PriorLake&feature_id=6350036102&start_time=2024-07-20T00:00:00Z&end_time=2024-07-26T00:00:00Z&fields=lake_id,time_str,wse,area_total,quality_f,collection_shortname,crid,PLD_version,range_start_time&output=csv](https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=PriorLake&feature_id=6350036102&start_time=2024-07-20T00:00:00Z&end_time=2024-07-26T00:00:00Z&fields=lake_id,time_str,wse,area_total,quality_f,collection_shortname,crid,PLD_version,range_start_time&output=csv) + +Will return CSV: + +```json +{ + "status": "200 OK", + "time": 321.592, + "hits": 1, + "results": { + "csv": "lake_id,time_str,wse,area_total,quality_f,collection_shortname,crid,PLD_version,range_start_time,wse_units,area_total_units\n6350036102,2024-07-25T22:48:23Z,260.802,0.553409,1,SWOT_L2_HR_LakeSP_2.0,PIC0,105,2024-07-25T22:47:27Z,m,km^2\n", + "geojson": {} + } +} +``` + ## Accept headers See the [documentation on the timeseries endpoint](timeseries.md) for an explanation of Accept headers. diff --git a/docs/intro.md b/docs/intro.md index ce6a4d0d..bb2d476b 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -1,5 +1,7 @@ # Hydrocron Documentation +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.11176233.svg)](https://doi.org/10.5281/zenodo.11176233) + Hydrocron is an API that repackages hydrology datasets from the Surface Water and Ocean Topography (SWOT) satellite into formats that make time-series analysis easier. SWOT data is archived as individually timestamped shapefiles, which would otherwise require users to perform potentially thousands of file IO operations per river feature to view the data as a timeseries. Hydrocron makes this possible with a single API call. @@ -9,3 +11,4 @@ Original SWOT data is archived at NASA's [Physical Oceanography Distributed Acti Datasets included in Hydrocron: - [SWOT Level 2 River Single-Pass Vector Data Product, Version 2.0](https://podaac.jpl.nasa.gov/dataset/SWOT_L2_HR_RiverSP_2.0) +- [SWOT Level 2 Lake Single-Pass Vector Data Product, Version 2.0](https://podaac.jpl.nasa.gov/dataset/SWOT_L2_HR_LakeSP_2.0) diff --git a/docs/overview.md b/docs/overview.md index b0bea9be..3cd3f49d 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -11,9 +11,24 @@ The main timeseries endpoint allows users to search by feature ID. River reach and node ID numbers are defined in the [SWOT River Database (SWORD)](https://doi.org/10.1029/2021WR030054), and can be browsed using the [SWORD Explorer Interactive Dashboard](https://www.swordexplorer.com/). +Lake ID numbers are defined in the PLD (Prior Lake Database) and can be located in the SWOT shapefiles, see [SWOT Product Description Document for the L2_HR_LakeSP Dataset](https://podaac.jpl.nasa.gov/SWOT?tab=datasets-information§ions=about) for more information on lake identifiers. + SWOT may observe lakes and rivers that do not have an ID in the prior databases. In those cases, hydrology features are added to the Unassigned Lakes data product. Hydrocron does not currently support Unassigned rivers and lakes. +Hydrocron currently includes data from these datasets: + +- Reach and node shapefiles from the Level 2 KaRIn high rate river single pass vector product (L2_HR_RiverSP) +- PLD-oriented shapefiles from the Level 2 KaRIn high rate lake single pass vector product (L2_HR_LakeSP) + +See this PO.DAAC [page](https://podaac.jpl.nasa.gov/SWOT?tab=datasets-information§ions=about) for more information on SWOT datasets. + ## Limitations -Data return size is limited to 6 MB. If your query response is larger than this a 413 error will be returned. +Data return size is limited to **6 MB**. If your query response is larger than this a 413 error will be returned. + +**For Lake data:** Due to the size of the original polygon in the lake (L2_HR_LakeSP) shapefiles, we are only returning the calculated center point of the lake. This is to facilitate conformance with the GeoJSON specification and center points should not be considered accurate. + +## Citation + +Cite Hydrocron using the following DOI: [10.5281/zenodo.11176233](https://doi.org/10.5281/zenodo.11176233). diff --git a/docs/timeseries.md b/docs/timeseries.md index ae4f1208..6c8f487b 100644 --- a/docs/timeseries.md +++ b/docs/timeseries.md @@ -85,7 +85,7 @@ Content-Type: text/csv ### feature : string, required: yes -Type of feature being requested. Either: "Reach" or "Node" +Type of feature being requested. Either: "Reach", "Node" or "PriorLake" ### feature_id : string, required: yes @@ -93,8 +93,10 @@ ID of the feature to retrieve - Reaches have the format CBBBBBRRRRT (e.g., 78340600051) - Nodes have the format CBBBBBRRRRNNNT (e.g., 12228200110861) +- PriorLakes have the format CBBNNNNNNT (e.g., 2710046612) -Please see the [SWOT Product Description Document for the L2_HR_RiverSP Dataset](https://podaac.jpl.nasa.gov/SWOT?tab=datasets-information§ions=about) for more information on identifiers. +Please see the [SWOT Product Description Document for the L2_HR_RiverSP Dataset](https://podaac.jpl.nasa.gov/SWOT?tab=datasets-information§ions=about) for more information on reach and node identifiers. +Please see the [SWOT Product Description Document for the L2_HR_LakeSP Dataset](https://podaac.jpl.nasa.gov/SWOT?tab=datasets-information§ions=about) for more information on lake identifiers. ### start_time : string, required: yes @@ -136,7 +138,7 @@ The SWOT data fields to return in the request. This is specified in the form of a comma separated list (without any spaces): `fields=reach_id,time_str,wse,slope` -Hydrocron includes additional fields beyond the source data shapefile attributes, including units fields on measurements, cycle and pass information, and SWORD and collection versions. **NOTE: Units are always returned for fields that have corresponding units stored in Hydrocron, they do not need to be requested.** The complete list of input fields that are available through Hydrocron are below: +Hydrocron includes additional fields beyond the source data shapefile attributes, including units fields on measurements, cycle and pass information, SWORD and PLD (prior river and lake database names), and collection versions. **NOTE: Units are always returned for fields that have corresponding units stored in Hydrocron, they do not need to be requested.** The complete list of input fields that are available through Hydrocron are below: **Reach data fields** @@ -196,6 +198,21 @@ Hydrocron includes additional fields beyond the source data shapefile attributes 'crid', 'geometry', 'sword_version', 'collection_shortname' ``` +**Lake data fields** +```bash +'lake_id', 'reach_id', 'obs_id', 'overlap', 'n_overlap', +'time', 'time_tai', 'time_str', 'wse', 'wse_u', 'wse_r_u', 'wse_std', +'area_total', 'area_tot_u', 'area_detct', 'area_det_u', +'layovr_val', 'xtrk_dist', 'ds1_l', 'ds1_l_u', 'ds1_q', 'ds1_q_u', +'ds2_l', 'ds2_l_u', 'ds2_q', 'ds2_q_u', +'quality_f', 'dark_frac', 'ice_clim_f', 'ice_dyn_f', 'partial_f', +'xovr_cal_q', 'geoid_hght', 'solid_tide', 'load_tidef', 'load_tideg', 'pole_tide', +'dry_trop_c', 'wet_trop_c', 'iono_c', 'xovr_cal_c', 'lake_name', 'p_res_id', +'p_lon', 'p_lat', 'p_ref_wse', 'p_ref_area', 'p_date_t0', 'p_ds_t0', 'p_storage', +'cycle_id', 'pass_id', 'continent_id', 'range_start_time', 'range_end_time', +'crid', 'geometry', 'PLD_version', 'collection_shortname', 'crid' +``` + ## Response Format ### Default @@ -444,16 +461,13 @@ Example CSV response: *The 400 code is also currently returned for queries where no time series data could be located for the request specified feature ID. The message returned with the response indicates this and it can be helpful to adjust the date ranges you are searching. -## API Keys [DRAFT] - -> ⚠️ ->API keys not yet implemented but coming soon! Content below is not finalized. More details to follow... +## API Keys -Users may request a special API key for cases where their intended usage of the API may be considered heavy or more complex. Heavy usage can be defined as continued used with over x requests per day or continue use which require many requests per second or concurrent requests. To request an API key or to discuss your use case, please contact us at x. +Users may request a special API key for cases where their intended usage of the API may be considered heavy or more complex. Heavy usage can be defined as continued use with many requests per hour or day or continued use which may require many requests per second or concurrent requests. To request an API key or to discuss your use case, please submit a [GitHub issue](https://github.com/podaac/hydrocron/issues). **Note: Users do *not* have to send an API key in their request to use the Hydrocron API. The API key is optional.** -### How to use an API key in requests [DRAFT] +### How to use an API key in requests Hydrocron API key header: `x-hydrocron-key` diff --git a/hydrocron/api/controllers/authorizer.py b/hydrocron/api/controllers/authorizer.py index a84d5dbd..05d3cd53 100644 --- a/hydrocron/api/controllers/authorizer.py +++ b/hydrocron/api/controllers/authorizer.py @@ -26,9 +26,10 @@ def authorization_handler(event, context): logging.info("Context: %s", context) api_key_trusted = "" if "x-hydrocron-key" not in event["headers"].keys() else event["headers"]["x-hydrocron-key"] + trusted_key_list = json.loads(STORED_API_KEY_TRUSTED) - if api_key_trusted and api_key_trusted == STORED_API_KEY_TRUSTED: - response_policy = create_policy("trusted_partner", "Allow", event["methodArn"], STORED_API_KEY_TRUSTED) + if api_key_trusted and api_key_trusted in trusted_key_list: + response_policy = create_policy("trusted_partner", "Allow", event["methodArn"], api_key_trusted) logging.info("Created policy for truster partner.") else: diff --git a/hydrocron/api/controllers/timeseries.py b/hydrocron/api/controllers/timeseries.py index 29463cbd..68465aad 100644 --- a/hydrocron/api/controllers/timeseries.py +++ b/hydrocron/api/controllers/timeseries.py @@ -129,8 +129,8 @@ def validate_parameters(parameters): error_message = '' - if parameters['feature'] not in ('Node', 'Reach'): - error_message = f'400: feature parameter should be Reach or Node, not: {parameters["feature"]}' + if parameters['feature'] not in ('Node', 'Reach', 'PriorLake'): + error_message = f'400: feature parameter should be Reach, Node, or PriorLake, not: {parameters["feature"]}' elif not parameters['feature_id'].isdigit(): error_message = f'400: feature_id cannot contain letters: {parameters["feature_id"]}' @@ -189,6 +189,8 @@ def is_fields_valid(feature, fields): columns = constants.REACH_ALL_COLUMNS elif feature == 'Node': columns = constants.NODE_ALL_COLUMNS + elif feature == 'PriorLake': + columns = constants.PRIOR_LAKE_ALL_COLUMNS else: columns = [] return all(field in columns for field in fields) @@ -241,6 +243,8 @@ def timeseries_get(feature, feature_id, start_time, end_time, output, fields): results = data_repository.get_reach_series_by_feature_id(feature_id, start_time, end_time) if feature.lower() == 'node': results = data_repository.get_node_series_by_feature_id(feature_id, start_time, end_time) + if feature.lower() == 'priorlake': + results = data_repository.get_prior_lake_series_by_feature_id(feature_id, start_time, end_time) if len(results['Items']) == 0: data['http_code'] = '400 Bad Request' @@ -343,15 +347,6 @@ def add_units(gdf, columns): def get_response(results, hits, elapsed, return_type, output, compact): """Create and return HTTP response based on results. - :param results: Dictionary of SWOT timeseries results - :type results: dict - :param hits: Number of results returned from query - :type hits: int - :param elapsed: Number of seconds it took to query for results - :type elapsed: float - :param return_type: Accept request header - :type return_type: str - :param output: Output to return in request :param results: Dictionary of SWOT timeseries results :type results: dict :param hits: Number of results returned from query diff --git a/hydrocron/api/data_access/db.py b/hydrocron/api/data_access/db.py index 32a2ce5e..10938696 100644 --- a/hydrocron/api/data_access/db.py +++ b/hydrocron/api/data_access/db.py @@ -56,3 +56,43 @@ def get_node_series_by_feature_id(self, feature_id, start_time, end_time): # no Key(constants.SWOT_NODE_SORT_KEY).between(start_time, end_time)) ) return items + + def get_prior_lake_series_by_feature_id(self, feature_id, start_time, end_time): # noqa: E501 # pylint: disable=W0613 + """ + + @param feature_id: + @param start_time: + @param end_time: + @return: + """ + table_name = constants.SWOT_PRIOR_LAKE_TABLE_NAME + + hydrocron_table = self._dynamo_instance.Table(table_name) + hydrocron_table.load() + + items = hydrocron_table.query(KeyConditionExpression=( + Key(constants.SWOT_PRIOR_LAKE_PARTITION_KEY).eq(feature_id) & + Key(constants.SWOT_PRIOR_LAKE_SORT_KEY).between(start_time, end_time)) + ) + return items + + def get_granule_ur(self, table_name, granule_ur): + """ + + @param table_name: str - Hydrocron table to query + @param granule_ur: str - Granule UR + @return: dictionary of items + """ + + hydrocron_table = self._dynamo_instance.Table(table_name) + hydrocron_table.load() + + items = hydrocron_table.query( + ProjectionExpression="granuleUR", + Limit=1, + IndexName="GranuleURIndex", + KeyConditionExpression=( + Key("granuleUR").eq(granule_ur) + ) + ) + return items diff --git a/hydrocron/db/io/swot_reach_node_shp.py b/hydrocron/db/io/swot_shp.py similarity index 56% rename from hydrocron/db/io/swot_reach_node_shp.py rename to hydrocron/db/io/swot_shp.py index ec54c6d1..6c5466fd 100644 --- a/hydrocron/db/io/swot_reach_node_shp.py +++ b/hydrocron/db/io/swot_shp.py @@ -1,8 +1,9 @@ """ -Unpacks SWOT Reach & Node Shapefiles +Unpacks SWOT Shapefiles """ import os.path import json +import tempfile from datetime import datetime, timezone from importlib import resources import xml.etree.ElementTree as ET @@ -12,6 +13,8 @@ import geopandas as gpd import numpy as np import pandas as pd +from shapely import Polygon + from hydrocron.utils import constants @@ -20,7 +23,7 @@ def read_shapefile(filepath, obscure_data, columns, s3_resource=None): """ - Reads a SWOT River Reach shapefile packaged as a zip + Reads a SWOT shapefile packaged as a zip Parameters ---------- @@ -41,34 +44,40 @@ def read_shapefile(filepath, obscure_data, columns, s3_resource=None): to the database table """ filename = os.path.basename(filepath) - lambda_temp_file = '/tmp/' + filename - if filepath.startswith('s3'): - bucket_name, key = filepath.replace("s3://", "").split("/", 1) - logging.info("Opening granule %s from bucket %s", key, bucket_name) + with tempfile.TemporaryDirectory() as lambda_temp_dir_name: + lambda_temp_file = os.path.join(lambda_temp_dir_name, filename) + if filepath.startswith('s3'): + bucket_name, key = filepath.replace("s3://", "").split("/", 1) + logging.info("Opening granule %s from bucket %s", key, bucket_name) + + s3_resource.Bucket(bucket_name).download_file(key, lambda_temp_file) - s3_resource.Bucket(bucket_name).download_file(key, lambda_temp_file) + shp_file = gpd.read_file('zip://' + lambda_temp_file) + with zipfile.ZipFile(lambda_temp_file) as archive: + shp_xml_tree = ET.fromstring(archive.read(filename[:-4] + ".shp.xml")) - shp_file = gpd.read_file('zip://' + lambda_temp_file) - with zipfile.ZipFile(lambda_temp_file) as archive: - shp_xml_tree = ET.fromstring(archive.read(filename[:-4] + ".shp.xml")) + elif filepath.startswith('https'): + _, bucket_name, key = filepath.replace("https://", "").split("/", 2) + logging.info("Opening granule %s from bucket %s", key, bucket_name) - elif filepath.startswith('https'): - _, bucket_name, key = filepath.replace("https://", "").split("/", 2) - logging.info("Opening granule %s from bucket %s", key, bucket_name) + s3_resource.Bucket(bucket_name).download_file(key, lambda_temp_file) - s3_resource.Bucket(bucket_name).download_file(key, lambda_temp_file) + shp_file = gpd.read_file('zip://' + lambda_temp_file) + with zipfile.ZipFile(lambda_temp_file) as archive: + shp_xml_tree = ET.fromstring(archive.read(filename[:-4] + ".shp.xml")) + else: + shp_file = gpd.read_file('zip://' + filepath) + with zipfile.ZipFile(filepath) as archive: + shp_xml_tree = ET.fromstring(archive.read(filename[:-4] + ".shp.xml")) - shp_file = gpd.read_file('zip://' + lambda_temp_file) - with zipfile.ZipFile(lambda_temp_file) as archive: - shp_xml_tree = ET.fromstring(archive.read(filename[:-4] + ".shp.xml")) - else: - shp_file = gpd.read_file('zip://' + filepath) - with zipfile.ZipFile(filepath) as archive: - shp_xml_tree = ET.fromstring(archive.read(filename[:-4] + ".shp.xml")) + if 'LakeSP_Prior' in filename: + shp_file = handle_null_geometries(shp_file) + shp_file = convert_polygon_to_centerpoint(shp_file) - numeric_columns = shp_file[columns].select_dtypes(include=[np.number]).columns if obscure_data: + numeric_columns = shp_file[columns].select_dtypes(include=[np.number]).columns + shp_file[numeric_columns] = np.where( (np.rint(shp_file[numeric_columns]) != -999) & (np.rint(shp_file[numeric_columns]) != -99999999) & @@ -76,7 +85,6 @@ def read_shapefile(filepath, obscure_data, columns, s3_resource=None): np.random.default_rng().integers(low=2, high=10)*shp_file[numeric_columns], shp_file[numeric_columns]) - shp_file = shp_file.astype(str) filename_attrs = parse_from_filename(filename) xml_attrs = parse_metadata_from_shpxml(shp_xml_tree) @@ -84,15 +92,54 @@ def read_shapefile(filepath, obscure_data, columns, s3_resource=None): attributes = filename_attrs | xml_attrs items = assemble_attributes(shp_file, attributes) - if os.path.exists(lambda_temp_file): - os.remove(lambda_temp_file) - return items +def handle_null_geometries(geodf): + """ + Assign fill value polygon to any features that contain null geometries + + Parameters + ---------- + geodf : geopandas.GeoDataFrame + the geodataframe containing the unpacked shapefile features + + Returns + ------- + geodf_no_nulls : geopandas.GeoDataFrame + the geodataframe with null geometries handled + """ + + geodf['geometry'].fillna( + value=Polygon(constants.SWOT_PRIOR_LAKE_FILL_GEOMETRY_COORDS), + inplace=True) + + return geodf + + +def convert_polygon_to_centerpoint(geodf_polygon): + """ + Converts polygon geometries to centerpoints. Used to reduce the size of lake features + + Parameters + ---------- + geodf_polygon : geopandas.GeoDataFrame + the geodataframe containing the unpacked shapefile features with polygon feature types + + Returns + ------- + geodf_centerpoint : geopandas.GeoDataFrame + the geodataframe with point feature types and calculated centerpoint geometries + """ + geodf_centerpoint = geodf_polygon + geodf_centerpoint['geometry'] = geodf_polygon['geometry'].centroid + + return geodf_centerpoint + + def parse_metadata_from_shpxml(xml_elem): """ - Read the SWORD version number from the shp.xml file + Read the prior database (SWORD or PLD) version number from the shp.xml file and add to the database fields Parameters @@ -108,14 +155,16 @@ def parse_metadata_from_shpxml(xml_elem): # get SWORD version for globs in xml_elem.findall('global_attributes'): prior_db_files = globs.find('xref_prior_river_db_files').text + metadata_attrs = {'sword_version': prior_db_files[-5:-3]} - metadata_attrs = { - 'sword_version': prior_db_files[-5:-3] - } + # get PLD version + for globs in xml_elem.findall('global_metadata'): + prior_db_files = globs.find('xref_prior_lake_db_file').text + metadata_attrs = {'PLD_version': prior_db_files[-10:-7]} # get units on fields that have them for child in xml_elem: - if child.tag == 'attributes': + if child.tag in ('attributes', 'attribute_metadata'): for field in child: try: units = field.find('units').text @@ -130,27 +179,29 @@ def parse_metadata_from_shpxml(xml_elem): return metadata_attrs -def assemble_attributes(file_as_str, attributes): +def assemble_attributes(geodf, attributes): """ Helper function to concat file attributes to records Parameters ---------- - file_as_str : string - The file records as a string + geodf : geodataframe + The file records as a geodataframe attributes : dict A dictionary of attributes to concatenate """ items = [] - - for _index, row in file_as_str.iterrows(): + # rework to use dataframe instead of file as string + for _index, row in geodf.iterrows(): shp_attrs = json.loads( row.to_json(default_handler=str)) item_attrs = shp_attrs | attributes + + item_attrs = {key: str(item_attrs[key]) for key in item_attrs.keys()} items.append(item_attrs) return items @@ -174,14 +225,21 @@ def parse_from_filename(filename): filename_components = filename.split("_") - if 'Reach' in filename: + collection = "" + collection_version = "" + + if 'RiverSP_Reach' in filename: collection = constants.SWOT_REACH_COLLECTION_NAME collection_version = constants.SWOT_REACH_COLLECTION_VERSION - if 'Node' in filename: + if 'RiverSP_Node' in filename: collection = constants.SWOT_NODE_COLLECTION_NAME collection_version = constants.SWOT_NODE_COLLECTION_VERSION + if 'LakeSP_Prior' in filename: + collection = constants.SWOT_PRIOR_LAKE_COLLECTION_NAME + collection_version = constants.SWOT_PRIOR_LAKE_COLLECTION_VERSION + filename_attrs = { 'cycle_id': filename_components[5], 'pass_id': filename_components[6], @@ -214,7 +272,8 @@ def load_benchmarking_data(): """ items = [] - with resources.path("hydrocron.db", "benchmarking_data_reaches.csv") as csv: + csv_resource = resources.files("hydrocron.db").joinpath("benchmarking_data_reaches.csv") + with resources.as_file(csv_resource) as csv: csv_file = pd.read_csv(csv, dtype=str) logging.info("Read CSV") diff --git a/hydrocron/db/load_data.py b/hydrocron/db/load_data.py index c2f9e8ad..ca9e7a22 100755 --- a/hydrocron/db/load_data.py +++ b/hydrocron/db/load_data.py @@ -11,7 +11,7 @@ from botocore.exceptions import ClientError from hydrocron.db import HydrocronTable -from hydrocron.db.io import swot_reach_node_shp +from hydrocron.db.io import swot_shp from hydrocron.utils import connection from hydrocron.utils import constants @@ -45,12 +45,19 @@ def lambda_handler(event, _): # noqa: E501 # pylint: disable=W0613 match table_name: case constants.SWOT_REACH_TABLE_NAME: collection_shortname = constants.SWOT_REACH_COLLECTION_NAME + track_table = constants.SWOT_REACH_TRACK_INGEST_TABLE_NAME feature_type = 'Reach' case constants.SWOT_NODE_TABLE_NAME: collection_shortname = constants.SWOT_NODE_COLLECTION_NAME + track_table = constants.SWOT_NODE_TRACK_INGEST_TABLE_NAME feature_type = 'Node' + case constants.SWOT_PRIOR_LAKE_TABLE_NAME: + collection_shortname = constants.SWOT_PRIOR_LAKE_COLLECTION_NAME + track_table = constants.SWOT_PRIOR_LAKE_TRACK_INGEST_TABLE_NAME + feature_type = 'LakeSP_Prior' case constants.DB_TEST_TABLE_NAME: collection_shortname = constants.SWOT_REACH_COLLECTION_NAME + track_table = constants.SWOT_REACH_TRACK_INGEST_TABLE_NAME feature_type = 'Reach' case _: raise MissingTable(f"Hydrocron table '{table_name}' does not exist.") @@ -66,10 +73,25 @@ def lambda_handler(event, _): # noqa: E501 # pylint: disable=W0613 for granule in new_granules: granule_path = granule.data_links(access='direct')[0] + logging.info('Granule: %s', granule_path) + try: + checksum = granule['umm']['Checksum']['Value'] + except KeyError: + checksum = "Not Found" + logging.info('No UMM checksum') + + try: + revision_date = [date["Date"] for date in granule["umm"]["ProviderDates"] if "Update" in date["Type"]][0] + except KeyError: + revision_date = "Not Found" + logging.info('No UMM revision date') if feature_type in granule_path: event2 = ('{"body": {"granule_path": "' + granule_path + '","table_name": "' + table_name + + '","track_table": "' + track_table + + '","checksum": "' + checksum + + '","revisionDate": "' + revision_date + '","load_benchmarking_data": "' + load_benchmarking_data + '"}}') logging.info("Invoking granule load lambda with event json %s", str(event2)) @@ -86,15 +108,31 @@ def granule_handler(event, _): """ granule_path = event['body']['granule_path'] table_name = event['body']['table_name'] + track_table = event['body']['track_table'] load_benchmarking_data = event['body']['load_benchmarking_data'] + try: + checksum = event['body']['checksum'] + except KeyError: + checksum = "Not Found" + logging.info('No CNM checksum') + + try: + revision_date = event['body']['revisionDate'] + except KeyError: + revision_date = "Not Found" + logging.info('No CNM revision date') + if ("Reach" in granule_path) & (table_name != constants.SWOT_REACH_TABLE_NAME): raise TableMisMatch(f"Error: Cannot load Reach data into table: '{table_name}'") if ("Node" in granule_path) & (table_name != constants.SWOT_NODE_TABLE_NAME): raise TableMisMatch(f"Error: Cannot load Node data into table: '{table_name}'") + if ("LakeSP_Prior" in granule_path) & (table_name != constants.SWOT_PRIOR_LAKE_TABLE_NAME): + raise TableMisMatch(f"Error: Cannot load Prior Lake data into table: '{table_name}'") + logging.info("Value of load_benchmarking_data is: %s", load_benchmarking_data) obscure_data = "true" in os.getenv("OBSCURE_DATA").lower() @@ -102,7 +140,7 @@ def granule_handler(event, _): if load_benchmarking_data == "True": logging.info("Loading benchmarking data") - items = swot_reach_node_shp.load_benchmarking_data() + items = swot_shp.load_benchmarking_data() else: logging.info("Setting up S3 connection") s3_resource = connection.s3_resource @@ -112,6 +150,18 @@ def granule_handler(event, _): logging.info("Set up dynamo connection") dynamo_resource = connection.dynamodb_resource + + logging.info("Adding granule to track ingest table") + track_ingest_record = [{ + "granuleUR": os.path.basename(granule_path), + "revision_date": revision_date, + "expected_feature_count": len(items), + "actual_feature_count": 0, + "checksum": checksum, + "status": "to_ingest" + }] + load_data(dynamo_resource, table_name=track_table, items=track_ingest_record) + logging.info("Begin loading data from granule: %s", os.path.basename(granule_path)) load_data(dynamo_resource, table_name, items) @@ -127,16 +177,21 @@ def cnm_handler(event, _): # Parse message for message in event['Records']: cnm = json.loads(message['Sns']['Message']) + revision_date = cnm['submissionTime'] logging.info("Begin processing message %s", str(cnm)) for files in cnm['product']['files']: if files['type'] == 'data': granule_uri = files['uri'] + checksum = files['checksum'] if 'Reach' in granule_uri: event2 = ('{"body": {"granule_path": "' + granule_uri + '","table_name": "' + constants.SWOT_REACH_TABLE_NAME + + '","track_table": "' + constants.SWOT_REACH_TRACK_INGEST_TABLE_NAME + + '","checksum": "' + checksum + + '","revisionDate": "' + revision_date + '","load_benchmarking_data": "' + load_benchmarking_data + '"}}') logging.info("Invoking granule load lambda with event json %s", str(event2)) @@ -149,6 +204,24 @@ def cnm_handler(event, _): if 'Node' in granule_uri: event2 = ('{"body": {"granule_path": "' + granule_uri + '","table_name": "' + constants.SWOT_NODE_TABLE_NAME + + '","track_table": "' + constants.SWOT_NODE_TRACK_INGEST_TABLE_NAME + + '","checksum": "' + checksum + + '","revisionDate": "' + revision_date + + '","load_benchmarking_data": "' + load_benchmarking_data + '"}}') + + logging.info("Invoking granule load lambda with event json %s", str(event2)) + + lambda_client.invoke( + FunctionName=os.environ['GRANULE_LAMBDA_FUNCTION_NAME'], + InvocationType='Event', + Payload=event2) + + if 'LakeSP_Prior' in granule_uri: + event2 = ('{"body": {"granule_path": "' + granule_uri + + '","table_name": "' + constants.SWOT_PRIOR_LAKE_TABLE_NAME + + '","track_table": "' + constants.SWOT_PRIOR_LAKE_TRACK_INGEST_TABLE_NAME + + '","checksum": "' + checksum + + '","revisionDate": "' + revision_date + '","load_benchmarking_data": "' + load_benchmarking_data + '"}}') logging.info("Invoking granule load lambda with event json %s", str(event2)) @@ -175,12 +248,18 @@ def find_new_granules(collection_shortname, start_date, end_date): results : list of Granule objects List of S3 paths to the granules that have not yet been ingested """ - auth = earthaccess.login(persist=True) + if os.environ['CMR_ENV'] == "SIT": + auth = earthaccess.login(persist=True, system=earthaccess.UAT) + cmr_search = earthaccess.DataGranules(auth).provider('POCUMULUS').short_name(collection_shortname).temporal(start_date, end_date) + elif os.environ['CMR_ENV'] == "UAT": + auth = earthaccess.login(persist=True, system=earthaccess.UAT) + cmr_search = earthaccess.DataGranules(auth).provider('POCLOUD').short_name(collection_shortname).temporal(start_date, end_date) + else: + auth = earthaccess.login(persist=True) + cmr_search = earthaccess.DataGranules(auth).provider('POCLOUD').short_name(collection_shortname).temporal(start_date, end_date) logging.info("Searching for granules in collection %s", collection_shortname) - cmr_search = earthaccess.DataGranules(auth).short_name(collection_shortname).temporal(start_date, end_date) - results = cmr_search.get() logging.info("Found %s granules", str(len(results))) @@ -208,7 +287,7 @@ def read_data(granule_path, obscure_data, s3_resource=None): if 'Reach' in granule_path: logging.info("Start reading reach shapefile") - items = swot_reach_node_shp.read_shapefile( + items = swot_shp.read_shapefile( granule_path, obscure_data, constants.REACH_DATA_COLUMNS, @@ -216,12 +295,20 @@ def read_data(granule_path, obscure_data, s3_resource=None): if 'Node' in granule_path: logging.info("Start reading node shapefile") - items = swot_reach_node_shp.read_shapefile( + items = swot_shp.read_shapefile( granule_path, obscure_data, constants.NODE_DATA_COLUMNS, s3_resource=s3_resource) + if 'LakeSP_Prior' in granule_path: + logging.info("Start reading prior lake shapefile") + items = swot_shp.read_shapefile( + granule_path, + obscure_data, + constants.PRIOR_LAKE_DATA_COLUMNS, + s3_resource=s3_resource) + return items @@ -247,33 +334,36 @@ def load_data(dynamo_resource, table_name, items): raise MissingTable(f"Hydrocron table '{table_name}' does not exist.") from err raise err - if hydrocron_table.table_name == constants.SWOT_REACH_TABLE_NAME: - - if len(items) > 5: - logging.info("Batch adding %s reach items", len(items)) - for i in range(5): - logging.info("Item reach_id: %s", items[i]['reach_id']) - hydrocron_table.batch_fill_table(items) - - else: - logging.info("Adding reach items to table individually") - for item_attrs in items: - logging.info("Item reach_id: %s", item_attrs['reach_id']) - hydrocron_table.add_data(**item_attrs) - - elif hydrocron_table.table_name == constants.SWOT_NODE_TABLE_NAME: - - if len(items) > 5: - logging.info("Batch adding %s node items", len(items)) - for i in range(5): - logging.info("Item node_id: %s", items[i]['node_id']) - hydrocron_table.batch_fill_table(items) + match hydrocron_table.table_name: + case constants.SWOT_REACH_TABLE_NAME: + feature_name = 'reach' + feature_id = feature_name + '_id' + case constants.SWOT_NODE_TABLE_NAME: + feature_name = 'node' + feature_id = feature_name + '_id' + case constants.SWOT_PRIOR_LAKE_TABLE_NAME: + feature_name = 'prior_lake' + feature_id = 'lake_id' + case constants.SWOT_REACH_TRACK_INGEST_TABLE_NAME: + feature_name = 'track ingest reaches' + feature_id = 'granuleUR' + case constants.SWOT_NODE_TRACK_INGEST_TABLE_NAME: + feature_name = 'track ingest nodes' + feature_id = 'granuleUR' + case constants.SWOT_PRIOR_LAKE_TRACK_INGEST_TABLE_NAME: + feature_name = 'track ingest prior lakes' + feature_id = 'granuleUR' + case _: + logging.warning('Items cannot be parsed, file reader not implemented for table %s', hydrocron_table.table_name) - else: - logging.info("Adding node items to table individually") - for item_attrs in items: - logging.info("Item node_id: %s", item_attrs['node_id']) - hydrocron_table.add_data(**item_attrs) + if len(items) > 5: + logging.info("Batch adding %s %s items. First 5 feature ids in batch: ", len(items), feature_name) + for i in range(5): + logging.info("Item %s: %s", feature_id, items[i][feature_id]) + hydrocron_table.batch_fill_table(items) else: - logging.warning('Items cannot be parsed, file reader not implemented for table %s', hydrocron_table.table_name) + logging.info("Adding %s items to table individually", feature_name) + for item_attrs in items: + logging.info("Item %s: %s", feature_id, item_attrs[feature_id]) + hydrocron_table.add_data(**item_attrs) diff --git a/hydrocron/db/schema.py b/hydrocron/db/schema.py index 7913a25b..dd6f9660 100644 --- a/hydrocron/db/schema.py +++ b/hydrocron/db/schema.py @@ -2,6 +2,7 @@ Hydrocron Table module """ import logging +import sys from botocore.exceptions import ClientError from boto3.dynamodb.conditions import Key @@ -114,12 +115,24 @@ def batch_fill_table(self, items): try: with table.batch_writer() as writer: for item in items: - writer.put_item(Item=item) + logger.info( + "Item %s size: %s", + item[self.partition_key_name], + str(sys.getsizeof(item)) + ) + if sys.getsizeof(item) < 300000: + writer.put_item(Item=item) + else: + logger.Warning( + "Item too large, could not load: %s %s", + self.partition_key_name, + item[self.partition_key_name] + ) + continue logger.info("Loaded data into table %s.", table.name) except ClientError: logger.exception("Couldn't load data into table %s.", table.name) - raise def run_query(self, partition_key, sort_key=None): """ diff --git a/hydrocron/db/track_ingest.py b/hydrocron/db/track_ingest.py new file mode 100644 index 00000000..faeff875 --- /dev/null +++ b/hydrocron/db/track_ingest.py @@ -0,0 +1,138 @@ +""" +Hydrocron class to track status of ingested granules. +""" + +# Standard Imports +import datetime +from datetime import timezone +import json +import logging + +# Third-party Imports +from cmr import GranuleQuery + +# Application Imports +from hydrocron.api.data_access.db import DynamoDataRepository +from hydrocron.utils import connection + + +logging.getLogger().setLevel(logging.INFO) +logging.basicConfig(format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s', + datefmt='%Y-%m-%dT%H:%M:%S', + level=logging.INFO) + + +class Track: + """ + Class to track the status of ingested granules and submit missed or + newly discovered granules for Hydrocron database ingestion. + """ + + CMR_API = "https://cmr.earthdata.nasa.gov/search/granules.umm_json" + PAGE_SIZE = 2000 + + def __init__(self, collection_shortname, collection_start_date, hydrocron_table): + self.collection_shortname = collection_shortname + self.cmr_granules = {} + self.hydrocron_granules = {} + self.hydrocron_table = hydrocron_table + self.revision_start = self._get_revision_start(collection_start_date) + self.revision_end = datetime.datetime.now(timezone.utc) # TODO - Decide on latency and subtract from current datetime + + def _get_revision_start(self, collection_start_date): + """Locate the last most recent date that was queried in order to only + query on granules that have not seen before.""" + + # TODO - Query track-ingest table to determine max revision date + revision_start = None + + if not revision_start: + revision_start = collection_start_date + + return revision_start + + def query_cmr(self): + """Query CMR to locate all granules for a specific time range. + + Note: The use of "revision_date" should capture any granules that have + been reprocessed in the time range. + """ + + query = GranuleQuery() + logging.info("Querying revision_date range: %s to %s.", self.revision_start, self.revision_end) + granules = query.short_name(self.collection_shortname).revision_date(self.revision_start, self.revision_end).format("umm_json").get(query.hits()) + for granule in granules: + granule_json = json.loads(granule) + self.cmr_granules.update(self._get_granule_ur_list(granule_json)) + + logging.info("Located %s granules in CMR.", len(self.cmr_granules.keys())) + + @staticmethod + def _get_granule_ur_list(granules): + """Return dict of Granule URs and revision dates from CMR response JSON. + + :param granules: Response JSON dictionary from CMR query + :type granules: dict + + :rtype: dict + """ + + granule_dict = {} + for item in granules["items"]: + granule_ur = item["umm"]["GranuleUR"].replace("_swot", "") + checksum = 0 + for file in item["umm"]["DataGranule"]["ArchiveAndDistributionInformation"]: + if f"{granule_ur}.zip" == file["Name"]: + checksum = file["Checksum"]["Value"] + granule_dict[granule_ur] = { + "revision_date": item["meta"]["revision-date"], + "checksum": checksum + } + return granule_dict + + def query_hydrocron(self): + """Query Hydrocron for time range and gather GranuleURs.""" + + data_repository = DynamoDataRepository(connection.dynamodb_resource) + for granule_ur, data in self.cmr_granules.items(): + items = data_repository.get_granule_ur(self.hydrocron_table, f"{granule_ur}.zip") + if len(items["Items"]) > 0: + self.hydrocron_granules[granule_ur] = data + + logging.info("Located %s granules in Hydrocron.", len(self.hydrocron_granules.keys())) + + def query_track_ingest(self): + """Query track status table for granules with "to_ingest" status.""" + + def count_features(self): + """Count granule features to determine if all features have been ingested.""" + + def publish_cnm_ingest(self): + """Publish CNM message to trigger granule ingestion.""" + + def update_track_ingest(self): + """Update track status table with new granules and statuses.""" + + +def track_ingest_handler(event, context): + """Lambda handler to track status of ingested granules to Hydrocron.""" + + start = datetime.datetime.now() + + logging.info("Context: %s", context) + logging.info("Event: %s", event) + + collection_shortname = event["collection_shortname"] + collection_start_date = datetime.datetime.strptime(event["collection_start_date"], "%Y%m%d").replace(tzinfo=timezone.utc) + hydrocron_table = event["hydrocron_table"] + + track = Track(collection_shortname, collection_start_date, hydrocron_table) + track.query_cmr() + track.query_hydrocron() + track.query_track_ingest() + track.count_features() + track.publish_cnm_ingest() + track.update_track_ingest() + + end = datetime.datetime.now() + logging.info("Elapsed: %s", (end - start)) diff --git a/hydrocron/utils/constants.py b/hydrocron/utils/constants.py index be7d7538..411acc2d 100644 --- a/hydrocron/utils/constants.py +++ b/hydrocron/utils/constants.py @@ -7,17 +7,19 @@ # ----------------- # # TESTING CONSTANTS # # ----------------- # -TEST_SHAPEFILE_PATH = os.path.abspath(os.path.join( + +# -------- River Reach +TEST_REACH_SHAPEFILE_PATH = os.path.abspath(os.path.join( os.path.dirname(os.path.realpath(__file__)), '../..', 'tests', 'data', 'SWOT_L2_HR_RiverSP_Reach_548_011_NA_20230610T193337_20230610T193344_PIA1_01.zip' # noqa E501 )) -TEST_FILENAME = ( +TEST_REACH_FILENAME = ( "SWOT_L2_HR_RiverSP_Reach_548_011_NA_" "20230610T193337_20230610T193344_PIA1_01.zip") -TEST_ITEM_DICT = { +TEST_REACH_ITEM_DICT = { "reach_id": "71224100223", "time": "739741183.129", "time_str": "2023-06-10T19:39:43Z", @@ -28,33 +30,146 @@ } DB_TEST_TABLE_NAME = "hydrocron-swot-test-table" -API_TEST_TABLE_NAME = "hydrocron-swot-reach-table" -TEST_PARTITION_KEY_NAME = 'reach_id' -TEST_SORT_KEY_NAME = 'range_start_time' +API_TEST_REACH_TABLE_NAME = "hydrocron-swot-reach-table" +TEST_REACH_PARTITION_KEY_NAME = 'reach_id' +TEST_REACH_SORT_KEY_NAME = 'range_start_time' TEST_REACH_ID_VALUE = '71224100223' -TEST_TIME_VALUE = '2023-06-10T19:33:37Z' -TEST_WSE_VALUE = '286.2983' -TEST_SWORD_VERSION_VALUE = '15' -TEST_UNITS_FIELD = 'p_lat_units' -TEST_UNITS = 'degrees_north' +TEST_REACH_TIME_VALUE = '2023-06-10T19:33:37Z' +TEST_REACH_WSE_VALUE = '286.2983' +TEST_REACH_SWORD_VERSION_VALUE = '15' +TEST_REACH_UNITS_FIELD = 'p_lat_units' +TEST_REACH_UNITS = 'degrees_north' + +# -------- Prior Lakes +TEST_PLAKE_SHAPEFILE_PATH = os.path.abspath(os.path.join( + os.path.dirname(os.path.realpath(__file__)), + '../..', 'tests', 'data', + 'SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.zip' # noqa E501 +)) + +TEST_PLAKE_FILENAME = ( + "SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.zip") + +TEST_PLAKE_ITEM_DICT = { + "lake_id": "9130047472", + "time": "774184696.644", + "time_str": "2024-07-13T11:18:16Z", + "wse": "307.482", + "cycle_id": "018", + "PLD_version": "105", + "area_total_units": "km^2" +} + +TEST_PLAKE_GEOM_DICT = { + "lake_id": "9130047472", + "geometry": ( + (-50.14521191, 69.30222612), (-50.14550301, 69.30215475), + (-50.14612341, 69.30224091), (-50.14641609, 69.30216916), + (-50.14674362, 69.30232713), (-50.14677875, 69.30255678), + (-50.1471051, 69.30271506,), (-50.14713811, 69.30294524), + (-50.1474643, 69.30310355), (-50.14808323, 69.30319009), + (-50.14837586, 69.30311835), (-50.1489949, 69.30320486), + (-50.14932109, 69.30336317), (-50.14993974, 69.30344978), + (-50.14990648, 69.30321964), (-50.14987337, 69.30298947), + (-50.15016696, 69.30291749), (-50.15046021, 69.30284559), + (-50.15075352, 69.30277367), (-50.15137324, 69.30286), + (-50.15166675, 69.30278803), (-50.15228657, 69.30287434), + (-50.15261279, 69.30303264), (-50.15293903, 69.30319094), + (-50.15326526, 69.30334923), (-50.15359148, 69.30350753), + (-50.15362358, 69.30373794), (-50.15365621, 69.30396824), + (-50.15398295, 69.30412641), (-50.15460271, 69.30421273), + (-50.15492895, 69.30437102), (-50.15496171, 69.30460129), + (-50.15558151, 69.3046876), (-50.15590777, 69.3048459), + (-50.15623406, 69.30500419), (-50.156559, 69.30516281), + (-50.15626538, 69.30523481), (-50.15597192, 69.30530677), + (-50.15567856, 69.30537871), (-50.15538527, 69.30545062), + (-50.15541698, 69.30568115), (-50.15512387, 69.30575302), + (-50.15483084, 69.30582487), (-50.15421294, 69.30573808), + (-50.15392004, 69.3058099), (-50.15359524, 69.30565124), + (-50.15297631, 69.3055647), (-50.15268369, 69.30563645), + (-50.15235735, 69.30547818), (-50.15203056, 69.30532002), + (-50.15141283, 69.30523318), (-50.15112013, 69.30530495), + (-50.1505015, 69.30521834), (-50.15017531, 69.30506003), + (-50.15046779, 69.30498832), (-50.15043315, 69.30475852), + (-50.1501077, 69.30460003), (-50.15040003, 69.30452836), + (-50.15036646, 69.3042983), (-50.15065919, 69.30422653), + (-50.15095197, 69.30415475), (-50.15091834, 69.3039247), + (-50.15059214, 69.3037664), (-50.14997352, 69.30367978), + (-50.14968083, 69.30375154), (-50.14906209, 69.30366496), + (-50.14844328, 69.30357838), (-50.14815009, 69.30365026), + (-50.14785768, 69.30372195), (-50.14753153, 69.30356363), + (-50.14691338, 69.30347689), (-50.14629497, 69.30339021), + (-50.14567671, 69.3033035), (-50.14535057, 69.30314519), + (-50.14564277, 69.30307356), (-50.14626111, 69.30316024), + (-50.14655355, 69.30308855), (-50.14651952, 69.30285862), + (-50.14648605, 69.30262853), (-50.14615845, 69.30247059), + (-50.14553817, 69.30238438), (-50.14521191, 69.30222612)) +} + + +TEST_PLAKE_ITEM_NO_GEO_DICT = { + "lake_id": "9120145452" +} + +DB_TEST_PLAKE_TABLE_NAME = "hydrocron-swot-testlake-table" +API_TEST_PLAKE_TABLE_NAME = "hydrocron-swot-prior-lake-table" +TEST_PLAKE_PARTITION_KEY_NAME = 'lake_id' +TEST_PLAKE_SORT_KEY_NAME = 'range_start_time' +TEST_PLAKE_ID_VALUE = '9130047472' +TEST_PLAKE_TIME_VALUE = '2024-07-13T11:18:16Z' +TEST_PLAKE_WSE_VALUE = '307.482' +TEST_PLAKE_PLD_VERSION_VALUE = '105' +TEST_PLAKE_UNITS_FIELD = 'area_total' +TEST_PLAKE_UNITS = 'km^2' # ------------ # # PROD CONSTANTS # # ------------ # SWOT_REACH_TABLE_NAME = "hydrocron-swot-reach-table" SWOT_NODE_TABLE_NAME = "hydrocron-swot-node-table" +SWOT_PRIOR_LAKE_TABLE_NAME = "hydrocron-swot-prior-lake-table" +SWOT_REACH_TRACK_INGEST_TABLE_NAME = "hydrocron-swot-reach-track-ingest-table" +SWOT_NODE_TRACK_INGEST_TABLE_NAME = "hydrocron-swot-node-track-ingest-table" +SWOT_PRIOR_LAKE_TRACK_INGEST_TABLE_NAME = "hydrocron-swot-prior-lake-track-ingest-table" SWOT_REACH_COLLECTION_NAME = "SWOT_L2_HR_RiverSP_2.0" SWOT_NODE_COLLECTION_NAME = "SWOT_L2_HR_RiverSP_2.0" +SWOT_PRIOR_LAKE_COLLECTION_NAME = "SWOT_L2_HR_LakeSP_2.0" SWOT_REACH_COLLECTION_VERSION = SWOT_REACH_COLLECTION_NAME[19:] SWOT_NODE_COLLECTION_VERSION = SWOT_NODE_COLLECTION_NAME[19:] +SWOT_PRIOR_LAKE_COLLECTION_VERSION = SWOT_PRIOR_LAKE_COLLECTION_NAME[18:] +SWOT_PRIOR_LAKE_FILL_GEOMETRY_COORDS = ( + (-31.286028054129474, -27.207309600925463), + (-22.19117572552625, -28.812946226841383), + (-15.725605024311761, -29.21206933352415), + (-9.73430598260046, -29.228374663756604), + (-9.643271006951636, -27.233170541912884), + (-13.841716582541977, -27.37318973052451), + (-13.640561876091681, -21.64742387547294), + (-15.517427505373604, -21.61501976602659), + (-15.687806151090996, -28.090307824912784), + (-20.53678800850099, -28.156869804349213), + (-20.271711250148456, -24.421282696689033), + (-16.826147231682597, -24.69813060607345), + (-16.457685427420472, -21.588744491452957), + (-21.46664265437724, -21.33573507315593), + (-21.962226106320827, -27.948720914494196), + (-23.98629064034978, -27.80816909915125), + (-22.949633572250406, -20.8450893435173), + (-25.16962667009571, -20.772294910422403), + (-25.61120124377038, -25.40631583584434), + (-31.032731158967948, -24.810351227750644), + (-31.286028054129474, -27.207309600925463)) SWOT_REACH_PARTITION_KEY = "reach_id" SWOT_NODE_PARTITION_KEY = "node_id" +SWOT_PRIOR_LAKE_PARTITION_KEY = "lake_id" SWOT_REACH_SORT_KEY = "range_start_time" SWOT_NODE_SORT_KEY = "range_start_time" +SWOT_PRIOR_LAKE_SORT_KEY = "range_start_time" FIELDNAME_REACH_ID = 'reach_id' +FIELDNAME_LAKE_ID = 'lake_id' FIELDNAME_TIME = 'time' FIELDNAME_TIME_STR = 'time_str' FIELDNAME_WSE = 'wse' @@ -62,6 +177,7 @@ FIELDNAME_P_LON = 'p_lon' FIELDNAME_P_LAT = 'p_lat' FIELDNAME_SWORD_VERSION = 'sword_version' +FIELDNAME_PLD_VERSION = 'PLD_version' REACH_DATA_COLUMNS = [ 'wse', 'wse_u', 'wse_r_u', 'wse_c', 'wse_c_u', @@ -104,6 +220,16 @@ 'dry_trop_c', 'wet_trop_c', 'iono_c', 'xovr_cal_c' ] +PRIOR_LAKE_DATA_COLUMNS = [ + 'wse', 'wse_u', 'wse_r_u', 'wse_std', + 'area_total', 'area_tot_u', 'area_detct', 'area_det_u', + 'layovr_val', 'xtrk_dist', 'ds1_l', 'ds1_l_u', 'ds1_q', 'ds1_q_u', + 'ds2_l', 'ds2_l_u', 'ds2_q', 'ds2_q_u', + 'quality_f', 'dark_frac', 'ice_clim_f', 'ice_dyn_f', 'partial_f', + 'xovr_cal_q', 'geoid_hght', 'solid_tide', 'load_tidef', 'load_tideg', 'pole_tide', + 'dry_trop_c', 'wet_trop_c', 'iono_c', 'xovr_cal_c' +] + REACH_ALL_COLUMNS = [ 'reach_id', 'time', 'time_tai', 'time_str', 'p_lat', 'p_lon', 'river_name', 'wse', 'wse_u', 'wse_r_u', 'wse_c', 'wse_c_u', @@ -157,3 +283,17 @@ 'cycle_id', 'pass_id', 'continent_id', 'range_start_time', 'range_end_time', 'crid', 'geometry', 'sword_version', 'collection_shortname', 'crid' ] + +PRIOR_LAKE_ALL_COLUMNS = [ + 'lake_id', 'reach_id', 'obs_id', 'overlap', 'n_overlap', + 'time', 'time_tai', 'time_str', 'wse', 'wse_u', 'wse_r_u', 'wse_std', + 'area_total', 'area_tot_u', 'area_detct', 'area_det_u', + 'layovr_val', 'xtrk_dist', 'ds1_l', 'ds1_l_u', 'ds1_q', 'ds1_q_u', + 'ds2_l', 'ds2_l_u', 'ds2_q', 'ds2_q_u', + 'quality_f', 'dark_frac', 'ice_clim_f', 'ice_dyn_f', 'partial_f', + 'xovr_cal_q', 'geoid_hght', 'solid_tide', 'load_tidef', 'load_tideg', 'pole_tide', + 'dry_trop_c', 'wet_trop_c', 'iono_c', 'xovr_cal_c', 'lake_name', 'p_res_id', + 'p_lon', 'p_lat', 'p_ref_wse', 'p_ref_area', 'p_date_t0', 'p_ds_t0', 'p_storage', + 'cycle_id', 'pass_id', 'continent_id', 'range_start_time', 'range_end_time', + 'crid', 'geometry', 'PLD_version', 'collection_shortname', 'crid' +] diff --git a/poetry.lock b/poetry.lock index 3a1e1786..2f2557ba 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "accept-types" @@ -31,111 +31,138 @@ tests = ["hypothesis", "pytest"] [[package]] name = "aiobotocore" -version = "2.13.0" +version = "2.15.0" description = "Async client for aws services using botocore and aiohttp" optional = false python-versions = ">=3.8" files = [ - {file = "aiobotocore-2.13.0-py3-none-any.whl", hash = "sha256:f812afc678d71b0038fd1ce712ff111ab7f47bab81ce5b4c7d222d4b83bc0cb2"}, - {file = "aiobotocore-2.13.0.tar.gz", hash = "sha256:4badf5cab6ad400216319d14278e2c99ad9b708e28a0f231605a412e632de401"}, + {file = "aiobotocore-2.15.0-py3-none-any.whl", hash = "sha256:6d0b4a51d70bc33b1b4eba411076b0cc979aecbdad8e084bab202202423c0725"}, + {file = "aiobotocore-2.15.0.tar.gz", hash = "sha256:988eef33fd9dd4b070959cfec922278e84166950695b2160bd581623cb6a420c"}, ] [package.dependencies] aiohttp = ">=3.9.2,<4.0.0" aioitertools = ">=0.5.1,<1.0.0" -botocore = ">=1.34.70,<1.34.107" +botocore = ">=1.35.16,<1.35.17" wrapt = ">=1.10.10,<2.0.0" [package.extras] -awscli = ["awscli (>=1.32.70,<1.32.107)"] -boto3 = ["boto3 (>=1.34.70,<1.34.107)"] +awscli = ["awscli (>=1.34.16,<1.34.17)"] +boto3 = ["boto3 (>=1.35.16,<1.35.17)"] + +[[package]] +name = "aiohappyeyeballs" +version = "2.4.0" +description = "Happy Eyeballs for asyncio" +optional = false +python-versions = ">=3.8" +files = [ + {file = "aiohappyeyeballs-2.4.0-py3-none-any.whl", hash = "sha256:7ce92076e249169a13c2f49320d1967425eaf1f407522d707d59cac7628d62bd"}, + {file = "aiohappyeyeballs-2.4.0.tar.gz", hash = "sha256:55a1714f084e63d49639800f95716da97a1f173d46a16dfcfda0016abb93b6b2"}, +] [[package]] name = "aiohttp" -version = "3.9.5" +version = "3.10.5" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.8" files = [ - {file = "aiohttp-3.9.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fcde4c397f673fdec23e6b05ebf8d4751314fa7c24f93334bf1f1364c1c69ac7"}, - {file = "aiohttp-3.9.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d6b3f1fabe465e819aed2c421a6743d8debbde79b6a8600739300630a01bf2c"}, - {file = "aiohttp-3.9.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ae79c1bc12c34082d92bf9422764f799aee4746fd7a392db46b7fd357d4a17a"}, - {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d3ebb9e1316ec74277d19c5f482f98cc65a73ccd5430540d6d11682cd857430"}, - {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84dabd95154f43a2ea80deffec9cb44d2e301e38a0c9d331cc4aa0166fe28ae3"}, - {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8a02fbeca6f63cb1f0475c799679057fc9268b77075ab7cf3f1c600e81dd46b"}, - {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c26959ca7b75ff768e2776d8055bf9582a6267e24556bb7f7bd29e677932be72"}, - {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:714d4e5231fed4ba2762ed489b4aec07b2b9953cf4ee31e9871caac895a839c0"}, - {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7a6a8354f1b62e15d48e04350f13e726fa08b62c3d7b8401c0a1314f02e3558"}, - {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c413016880e03e69d166efb5a1a95d40f83d5a3a648d16486592c49ffb76d0db"}, - {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ff84aeb864e0fac81f676be9f4685f0527b660f1efdc40dcede3c251ef1e867f"}, - {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ad7f2919d7dac062f24d6f5fe95d401597fbb015a25771f85e692d043c9d7832"}, - {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:702e2c7c187c1a498a4e2b03155d52658fdd6fda882d3d7fbb891a5cf108bb10"}, - {file = "aiohttp-3.9.5-cp310-cp310-win32.whl", hash = "sha256:67c3119f5ddc7261d47163ed86d760ddf0e625cd6246b4ed852e82159617b5fb"}, - {file = "aiohttp-3.9.5-cp310-cp310-win_amd64.whl", hash = "sha256:471f0ef53ccedec9995287f02caf0c068732f026455f07db3f01a46e49d76bbb"}, - {file = "aiohttp-3.9.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0ae53e33ee7476dd3d1132f932eeb39bf6125083820049d06edcdca4381f342"}, - {file = "aiohttp-3.9.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c088c4d70d21f8ca5c0b8b5403fe84a7bc8e024161febdd4ef04575ef35d474d"}, - {file = "aiohttp-3.9.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:639d0042b7670222f33b0028de6b4e2fad6451462ce7df2af8aee37dcac55424"}, - {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f26383adb94da5e7fb388d441bf09c61e5e35f455a3217bfd790c6b6bc64b2ee"}, - {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66331d00fb28dc90aa606d9a54304af76b335ae204d1836f65797d6fe27f1ca2"}, - {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ff550491f5492ab5ed3533e76b8567f4b37bd2995e780a1f46bca2024223233"}, - {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f22eb3a6c1080d862befa0a89c380b4dafce29dc6cd56083f630073d102eb595"}, - {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a81b1143d42b66ffc40a441379387076243ef7b51019204fd3ec36b9f69e77d6"}, - {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f64fd07515dad67f24b6ea4a66ae2876c01031de91c93075b8093f07c0a2d93d"}, - {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:93e22add827447d2e26d67c9ac0161756007f152fdc5210277d00a85f6c92323"}, - {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:55b39c8684a46e56ef8c8d24faf02de4a2b2ac60d26cee93bc595651ff545de9"}, - {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4715a9b778f4293b9f8ae7a0a7cef9829f02ff8d6277a39d7f40565c737d3771"}, - {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:afc52b8d969eff14e069a710057d15ab9ac17cd4b6753042c407dcea0e40bf75"}, - {file = "aiohttp-3.9.5-cp311-cp311-win32.whl", hash = "sha256:b3df71da99c98534be076196791adca8819761f0bf6e08e07fd7da25127150d6"}, - {file = "aiohttp-3.9.5-cp311-cp311-win_amd64.whl", hash = "sha256:88e311d98cc0bf45b62fc46c66753a83445f5ab20038bcc1b8a1cc05666f428a"}, - {file = "aiohttp-3.9.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c7a4b7a6cf5b6eb11e109a9755fd4fda7d57395f8c575e166d363b9fc3ec4678"}, - {file = "aiohttp-3.9.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0a158704edf0abcac8ac371fbb54044f3270bdbc93e254a82b6c82be1ef08f3c"}, - {file = "aiohttp-3.9.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d153f652a687a8e95ad367a86a61e8d53d528b0530ef382ec5aaf533140ed00f"}, - {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82a6a97d9771cb48ae16979c3a3a9a18b600a8505b1115cfe354dfb2054468b4"}, - {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60cdbd56f4cad9f69c35eaac0fbbdf1f77b0ff9456cebd4902f3dd1cf096464c"}, - {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8676e8fd73141ded15ea586de0b7cda1542960a7b9ad89b2b06428e97125d4fa"}, - {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da00da442a0e31f1c69d26d224e1efd3a1ca5bcbf210978a2ca7426dfcae9f58"}, - {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18f634d540dd099c262e9f887c8bbacc959847cfe5da7a0e2e1cf3f14dbf2daf"}, - {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:320e8618eda64e19d11bdb3bd04ccc0a816c17eaecb7e4945d01deee2a22f95f"}, - {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:2faa61a904b83142747fc6a6d7ad8fccff898c849123030f8e75d5d967fd4a81"}, - {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:8c64a6dc3fe5db7b1b4d2b5cb84c4f677768bdc340611eca673afb7cf416ef5a"}, - {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:393c7aba2b55559ef7ab791c94b44f7482a07bf7640d17b341b79081f5e5cd1a"}, - {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c671dc117c2c21a1ca10c116cfcd6e3e44da7fcde37bf83b2be485ab377b25da"}, - {file = "aiohttp-3.9.5-cp312-cp312-win32.whl", hash = "sha256:5a7ee16aab26e76add4afc45e8f8206c95d1d75540f1039b84a03c3b3800dd59"}, - {file = "aiohttp-3.9.5-cp312-cp312-win_amd64.whl", hash = "sha256:5ca51eadbd67045396bc92a4345d1790b7301c14d1848feaac1d6a6c9289e888"}, - {file = "aiohttp-3.9.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:694d828b5c41255e54bc2dddb51a9f5150b4eefa9886e38b52605a05d96566e8"}, - {file = "aiohttp-3.9.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0605cc2c0088fcaae79f01c913a38611ad09ba68ff482402d3410bf59039bfb8"}, - {file = "aiohttp-3.9.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4558e5012ee03d2638c681e156461d37b7a113fe13970d438d95d10173d25f78"}, - {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dbc053ac75ccc63dc3a3cc547b98c7258ec35a215a92bd9f983e0aac95d3d5b"}, - {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4109adee842b90671f1b689901b948f347325045c15f46b39797ae1bf17019de"}, - {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6ea1a5b409a85477fd8e5ee6ad8f0e40bf2844c270955e09360418cfd09abac"}, - {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3c2890ca8c59ee683fd09adf32321a40fe1cf164e3387799efb2acebf090c11"}, - {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3916c8692dbd9d55c523374a3b8213e628424d19116ac4308e434dbf6d95bbdd"}, - {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8d1964eb7617907c792ca00b341b5ec3e01ae8c280825deadbbd678447b127e1"}, - {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d5ab8e1f6bee051a4bf6195e38a5c13e5e161cb7bad83d8854524798bd9fcd6e"}, - {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:52c27110f3862a1afbcb2af4281fc9fdc40327fa286c4625dfee247c3ba90156"}, - {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:7f64cbd44443e80094309875d4f9c71d0401e966d191c3d469cde4642bc2e031"}, - {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8b4f72fbb66279624bfe83fd5eb6aea0022dad8eec62b71e7bf63ee1caadeafe"}, - {file = "aiohttp-3.9.5-cp38-cp38-win32.whl", hash = "sha256:6380c039ec52866c06d69b5c7aad5478b24ed11696f0e72f6b807cfb261453da"}, - {file = "aiohttp-3.9.5-cp38-cp38-win_amd64.whl", hash = "sha256:da22dab31d7180f8c3ac7c7635f3bcd53808f374f6aa333fe0b0b9e14b01f91a"}, - {file = "aiohttp-3.9.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1732102949ff6087589408d76cd6dea656b93c896b011ecafff418c9661dc4ed"}, - {file = "aiohttp-3.9.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c6021d296318cb6f9414b48e6a439a7f5d1f665464da507e8ff640848ee2a58a"}, - {file = "aiohttp-3.9.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:239f975589a944eeb1bad26b8b140a59a3a320067fb3cd10b75c3092405a1372"}, - {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b7b30258348082826d274504fbc7c849959f1989d86c29bc355107accec6cfb"}, - {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd2adf5c87ff6d8b277814a28a535b59e20bfea40a101db6b3bdca7e9926bc24"}, - {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9a3d838441bebcf5cf442700e3963f58b5c33f015341f9ea86dcd7d503c07e2"}, - {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e3a1ae66e3d0c17cf65c08968a5ee3180c5a95920ec2731f53343fac9bad106"}, - {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c69e77370cce2d6df5d12b4e12bdcca60c47ba13d1cbbc8645dd005a20b738b"}, - {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf56238f4bbf49dab8c2dc2e6b1b68502b1e88d335bea59b3f5b9f4c001475"}, - {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d1469f228cd9ffddd396d9948b8c9cd8022b6d1bf1e40c6f25b0fb90b4f893ed"}, - {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:45731330e754f5811c314901cebdf19dd776a44b31927fa4b4dbecab9e457b0c"}, - {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:3fcb4046d2904378e3aeea1df51f697b0467f2aac55d232c87ba162709478c46"}, - {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8cf142aa6c1a751fcb364158fd710b8a9be874b81889c2bd13aa8893197455e2"}, - {file = "aiohttp-3.9.5-cp39-cp39-win32.whl", hash = "sha256:7b179eea70833c8dee51ec42f3b4097bd6370892fa93f510f76762105568cf09"}, - {file = "aiohttp-3.9.5-cp39-cp39-win_amd64.whl", hash = "sha256:38d80498e2e169bc61418ff36170e0aad0cd268da8b38a17c4cf29d254a8b3f1"}, - {file = "aiohttp-3.9.5.tar.gz", hash = "sha256:edea7d15772ceeb29db4aff55e482d4bcfb6ae160ce144f2682de02f6d693551"}, + {file = "aiohttp-3.10.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:18a01eba2574fb9edd5f6e5fb25f66e6ce061da5dab5db75e13fe1558142e0a3"}, + {file = "aiohttp-3.10.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:94fac7c6e77ccb1ca91e9eb4cb0ac0270b9fb9b289738654120ba8cebb1189c6"}, + {file = "aiohttp-3.10.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2f1f1c75c395991ce9c94d3e4aa96e5c59c8356a15b1c9231e783865e2772699"}, + {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f7acae3cf1a2a2361ec4c8e787eaaa86a94171d2417aae53c0cca6ca3118ff6"}, + {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:94c4381ffba9cc508b37d2e536b418d5ea9cfdc2848b9a7fea6aebad4ec6aac1"}, + {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c31ad0c0c507894e3eaa843415841995bf8de4d6b2d24c6e33099f4bc9fc0d4f"}, + {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0912b8a8fadeb32ff67a3ed44249448c20148397c1ed905d5dac185b4ca547bb"}, + {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d93400c18596b7dc4794d48a63fb361b01a0d8eb39f28800dc900c8fbdaca91"}, + {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d00f3c5e0d764a5c9aa5a62d99728c56d455310bcc288a79cab10157b3af426f"}, + {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d742c36ed44f2798c8d3f4bc511f479b9ceef2b93f348671184139e7d708042c"}, + {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:814375093edae5f1cb31e3407997cf3eacefb9010f96df10d64829362ae2df69"}, + {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8224f98be68a84b19f48e0bdc14224b5a71339aff3a27df69989fa47d01296f3"}, + {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d9a487ef090aea982d748b1b0d74fe7c3950b109df967630a20584f9a99c0683"}, + {file = "aiohttp-3.10.5-cp310-cp310-win32.whl", hash = "sha256:d9ef084e3dc690ad50137cc05831c52b6ca428096e6deb3c43e95827f531d5ef"}, + {file = "aiohttp-3.10.5-cp310-cp310-win_amd64.whl", hash = "sha256:66bf9234e08fe561dccd62083bf67400bdbf1c67ba9efdc3dac03650e97c6088"}, + {file = "aiohttp-3.10.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8c6a4e5e40156d72a40241a25cc226051c0a8d816610097a8e8f517aeacd59a2"}, + {file = "aiohttp-3.10.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c634a3207a5445be65536d38c13791904fda0748b9eabf908d3fe86a52941cf"}, + {file = "aiohttp-3.10.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4aff049b5e629ef9b3e9e617fa6e2dfeda1bf87e01bcfecaf3949af9e210105e"}, + {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1942244f00baaacaa8155eca94dbd9e8cc7017deb69b75ef67c78e89fdad3c77"}, + {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e04a1f2a65ad2f93aa20f9ff9f1b672bf912413e5547f60749fa2ef8a644e061"}, + {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7f2bfc0032a00405d4af2ba27f3c429e851d04fad1e5ceee4080a1c570476697"}, + {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:424ae21498790e12eb759040bbb504e5e280cab64693d14775c54269fd1d2bb7"}, + {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:975218eee0e6d24eb336d0328c768ebc5d617609affaca5dbbd6dd1984f16ed0"}, + {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4120d7fefa1e2d8fb6f650b11489710091788de554e2b6f8347c7a20ceb003f5"}, + {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b90078989ef3fc45cf9221d3859acd1108af7560c52397ff4ace8ad7052a132e"}, + {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ba5a8b74c2a8af7d862399cdedce1533642fa727def0b8c3e3e02fcb52dca1b1"}, + {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:02594361128f780eecc2a29939d9dfc870e17b45178a867bf61a11b2a4367277"}, + {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8fb4fc029e135859f533025bc82047334e24b0d489e75513144f25408ecaf058"}, + {file = "aiohttp-3.10.5-cp311-cp311-win32.whl", hash = "sha256:e1ca1ef5ba129718a8fc827b0867f6aa4e893c56eb00003b7367f8a733a9b072"}, + {file = "aiohttp-3.10.5-cp311-cp311-win_amd64.whl", hash = "sha256:349ef8a73a7c5665cca65c88ab24abe75447e28aa3bc4c93ea5093474dfdf0ff"}, + {file = "aiohttp-3.10.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:305be5ff2081fa1d283a76113b8df7a14c10d75602a38d9f012935df20731487"}, + {file = "aiohttp-3.10.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3a1c32a19ee6bbde02f1cb189e13a71b321256cc1d431196a9f824050b160d5a"}, + {file = "aiohttp-3.10.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:61645818edd40cc6f455b851277a21bf420ce347baa0b86eaa41d51ef58ba23d"}, + {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c225286f2b13bab5987425558baa5cbdb2bc925b2998038fa028245ef421e75"}, + {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ba01ebc6175e1e6b7275c907a3a36be48a2d487549b656aa90c8a910d9f3178"}, + {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8eaf44ccbc4e35762683078b72bf293f476561d8b68ec8a64f98cf32811c323e"}, + {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1c43eb1ab7cbf411b8e387dc169acb31f0ca0d8c09ba63f9eac67829585b44f"}, + {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de7a5299827253023c55ea549444e058c0eb496931fa05d693b95140a947cb73"}, + {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4790f0e15f00058f7599dab2b206d3049d7ac464dc2e5eae0e93fa18aee9e7bf"}, + {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:44b324a6b8376a23e6ba25d368726ee3bc281e6ab306db80b5819999c737d820"}, + {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0d277cfb304118079e7044aad0b76685d30ecb86f83a0711fc5fb257ffe832ca"}, + {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:54d9ddea424cd19d3ff6128601a4a4d23d54a421f9b4c0fff740505813739a91"}, + {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4f1c9866ccf48a6df2b06823e6ae80573529f2af3a0992ec4fe75b1a510df8a6"}, + {file = "aiohttp-3.10.5-cp312-cp312-win32.whl", hash = "sha256:dc4826823121783dccc0871e3f405417ac116055bf184ac04c36f98b75aacd12"}, + {file = "aiohttp-3.10.5-cp312-cp312-win_amd64.whl", hash = "sha256:22c0a23a3b3138a6bf76fc553789cb1a703836da86b0f306b6f0dc1617398abc"}, + {file = "aiohttp-3.10.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7f6b639c36734eaa80a6c152a238242bedcee9b953f23bb887e9102976343092"}, + {file = "aiohttp-3.10.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f29930bc2921cef955ba39a3ff87d2c4398a0394ae217f41cb02d5c26c8b1b77"}, + {file = "aiohttp-3.10.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f489a2c9e6455d87eabf907ac0b7d230a9786be43fbe884ad184ddf9e9c1e385"}, + {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:123dd5b16b75b2962d0fff566effb7a065e33cd4538c1692fb31c3bda2bfb972"}, + {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b98e698dc34966e5976e10bbca6d26d6724e6bdea853c7c10162a3235aba6e16"}, + {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3b9162bab7e42f21243effc822652dc5bb5e8ff42a4eb62fe7782bcbcdfacf6"}, + {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1923a5c44061bffd5eebeef58cecf68096e35003907d8201a4d0d6f6e387ccaa"}, + {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d55f011da0a843c3d3df2c2cf4e537b8070a419f891c930245f05d329c4b0689"}, + {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:afe16a84498441d05e9189a15900640a2d2b5e76cf4efe8cbb088ab4f112ee57"}, + {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f8112fb501b1e0567a1251a2fd0747baae60a4ab325a871e975b7bb67e59221f"}, + {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1e72589da4c90337837fdfe2026ae1952c0f4a6e793adbbfbdd40efed7c63599"}, + {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:4d46c7b4173415d8e583045fbc4daa48b40e31b19ce595b8d92cf639396c15d5"}, + {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:33e6bc4bab477c772a541f76cd91e11ccb6d2efa2b8d7d7883591dfb523e5987"}, + {file = "aiohttp-3.10.5-cp313-cp313-win32.whl", hash = "sha256:c58c6837a2c2a7cf3133983e64173aec11f9c2cd8e87ec2fdc16ce727bcf1a04"}, + {file = "aiohttp-3.10.5-cp313-cp313-win_amd64.whl", hash = "sha256:38172a70005252b6893088c0f5e8a47d173df7cc2b2bd88650957eb84fcf5022"}, + {file = "aiohttp-3.10.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f6f18898ace4bcd2d41a122916475344a87f1dfdec626ecde9ee802a711bc569"}, + {file = "aiohttp-3.10.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5ede29d91a40ba22ac1b922ef510aab871652f6c88ef60b9dcdf773c6d32ad7a"}, + {file = "aiohttp-3.10.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:673f988370f5954df96cc31fd99c7312a3af0a97f09e407399f61583f30da9bc"}, + {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58718e181c56a3c02d25b09d4115eb02aafe1a732ce5714ab70326d9776457c3"}, + {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b38b1570242fbab8d86a84128fb5b5234a2f70c2e32f3070143a6d94bc854cf"}, + {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:074d1bff0163e107e97bd48cad9f928fa5a3eb4b9d33366137ffce08a63e37fe"}, + {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd31f176429cecbc1ba499d4aba31aaccfea488f418d60376b911269d3b883c5"}, + {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7384d0b87d4635ec38db9263e6a3f1eb609e2e06087f0aa7f63b76833737b471"}, + {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8989f46f3d7ef79585e98fa991e6ded55d2f48ae56d2c9fa5e491a6e4effb589"}, + {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:c83f7a107abb89a227d6c454c613e7606c12a42b9a4ca9c5d7dad25d47c776ae"}, + {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:cde98f323d6bf161041e7627a5fd763f9fd829bcfcd089804a5fdce7bb6e1b7d"}, + {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:676f94c5480d8eefd97c0c7e3953315e4d8c2b71f3b49539beb2aa676c58272f"}, + {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:2d21ac12dc943c68135ff858c3a989f2194a709e6e10b4c8977d7fcd67dfd511"}, + {file = "aiohttp-3.10.5-cp38-cp38-win32.whl", hash = "sha256:17e997105bd1a260850272bfb50e2a328e029c941c2708170d9d978d5a30ad9a"}, + {file = "aiohttp-3.10.5-cp38-cp38-win_amd64.whl", hash = "sha256:1c19de68896747a2aa6257ae4cf6ef59d73917a36a35ee9d0a6f48cff0f94db8"}, + {file = "aiohttp-3.10.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7e2fe37ac654032db1f3499fe56e77190282534810e2a8e833141a021faaab0e"}, + {file = "aiohttp-3.10.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f5bf3ead3cb66ab990ee2561373b009db5bc0e857549b6c9ba84b20bc462e172"}, + {file = "aiohttp-3.10.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1b2c16a919d936ca87a3c5f0e43af12a89a3ce7ccbce59a2d6784caba945b68b"}, + {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad146dae5977c4dd435eb31373b3fe9b0b1bf26858c6fc452bf6af394067e10b"}, + {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c5c6fa16412b35999320f5c9690c0f554392dc222c04e559217e0f9ae244b92"}, + {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:95c4dc6f61d610bc0ee1edc6f29d993f10febfe5b76bb470b486d90bbece6b22"}, + {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da452c2c322e9ce0cfef392e469a26d63d42860f829026a63374fde6b5c5876f"}, + {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:898715cf566ec2869d5cb4d5fb4be408964704c46c96b4be267442d265390f32"}, + {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:391cc3a9c1527e424c6865e087897e766a917f15dddb360174a70467572ac6ce"}, + {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:380f926b51b92d02a34119d072f178d80bbda334d1a7e10fa22d467a66e494db"}, + {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce91db90dbf37bb6fa0997f26574107e1b9d5ff939315247b7e615baa8ec313b"}, + {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9093a81e18c45227eebe4c16124ebf3e0d893830c6aca7cc310bfca8fe59d857"}, + {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ee40b40aa753d844162dcc80d0fe256b87cba48ca0054f64e68000453caead11"}, + {file = "aiohttp-3.10.5-cp39-cp39-win32.whl", hash = "sha256:03f2645adbe17f274444953bdea69f8327e9d278d961d85657cb0d06864814c1"}, + {file = "aiohttp-3.10.5-cp39-cp39-win_amd64.whl", hash = "sha256:d17920f18e6ee090bdd3d0bfffd769d9f2cb4c8ffde3eb203777a3895c128862"}, + {file = "aiohttp-3.10.5.tar.gz", hash = "sha256:f071854b47d39591ce9a17981c46790acb30518e2f83dfca8db2dfa091178691"}, ] [package.dependencies] +aiohappyeyeballs = ">=2.3.0" aiosignal = ">=1.1.2" async-timeout = {version = ">=4.0,<5.0", markers = "python_version < \"3.11\""} attrs = ">=17.3.0" @@ -144,19 +171,23 @@ multidict = ">=4.5,<7.0" yarl = ">=1.0,<2.0" [package.extras] -speedups = ["Brotli", "aiodns", "brotlicffi"] +speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] [[package]] name = "aioitertools" -version = "0.11.0" +version = "0.12.0" description = "itertools and builtins for AsyncIO and mixed iterables" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "aioitertools-0.11.0-py3-none-any.whl", hash = "sha256:04b95e3dab25b449def24d7df809411c10e62aab0cbe31a50ca4e68748c43394"}, - {file = "aioitertools-0.11.0.tar.gz", hash = "sha256:42c68b8dd3a69c2bf7f2233bf7df4bb58b557bca5252ac02ed5187bbc67d6831"}, + {file = "aioitertools-0.12.0-py3-none-any.whl", hash = "sha256:fc1f5fac3d737354de8831cbba3eb04f79dd649d8f3afb4c5b114925e662a796"}, + {file = "aioitertools-0.12.0.tar.gz", hash = "sha256:c2a9055b4fbb7705f561b9d86053e8af5d10cc845d22c32008c43490b2d8dd6b"}, ] +[package.extras] +dev = ["attribution (==1.8.0)", "black (==24.8.0)", "build (>=1.2)", "coverage (==7.6.1)", "flake8 (==7.1.1)", "flit (==3.9.0)", "mypy (==1.11.2)", "ufmt (==2.7.1)", "usort (==1.0.8.post1)"] +docs = ["sphinx (==8.0.2)", "sphinx-mdinclude (==0.6.2)"] + [[package]] name = "aiosignal" version = "1.3.1" @@ -195,22 +226,17 @@ files = [ [[package]] name = "astroid" -version = "2.15.8" +version = "3.2.4" description = "An abstract syntax tree for Python with inference support." optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.8.0" files = [ - {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"}, - {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"}, + {file = "astroid-3.2.4-py3-none-any.whl", hash = "sha256:413658a61eeca6202a59231abb473f932038fbcbf1666587f66d482083413a25"}, + {file = "astroid-3.2.4.tar.gz", hash = "sha256:0e14202810b30da1b735827f78f5157be2bbd4a7a59b7707ca0bfc2fb4c0063a"}, ] [package.dependencies] -lazy-object-proxy = ">=1.4.0" typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} -wrapt = [ - {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, - {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, -] [[package]] name = "asttokens" @@ -243,32 +269,32 @@ files = [ [[package]] name = "attrs" -version = "23.2.0" +version = "24.2.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, - {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, + {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, + {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, ] [package.extras] -cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[tests]", "pre-commit"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] -tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] -tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] name = "babel" -version = "2.15.0" +version = "2.16.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" files = [ - {file = "Babel-2.15.0-py3-none-any.whl", hash = "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb"}, - {file = "babel-2.15.0.tar.gz", hash = "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"}, + {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, + {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, ] [package.extras] @@ -297,17 +323,17 @@ lxml = ["lxml"] [[package]] name = "boto3" -version = "1.34.106" +version = "1.35.16" description = "The AWS SDK for Python" optional = false python-versions = ">=3.8" files = [ - {file = "boto3-1.34.106-py3-none-any.whl", hash = "sha256:d3be4e1dd5d546a001cd4da805816934cbde9d395316546e9411fec341ade5cf"}, - {file = "boto3-1.34.106.tar.gz", hash = "sha256:6165b8cf1c7e625628ab28b32f9027064c8f5e5fca1c38d7fc228cd22069a19f"}, + {file = "boto3-1.35.16-py3-none-any.whl", hash = "sha256:9c5b0ce4a25bb78d659478d1c552f1dbb7ff275aab3263bb41cdbef8bca28693"}, + {file = "boto3-1.35.16.tar.gz", hash = "sha256:9b96c210678cf430b16b49dee87db30f46044602bb9a605a465e1900f468a43f"}, ] [package.dependencies] -botocore = ">=1.34.106,<1.35.0" +botocore = ">=1.35.16,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -316,420 +342,421 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "boto3-stubs" -version = "1.34.128" -description = "Type annotations for boto3 1.34.128 generated with mypy-boto3-builder 7.24.0" +version = "1.35.16" +description = "Type annotations for boto3 1.35.16 generated with mypy-boto3-builder 8.0.1" optional = false python-versions = ">=3.8" files = [ - {file = "boto3_stubs-1.34.128-py3-none-any.whl", hash = "sha256:cac2da12240412848c01c5c7ade6a50cf79818aeb8fece2b7b6d2fbab62b64bf"}, - {file = "boto3_stubs-1.34.128.tar.gz", hash = "sha256:f4dff208a9cf00797a6c2b1847ab28d0b931a86a41bf00c8e4f55b37fb6611a5"}, + {file = "boto3_stubs-1.35.16-py3-none-any.whl", hash = "sha256:7dee283bd3a5272fe759a43e22fc0658b5ee35679cb4932e33ad0c602f559b61"}, + {file = "boto3_stubs-1.35.16.tar.gz", hash = "sha256:39b77ede4914704c2ee5e97fd3486d6af26745cbedf6bc06f33c0ffadd0fb2c9"}, ] [package.dependencies] botocore-stubs = "*" -mypy-boto3-dynamodb = {version = ">=1.34.0,<1.35.0", optional = true, markers = "extra == \"dynamodb\""} +mypy-boto3-dynamodb = {version = ">=1.35.0,<1.36.0", optional = true, markers = "extra == \"dynamodb\""} types-s3transfer = "*" typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.12\""} [package.extras] -accessanalyzer = ["mypy-boto3-accessanalyzer (>=1.34.0,<1.35.0)"] -account = ["mypy-boto3-account (>=1.34.0,<1.35.0)"] -acm = ["mypy-boto3-acm (>=1.34.0,<1.35.0)"] -acm-pca = ["mypy-boto3-acm-pca (>=1.34.0,<1.35.0)"] -all = ["mypy-boto3-accessanalyzer (>=1.34.0,<1.35.0)", "mypy-boto3-account (>=1.34.0,<1.35.0)", "mypy-boto3-acm (>=1.34.0,<1.35.0)", "mypy-boto3-acm-pca (>=1.34.0,<1.35.0)", "mypy-boto3-amp (>=1.34.0,<1.35.0)", "mypy-boto3-amplify (>=1.34.0,<1.35.0)", "mypy-boto3-amplifybackend (>=1.34.0,<1.35.0)", "mypy-boto3-amplifyuibuilder (>=1.34.0,<1.35.0)", "mypy-boto3-apigateway (>=1.34.0,<1.35.0)", "mypy-boto3-apigatewaymanagementapi (>=1.34.0,<1.35.0)", "mypy-boto3-apigatewayv2 (>=1.34.0,<1.35.0)", "mypy-boto3-appconfig (>=1.34.0,<1.35.0)", "mypy-boto3-appconfigdata (>=1.34.0,<1.35.0)", "mypy-boto3-appfabric (>=1.34.0,<1.35.0)", "mypy-boto3-appflow (>=1.34.0,<1.35.0)", "mypy-boto3-appintegrations (>=1.34.0,<1.35.0)", "mypy-boto3-application-autoscaling (>=1.34.0,<1.35.0)", "mypy-boto3-application-insights (>=1.34.0,<1.35.0)", "mypy-boto3-application-signals (>=1.34.0,<1.35.0)", "mypy-boto3-applicationcostprofiler (>=1.34.0,<1.35.0)", "mypy-boto3-appmesh (>=1.34.0,<1.35.0)", "mypy-boto3-apprunner (>=1.34.0,<1.35.0)", "mypy-boto3-appstream (>=1.34.0,<1.35.0)", "mypy-boto3-appsync (>=1.34.0,<1.35.0)", "mypy-boto3-apptest (>=1.34.0,<1.35.0)", "mypy-boto3-arc-zonal-shift (>=1.34.0,<1.35.0)", "mypy-boto3-artifact (>=1.34.0,<1.35.0)", "mypy-boto3-athena (>=1.34.0,<1.35.0)", "mypy-boto3-auditmanager (>=1.34.0,<1.35.0)", "mypy-boto3-autoscaling (>=1.34.0,<1.35.0)", "mypy-boto3-autoscaling-plans (>=1.34.0,<1.35.0)", "mypy-boto3-b2bi (>=1.34.0,<1.35.0)", "mypy-boto3-backup (>=1.34.0,<1.35.0)", "mypy-boto3-backup-gateway (>=1.34.0,<1.35.0)", "mypy-boto3-batch (>=1.34.0,<1.35.0)", "mypy-boto3-bcm-data-exports (>=1.34.0,<1.35.0)", "mypy-boto3-bedrock (>=1.34.0,<1.35.0)", "mypy-boto3-bedrock-agent (>=1.34.0,<1.35.0)", "mypy-boto3-bedrock-agent-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-bedrock-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-billingconductor (>=1.34.0,<1.35.0)", "mypy-boto3-braket (>=1.34.0,<1.35.0)", "mypy-boto3-budgets (>=1.34.0,<1.35.0)", "mypy-boto3-ce (>=1.34.0,<1.35.0)", "mypy-boto3-chatbot (>=1.34.0,<1.35.0)", "mypy-boto3-chime (>=1.34.0,<1.35.0)", "mypy-boto3-chime-sdk-identity (>=1.34.0,<1.35.0)", "mypy-boto3-chime-sdk-media-pipelines (>=1.34.0,<1.35.0)", "mypy-boto3-chime-sdk-meetings (>=1.34.0,<1.35.0)", "mypy-boto3-chime-sdk-messaging (>=1.34.0,<1.35.0)", "mypy-boto3-chime-sdk-voice (>=1.34.0,<1.35.0)", "mypy-boto3-cleanrooms (>=1.34.0,<1.35.0)", "mypy-boto3-cleanroomsml (>=1.34.0,<1.35.0)", "mypy-boto3-cloud9 (>=1.34.0,<1.35.0)", "mypy-boto3-cloudcontrol (>=1.34.0,<1.35.0)", "mypy-boto3-clouddirectory (>=1.34.0,<1.35.0)", "mypy-boto3-cloudformation (>=1.34.0,<1.35.0)", "mypy-boto3-cloudfront (>=1.34.0,<1.35.0)", "mypy-boto3-cloudfront-keyvaluestore (>=1.34.0,<1.35.0)", "mypy-boto3-cloudhsm (>=1.34.0,<1.35.0)", "mypy-boto3-cloudhsmv2 (>=1.34.0,<1.35.0)", "mypy-boto3-cloudsearch (>=1.34.0,<1.35.0)", "mypy-boto3-cloudsearchdomain (>=1.34.0,<1.35.0)", "mypy-boto3-cloudtrail (>=1.34.0,<1.35.0)", "mypy-boto3-cloudtrail-data (>=1.34.0,<1.35.0)", "mypy-boto3-cloudwatch (>=1.34.0,<1.35.0)", "mypy-boto3-codeartifact (>=1.34.0,<1.35.0)", "mypy-boto3-codebuild (>=1.34.0,<1.35.0)", "mypy-boto3-codecatalyst (>=1.34.0,<1.35.0)", "mypy-boto3-codecommit (>=1.34.0,<1.35.0)", "mypy-boto3-codeconnections (>=1.34.0,<1.35.0)", "mypy-boto3-codedeploy (>=1.34.0,<1.35.0)", "mypy-boto3-codeguru-reviewer (>=1.34.0,<1.35.0)", "mypy-boto3-codeguru-security (>=1.34.0,<1.35.0)", "mypy-boto3-codeguruprofiler (>=1.34.0,<1.35.0)", "mypy-boto3-codepipeline (>=1.34.0,<1.35.0)", "mypy-boto3-codestar (>=1.34.0,<1.35.0)", "mypy-boto3-codestar-connections (>=1.34.0,<1.35.0)", "mypy-boto3-codestar-notifications (>=1.34.0,<1.35.0)", "mypy-boto3-cognito-identity (>=1.34.0,<1.35.0)", "mypy-boto3-cognito-idp (>=1.34.0,<1.35.0)", "mypy-boto3-cognito-sync (>=1.34.0,<1.35.0)", "mypy-boto3-comprehend (>=1.34.0,<1.35.0)", "mypy-boto3-comprehendmedical (>=1.34.0,<1.35.0)", "mypy-boto3-compute-optimizer (>=1.34.0,<1.35.0)", "mypy-boto3-config (>=1.34.0,<1.35.0)", "mypy-boto3-connect (>=1.34.0,<1.35.0)", "mypy-boto3-connect-contact-lens (>=1.34.0,<1.35.0)", "mypy-boto3-connectcampaigns (>=1.34.0,<1.35.0)", "mypy-boto3-connectcases (>=1.34.0,<1.35.0)", "mypy-boto3-connectparticipant (>=1.34.0,<1.35.0)", "mypy-boto3-controlcatalog (>=1.34.0,<1.35.0)", "mypy-boto3-controltower (>=1.34.0,<1.35.0)", "mypy-boto3-cost-optimization-hub (>=1.34.0,<1.35.0)", "mypy-boto3-cur (>=1.34.0,<1.35.0)", "mypy-boto3-customer-profiles (>=1.34.0,<1.35.0)", "mypy-boto3-databrew (>=1.34.0,<1.35.0)", "mypy-boto3-dataexchange (>=1.34.0,<1.35.0)", "mypy-boto3-datapipeline (>=1.34.0,<1.35.0)", "mypy-boto3-datasync (>=1.34.0,<1.35.0)", "mypy-boto3-datazone (>=1.34.0,<1.35.0)", "mypy-boto3-dax (>=1.34.0,<1.35.0)", "mypy-boto3-deadline (>=1.34.0,<1.35.0)", "mypy-boto3-detective (>=1.34.0,<1.35.0)", "mypy-boto3-devicefarm (>=1.34.0,<1.35.0)", "mypy-boto3-devops-guru (>=1.34.0,<1.35.0)", "mypy-boto3-directconnect (>=1.34.0,<1.35.0)", "mypy-boto3-discovery (>=1.34.0,<1.35.0)", "mypy-boto3-dlm (>=1.34.0,<1.35.0)", "mypy-boto3-dms (>=1.34.0,<1.35.0)", "mypy-boto3-docdb (>=1.34.0,<1.35.0)", "mypy-boto3-docdb-elastic (>=1.34.0,<1.35.0)", "mypy-boto3-drs (>=1.34.0,<1.35.0)", "mypy-boto3-ds (>=1.34.0,<1.35.0)", "mypy-boto3-dynamodb (>=1.34.0,<1.35.0)", "mypy-boto3-dynamodbstreams (>=1.34.0,<1.35.0)", "mypy-boto3-ebs (>=1.34.0,<1.35.0)", "mypy-boto3-ec2 (>=1.34.0,<1.35.0)", "mypy-boto3-ec2-instance-connect (>=1.34.0,<1.35.0)", "mypy-boto3-ecr (>=1.34.0,<1.35.0)", "mypy-boto3-ecr-public (>=1.34.0,<1.35.0)", "mypy-boto3-ecs (>=1.34.0,<1.35.0)", "mypy-boto3-efs (>=1.34.0,<1.35.0)", "mypy-boto3-eks (>=1.34.0,<1.35.0)", "mypy-boto3-eks-auth (>=1.34.0,<1.35.0)", "mypy-boto3-elastic-inference (>=1.34.0,<1.35.0)", "mypy-boto3-elasticache (>=1.34.0,<1.35.0)", "mypy-boto3-elasticbeanstalk (>=1.34.0,<1.35.0)", "mypy-boto3-elastictranscoder (>=1.34.0,<1.35.0)", "mypy-boto3-elb (>=1.34.0,<1.35.0)", "mypy-boto3-elbv2 (>=1.34.0,<1.35.0)", "mypy-boto3-emr (>=1.34.0,<1.35.0)", "mypy-boto3-emr-containers (>=1.34.0,<1.35.0)", "mypy-boto3-emr-serverless (>=1.34.0,<1.35.0)", "mypy-boto3-entityresolution (>=1.34.0,<1.35.0)", "mypy-boto3-es (>=1.34.0,<1.35.0)", "mypy-boto3-events (>=1.34.0,<1.35.0)", "mypy-boto3-evidently (>=1.34.0,<1.35.0)", "mypy-boto3-finspace (>=1.34.0,<1.35.0)", "mypy-boto3-finspace-data (>=1.34.0,<1.35.0)", "mypy-boto3-firehose (>=1.34.0,<1.35.0)", "mypy-boto3-fis (>=1.34.0,<1.35.0)", "mypy-boto3-fms (>=1.34.0,<1.35.0)", "mypy-boto3-forecast (>=1.34.0,<1.35.0)", "mypy-boto3-forecastquery (>=1.34.0,<1.35.0)", "mypy-boto3-frauddetector (>=1.34.0,<1.35.0)", "mypy-boto3-freetier (>=1.34.0,<1.35.0)", "mypy-boto3-fsx (>=1.34.0,<1.35.0)", "mypy-boto3-gamelift (>=1.34.0,<1.35.0)", "mypy-boto3-glacier (>=1.34.0,<1.35.0)", "mypy-boto3-globalaccelerator (>=1.34.0,<1.35.0)", "mypy-boto3-glue (>=1.34.0,<1.35.0)", "mypy-boto3-grafana (>=1.34.0,<1.35.0)", "mypy-boto3-greengrass (>=1.34.0,<1.35.0)", "mypy-boto3-greengrassv2 (>=1.34.0,<1.35.0)", "mypy-boto3-groundstation (>=1.34.0,<1.35.0)", "mypy-boto3-guardduty (>=1.34.0,<1.35.0)", "mypy-boto3-health (>=1.34.0,<1.35.0)", "mypy-boto3-healthlake (>=1.34.0,<1.35.0)", "mypy-boto3-iam (>=1.34.0,<1.35.0)", "mypy-boto3-identitystore (>=1.34.0,<1.35.0)", "mypy-boto3-imagebuilder (>=1.34.0,<1.35.0)", "mypy-boto3-importexport (>=1.34.0,<1.35.0)", "mypy-boto3-inspector (>=1.34.0,<1.35.0)", "mypy-boto3-inspector-scan (>=1.34.0,<1.35.0)", "mypy-boto3-inspector2 (>=1.34.0,<1.35.0)", "mypy-boto3-internetmonitor (>=1.34.0,<1.35.0)", "mypy-boto3-iot (>=1.34.0,<1.35.0)", "mypy-boto3-iot-data (>=1.34.0,<1.35.0)", "mypy-boto3-iot-jobs-data (>=1.34.0,<1.35.0)", "mypy-boto3-iot1click-devices (>=1.34.0,<1.35.0)", "mypy-boto3-iot1click-projects (>=1.34.0,<1.35.0)", "mypy-boto3-iotanalytics (>=1.34.0,<1.35.0)", "mypy-boto3-iotdeviceadvisor (>=1.34.0,<1.35.0)", "mypy-boto3-iotevents (>=1.34.0,<1.35.0)", "mypy-boto3-iotevents-data (>=1.34.0,<1.35.0)", "mypy-boto3-iotfleethub (>=1.34.0,<1.35.0)", "mypy-boto3-iotfleetwise (>=1.34.0,<1.35.0)", "mypy-boto3-iotsecuretunneling (>=1.34.0,<1.35.0)", "mypy-boto3-iotsitewise (>=1.34.0,<1.35.0)", "mypy-boto3-iotthingsgraph (>=1.34.0,<1.35.0)", "mypy-boto3-iottwinmaker (>=1.34.0,<1.35.0)", "mypy-boto3-iotwireless (>=1.34.0,<1.35.0)", "mypy-boto3-ivs (>=1.34.0,<1.35.0)", "mypy-boto3-ivs-realtime (>=1.34.0,<1.35.0)", "mypy-boto3-ivschat (>=1.34.0,<1.35.0)", "mypy-boto3-kafka (>=1.34.0,<1.35.0)", "mypy-boto3-kafkaconnect (>=1.34.0,<1.35.0)", "mypy-boto3-kendra (>=1.34.0,<1.35.0)", "mypy-boto3-kendra-ranking (>=1.34.0,<1.35.0)", "mypy-boto3-keyspaces (>=1.34.0,<1.35.0)", "mypy-boto3-kinesis (>=1.34.0,<1.35.0)", "mypy-boto3-kinesis-video-archived-media (>=1.34.0,<1.35.0)", "mypy-boto3-kinesis-video-media (>=1.34.0,<1.35.0)", "mypy-boto3-kinesis-video-signaling (>=1.34.0,<1.35.0)", "mypy-boto3-kinesis-video-webrtc-storage (>=1.34.0,<1.35.0)", "mypy-boto3-kinesisanalytics (>=1.34.0,<1.35.0)", "mypy-boto3-kinesisanalyticsv2 (>=1.34.0,<1.35.0)", "mypy-boto3-kinesisvideo (>=1.34.0,<1.35.0)", "mypy-boto3-kms (>=1.34.0,<1.35.0)", "mypy-boto3-lakeformation (>=1.34.0,<1.35.0)", "mypy-boto3-lambda (>=1.34.0,<1.35.0)", "mypy-boto3-launch-wizard (>=1.34.0,<1.35.0)", "mypy-boto3-lex-models (>=1.34.0,<1.35.0)", "mypy-boto3-lex-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-lexv2-models (>=1.34.0,<1.35.0)", "mypy-boto3-lexv2-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-license-manager (>=1.34.0,<1.35.0)", "mypy-boto3-license-manager-linux-subscriptions (>=1.34.0,<1.35.0)", "mypy-boto3-license-manager-user-subscriptions (>=1.34.0,<1.35.0)", "mypy-boto3-lightsail (>=1.34.0,<1.35.0)", "mypy-boto3-location (>=1.34.0,<1.35.0)", "mypy-boto3-logs (>=1.34.0,<1.35.0)", "mypy-boto3-lookoutequipment (>=1.34.0,<1.35.0)", "mypy-boto3-lookoutmetrics (>=1.34.0,<1.35.0)", "mypy-boto3-lookoutvision (>=1.34.0,<1.35.0)", "mypy-boto3-m2 (>=1.34.0,<1.35.0)", "mypy-boto3-machinelearning (>=1.34.0,<1.35.0)", "mypy-boto3-macie2 (>=1.34.0,<1.35.0)", "mypy-boto3-mailmanager (>=1.34.0,<1.35.0)", "mypy-boto3-managedblockchain (>=1.34.0,<1.35.0)", "mypy-boto3-managedblockchain-query (>=1.34.0,<1.35.0)", "mypy-boto3-marketplace-agreement (>=1.34.0,<1.35.0)", "mypy-boto3-marketplace-catalog (>=1.34.0,<1.35.0)", "mypy-boto3-marketplace-deployment (>=1.34.0,<1.35.0)", "mypy-boto3-marketplace-entitlement (>=1.34.0,<1.35.0)", "mypy-boto3-marketplacecommerceanalytics (>=1.34.0,<1.35.0)", "mypy-boto3-mediaconnect (>=1.34.0,<1.35.0)", "mypy-boto3-mediaconvert (>=1.34.0,<1.35.0)", "mypy-boto3-medialive (>=1.34.0,<1.35.0)", "mypy-boto3-mediapackage (>=1.34.0,<1.35.0)", "mypy-boto3-mediapackage-vod (>=1.34.0,<1.35.0)", "mypy-boto3-mediapackagev2 (>=1.34.0,<1.35.0)", "mypy-boto3-mediastore (>=1.34.0,<1.35.0)", "mypy-boto3-mediastore-data (>=1.34.0,<1.35.0)", "mypy-boto3-mediatailor (>=1.34.0,<1.35.0)", "mypy-boto3-medical-imaging (>=1.34.0,<1.35.0)", "mypy-boto3-memorydb (>=1.34.0,<1.35.0)", "mypy-boto3-meteringmarketplace (>=1.34.0,<1.35.0)", "mypy-boto3-mgh (>=1.34.0,<1.35.0)", "mypy-boto3-mgn (>=1.34.0,<1.35.0)", "mypy-boto3-migration-hub-refactor-spaces (>=1.34.0,<1.35.0)", "mypy-boto3-migrationhub-config (>=1.34.0,<1.35.0)", "mypy-boto3-migrationhuborchestrator (>=1.34.0,<1.35.0)", "mypy-boto3-migrationhubstrategy (>=1.34.0,<1.35.0)", "mypy-boto3-mobile (>=1.34.0,<1.35.0)", "mypy-boto3-mq (>=1.34.0,<1.35.0)", "mypy-boto3-mturk (>=1.34.0,<1.35.0)", "mypy-boto3-mwaa (>=1.34.0,<1.35.0)", "mypy-boto3-neptune (>=1.34.0,<1.35.0)", "mypy-boto3-neptune-graph (>=1.34.0,<1.35.0)", "mypy-boto3-neptunedata (>=1.34.0,<1.35.0)", "mypy-boto3-network-firewall (>=1.34.0,<1.35.0)", "mypy-boto3-networkmanager (>=1.34.0,<1.35.0)", "mypy-boto3-networkmonitor (>=1.34.0,<1.35.0)", "mypy-boto3-nimble (>=1.34.0,<1.35.0)", "mypy-boto3-oam (>=1.34.0,<1.35.0)", "mypy-boto3-omics (>=1.34.0,<1.35.0)", "mypy-boto3-opensearch (>=1.34.0,<1.35.0)", "mypy-boto3-opensearchserverless (>=1.34.0,<1.35.0)", "mypy-boto3-opsworks (>=1.34.0,<1.35.0)", "mypy-boto3-opsworkscm (>=1.34.0,<1.35.0)", "mypy-boto3-organizations (>=1.34.0,<1.35.0)", "mypy-boto3-osis (>=1.34.0,<1.35.0)", "mypy-boto3-outposts (>=1.34.0,<1.35.0)", "mypy-boto3-panorama (>=1.34.0,<1.35.0)", "mypy-boto3-payment-cryptography (>=1.34.0,<1.35.0)", "mypy-boto3-payment-cryptography-data (>=1.34.0,<1.35.0)", "mypy-boto3-pca-connector-ad (>=1.34.0,<1.35.0)", "mypy-boto3-pca-connector-scep (>=1.34.0,<1.35.0)", "mypy-boto3-personalize (>=1.34.0,<1.35.0)", "mypy-boto3-personalize-events (>=1.34.0,<1.35.0)", "mypy-boto3-personalize-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-pi (>=1.34.0,<1.35.0)", "mypy-boto3-pinpoint (>=1.34.0,<1.35.0)", "mypy-boto3-pinpoint-email (>=1.34.0,<1.35.0)", "mypy-boto3-pinpoint-sms-voice (>=1.34.0,<1.35.0)", "mypy-boto3-pinpoint-sms-voice-v2 (>=1.34.0,<1.35.0)", "mypy-boto3-pipes (>=1.34.0,<1.35.0)", "mypy-boto3-polly (>=1.34.0,<1.35.0)", "mypy-boto3-pricing (>=1.34.0,<1.35.0)", "mypy-boto3-privatenetworks (>=1.34.0,<1.35.0)", "mypy-boto3-proton (>=1.34.0,<1.35.0)", "mypy-boto3-qbusiness (>=1.34.0,<1.35.0)", "mypy-boto3-qconnect (>=1.34.0,<1.35.0)", "mypy-boto3-qldb (>=1.34.0,<1.35.0)", "mypy-boto3-qldb-session (>=1.34.0,<1.35.0)", "mypy-boto3-quicksight (>=1.34.0,<1.35.0)", "mypy-boto3-ram (>=1.34.0,<1.35.0)", "mypy-boto3-rbin (>=1.34.0,<1.35.0)", "mypy-boto3-rds (>=1.34.0,<1.35.0)", "mypy-boto3-rds-data (>=1.34.0,<1.35.0)", "mypy-boto3-redshift (>=1.34.0,<1.35.0)", "mypy-boto3-redshift-data (>=1.34.0,<1.35.0)", "mypy-boto3-redshift-serverless (>=1.34.0,<1.35.0)", "mypy-boto3-rekognition (>=1.34.0,<1.35.0)", "mypy-boto3-repostspace (>=1.34.0,<1.35.0)", "mypy-boto3-resiliencehub (>=1.34.0,<1.35.0)", "mypy-boto3-resource-explorer-2 (>=1.34.0,<1.35.0)", "mypy-boto3-resource-groups (>=1.34.0,<1.35.0)", "mypy-boto3-resourcegroupstaggingapi (>=1.34.0,<1.35.0)", "mypy-boto3-robomaker (>=1.34.0,<1.35.0)", "mypy-boto3-rolesanywhere (>=1.34.0,<1.35.0)", "mypy-boto3-route53 (>=1.34.0,<1.35.0)", "mypy-boto3-route53-recovery-cluster (>=1.34.0,<1.35.0)", "mypy-boto3-route53-recovery-control-config (>=1.34.0,<1.35.0)", "mypy-boto3-route53-recovery-readiness (>=1.34.0,<1.35.0)", "mypy-boto3-route53domains (>=1.34.0,<1.35.0)", "mypy-boto3-route53profiles (>=1.34.0,<1.35.0)", "mypy-boto3-route53resolver (>=1.34.0,<1.35.0)", "mypy-boto3-rum (>=1.34.0,<1.35.0)", "mypy-boto3-s3 (>=1.34.0,<1.35.0)", "mypy-boto3-s3control (>=1.34.0,<1.35.0)", "mypy-boto3-s3outposts (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker-a2i-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker-edge (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker-featurestore-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker-geospatial (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker-metrics (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-savingsplans (>=1.34.0,<1.35.0)", "mypy-boto3-scheduler (>=1.34.0,<1.35.0)", "mypy-boto3-schemas (>=1.34.0,<1.35.0)", "mypy-boto3-sdb (>=1.34.0,<1.35.0)", "mypy-boto3-secretsmanager (>=1.34.0,<1.35.0)", "mypy-boto3-securityhub (>=1.34.0,<1.35.0)", "mypy-boto3-securitylake (>=1.34.0,<1.35.0)", "mypy-boto3-serverlessrepo (>=1.34.0,<1.35.0)", "mypy-boto3-service-quotas (>=1.34.0,<1.35.0)", "mypy-boto3-servicecatalog (>=1.34.0,<1.35.0)", "mypy-boto3-servicecatalog-appregistry (>=1.34.0,<1.35.0)", "mypy-boto3-servicediscovery (>=1.34.0,<1.35.0)", "mypy-boto3-ses (>=1.34.0,<1.35.0)", "mypy-boto3-sesv2 (>=1.34.0,<1.35.0)", "mypy-boto3-shield (>=1.34.0,<1.35.0)", "mypy-boto3-signer (>=1.34.0,<1.35.0)", "mypy-boto3-simspaceweaver (>=1.34.0,<1.35.0)", "mypy-boto3-sms (>=1.34.0,<1.35.0)", "mypy-boto3-sms-voice (>=1.34.0,<1.35.0)", "mypy-boto3-snow-device-management (>=1.34.0,<1.35.0)", "mypy-boto3-snowball (>=1.34.0,<1.35.0)", "mypy-boto3-sns (>=1.34.0,<1.35.0)", "mypy-boto3-sqs (>=1.34.0,<1.35.0)", "mypy-boto3-ssm (>=1.34.0,<1.35.0)", "mypy-boto3-ssm-contacts (>=1.34.0,<1.35.0)", "mypy-boto3-ssm-incidents (>=1.34.0,<1.35.0)", "mypy-boto3-ssm-sap (>=1.34.0,<1.35.0)", "mypy-boto3-sso (>=1.34.0,<1.35.0)", "mypy-boto3-sso-admin (>=1.34.0,<1.35.0)", "mypy-boto3-sso-oidc (>=1.34.0,<1.35.0)", "mypy-boto3-stepfunctions (>=1.34.0,<1.35.0)", "mypy-boto3-storagegateway (>=1.34.0,<1.35.0)", "mypy-boto3-sts (>=1.34.0,<1.35.0)", "mypy-boto3-supplychain (>=1.34.0,<1.35.0)", "mypy-boto3-support (>=1.34.0,<1.35.0)", "mypy-boto3-support-app (>=1.34.0,<1.35.0)", "mypy-boto3-swf (>=1.34.0,<1.35.0)", "mypy-boto3-synthetics (>=1.34.0,<1.35.0)", "mypy-boto3-taxsettings (>=1.34.0,<1.35.0)", "mypy-boto3-textract (>=1.34.0,<1.35.0)", "mypy-boto3-timestream-influxdb (>=1.34.0,<1.35.0)", "mypy-boto3-timestream-query (>=1.34.0,<1.35.0)", "mypy-boto3-timestream-write (>=1.34.0,<1.35.0)", "mypy-boto3-tnb (>=1.34.0,<1.35.0)", "mypy-boto3-transcribe (>=1.34.0,<1.35.0)", "mypy-boto3-transfer (>=1.34.0,<1.35.0)", "mypy-boto3-translate (>=1.34.0,<1.35.0)", "mypy-boto3-trustedadvisor (>=1.34.0,<1.35.0)", "mypy-boto3-verifiedpermissions (>=1.34.0,<1.35.0)", "mypy-boto3-voice-id (>=1.34.0,<1.35.0)", "mypy-boto3-vpc-lattice (>=1.34.0,<1.35.0)", "mypy-boto3-waf (>=1.34.0,<1.35.0)", "mypy-boto3-waf-regional (>=1.34.0,<1.35.0)", "mypy-boto3-wafv2 (>=1.34.0,<1.35.0)", "mypy-boto3-wellarchitected (>=1.34.0,<1.35.0)", "mypy-boto3-wisdom (>=1.34.0,<1.35.0)", "mypy-boto3-workdocs (>=1.34.0,<1.35.0)", "mypy-boto3-worklink (>=1.34.0,<1.35.0)", "mypy-boto3-workmail (>=1.34.0,<1.35.0)", "mypy-boto3-workmailmessageflow (>=1.34.0,<1.35.0)", "mypy-boto3-workspaces (>=1.34.0,<1.35.0)", "mypy-boto3-workspaces-thin-client (>=1.34.0,<1.35.0)", "mypy-boto3-workspaces-web (>=1.34.0,<1.35.0)", "mypy-boto3-xray (>=1.34.0,<1.35.0)"] -amp = ["mypy-boto3-amp (>=1.34.0,<1.35.0)"] -amplify = ["mypy-boto3-amplify (>=1.34.0,<1.35.0)"] -amplifybackend = ["mypy-boto3-amplifybackend (>=1.34.0,<1.35.0)"] -amplifyuibuilder = ["mypy-boto3-amplifyuibuilder (>=1.34.0,<1.35.0)"] -apigateway = ["mypy-boto3-apigateway (>=1.34.0,<1.35.0)"] -apigatewaymanagementapi = ["mypy-boto3-apigatewaymanagementapi (>=1.34.0,<1.35.0)"] -apigatewayv2 = ["mypy-boto3-apigatewayv2 (>=1.34.0,<1.35.0)"] -appconfig = ["mypy-boto3-appconfig (>=1.34.0,<1.35.0)"] -appconfigdata = ["mypy-boto3-appconfigdata (>=1.34.0,<1.35.0)"] -appfabric = ["mypy-boto3-appfabric (>=1.34.0,<1.35.0)"] -appflow = ["mypy-boto3-appflow (>=1.34.0,<1.35.0)"] -appintegrations = ["mypy-boto3-appintegrations (>=1.34.0,<1.35.0)"] -application-autoscaling = ["mypy-boto3-application-autoscaling (>=1.34.0,<1.35.0)"] -application-insights = ["mypy-boto3-application-insights (>=1.34.0,<1.35.0)"] -application-signals = ["mypy-boto3-application-signals (>=1.34.0,<1.35.0)"] -applicationcostprofiler = ["mypy-boto3-applicationcostprofiler (>=1.34.0,<1.35.0)"] -appmesh = ["mypy-boto3-appmesh (>=1.34.0,<1.35.0)"] -apprunner = ["mypy-boto3-apprunner (>=1.34.0,<1.35.0)"] -appstream = ["mypy-boto3-appstream (>=1.34.0,<1.35.0)"] -appsync = ["mypy-boto3-appsync (>=1.34.0,<1.35.0)"] -apptest = ["mypy-boto3-apptest (>=1.34.0,<1.35.0)"] -arc-zonal-shift = ["mypy-boto3-arc-zonal-shift (>=1.34.0,<1.35.0)"] -artifact = ["mypy-boto3-artifact (>=1.34.0,<1.35.0)"] -athena = ["mypy-boto3-athena (>=1.34.0,<1.35.0)"] -auditmanager = ["mypy-boto3-auditmanager (>=1.34.0,<1.35.0)"] -autoscaling = ["mypy-boto3-autoscaling (>=1.34.0,<1.35.0)"] -autoscaling-plans = ["mypy-boto3-autoscaling-plans (>=1.34.0,<1.35.0)"] -b2bi = ["mypy-boto3-b2bi (>=1.34.0,<1.35.0)"] -backup = ["mypy-boto3-backup (>=1.34.0,<1.35.0)"] -backup-gateway = ["mypy-boto3-backup-gateway (>=1.34.0,<1.35.0)"] -batch = ["mypy-boto3-batch (>=1.34.0,<1.35.0)"] -bcm-data-exports = ["mypy-boto3-bcm-data-exports (>=1.34.0,<1.35.0)"] -bedrock = ["mypy-boto3-bedrock (>=1.34.0,<1.35.0)"] -bedrock-agent = ["mypy-boto3-bedrock-agent (>=1.34.0,<1.35.0)"] -bedrock-agent-runtime = ["mypy-boto3-bedrock-agent-runtime (>=1.34.0,<1.35.0)"] -bedrock-runtime = ["mypy-boto3-bedrock-runtime (>=1.34.0,<1.35.0)"] -billingconductor = ["mypy-boto3-billingconductor (>=1.34.0,<1.35.0)"] -boto3 = ["boto3 (==1.34.128)", "botocore (==1.34.128)"] -braket = ["mypy-boto3-braket (>=1.34.0,<1.35.0)"] -budgets = ["mypy-boto3-budgets (>=1.34.0,<1.35.0)"] -ce = ["mypy-boto3-ce (>=1.34.0,<1.35.0)"] -chatbot = ["mypy-boto3-chatbot (>=1.34.0,<1.35.0)"] -chime = ["mypy-boto3-chime (>=1.34.0,<1.35.0)"] -chime-sdk-identity = ["mypy-boto3-chime-sdk-identity (>=1.34.0,<1.35.0)"] -chime-sdk-media-pipelines = ["mypy-boto3-chime-sdk-media-pipelines (>=1.34.0,<1.35.0)"] -chime-sdk-meetings = ["mypy-boto3-chime-sdk-meetings (>=1.34.0,<1.35.0)"] -chime-sdk-messaging = ["mypy-boto3-chime-sdk-messaging (>=1.34.0,<1.35.0)"] -chime-sdk-voice = ["mypy-boto3-chime-sdk-voice (>=1.34.0,<1.35.0)"] -cleanrooms = ["mypy-boto3-cleanrooms (>=1.34.0,<1.35.0)"] -cleanroomsml = ["mypy-boto3-cleanroomsml (>=1.34.0,<1.35.0)"] -cloud9 = ["mypy-boto3-cloud9 (>=1.34.0,<1.35.0)"] -cloudcontrol = ["mypy-boto3-cloudcontrol (>=1.34.0,<1.35.0)"] -clouddirectory = ["mypy-boto3-clouddirectory (>=1.34.0,<1.35.0)"] -cloudformation = ["mypy-boto3-cloudformation (>=1.34.0,<1.35.0)"] -cloudfront = ["mypy-boto3-cloudfront (>=1.34.0,<1.35.0)"] -cloudfront-keyvaluestore = ["mypy-boto3-cloudfront-keyvaluestore (>=1.34.0,<1.35.0)"] -cloudhsm = ["mypy-boto3-cloudhsm (>=1.34.0,<1.35.0)"] -cloudhsmv2 = ["mypy-boto3-cloudhsmv2 (>=1.34.0,<1.35.0)"] -cloudsearch = ["mypy-boto3-cloudsearch (>=1.34.0,<1.35.0)"] -cloudsearchdomain = ["mypy-boto3-cloudsearchdomain (>=1.34.0,<1.35.0)"] -cloudtrail = ["mypy-boto3-cloudtrail (>=1.34.0,<1.35.0)"] -cloudtrail-data = ["mypy-boto3-cloudtrail-data (>=1.34.0,<1.35.0)"] -cloudwatch = ["mypy-boto3-cloudwatch (>=1.34.0,<1.35.0)"] -codeartifact = ["mypy-boto3-codeartifact (>=1.34.0,<1.35.0)"] -codebuild = ["mypy-boto3-codebuild (>=1.34.0,<1.35.0)"] -codecatalyst = ["mypy-boto3-codecatalyst (>=1.34.0,<1.35.0)"] -codecommit = ["mypy-boto3-codecommit (>=1.34.0,<1.35.0)"] -codeconnections = ["mypy-boto3-codeconnections (>=1.34.0,<1.35.0)"] -codedeploy = ["mypy-boto3-codedeploy (>=1.34.0,<1.35.0)"] -codeguru-reviewer = ["mypy-boto3-codeguru-reviewer (>=1.34.0,<1.35.0)"] -codeguru-security = ["mypy-boto3-codeguru-security (>=1.34.0,<1.35.0)"] -codeguruprofiler = ["mypy-boto3-codeguruprofiler (>=1.34.0,<1.35.0)"] -codepipeline = ["mypy-boto3-codepipeline (>=1.34.0,<1.35.0)"] -codestar = ["mypy-boto3-codestar (>=1.34.0,<1.35.0)"] -codestar-connections = ["mypy-boto3-codestar-connections (>=1.34.0,<1.35.0)"] -codestar-notifications = ["mypy-boto3-codestar-notifications (>=1.34.0,<1.35.0)"] -cognito-identity = ["mypy-boto3-cognito-identity (>=1.34.0,<1.35.0)"] -cognito-idp = ["mypy-boto3-cognito-idp (>=1.34.0,<1.35.0)"] -cognito-sync = ["mypy-boto3-cognito-sync (>=1.34.0,<1.35.0)"] -comprehend = ["mypy-boto3-comprehend (>=1.34.0,<1.35.0)"] -comprehendmedical = ["mypy-boto3-comprehendmedical (>=1.34.0,<1.35.0)"] -compute-optimizer = ["mypy-boto3-compute-optimizer (>=1.34.0,<1.35.0)"] -config = ["mypy-boto3-config (>=1.34.0,<1.35.0)"] -connect = ["mypy-boto3-connect (>=1.34.0,<1.35.0)"] -connect-contact-lens = ["mypy-boto3-connect-contact-lens (>=1.34.0,<1.35.0)"] -connectcampaigns = ["mypy-boto3-connectcampaigns (>=1.34.0,<1.35.0)"] -connectcases = ["mypy-boto3-connectcases (>=1.34.0,<1.35.0)"] -connectparticipant = ["mypy-boto3-connectparticipant (>=1.34.0,<1.35.0)"] -controlcatalog = ["mypy-boto3-controlcatalog (>=1.34.0,<1.35.0)"] -controltower = ["mypy-boto3-controltower (>=1.34.0,<1.35.0)"] -cost-optimization-hub = ["mypy-boto3-cost-optimization-hub (>=1.34.0,<1.35.0)"] -cur = ["mypy-boto3-cur (>=1.34.0,<1.35.0)"] -customer-profiles = ["mypy-boto3-customer-profiles (>=1.34.0,<1.35.0)"] -databrew = ["mypy-boto3-databrew (>=1.34.0,<1.35.0)"] -dataexchange = ["mypy-boto3-dataexchange (>=1.34.0,<1.35.0)"] -datapipeline = ["mypy-boto3-datapipeline (>=1.34.0,<1.35.0)"] -datasync = ["mypy-boto3-datasync (>=1.34.0,<1.35.0)"] -datazone = ["mypy-boto3-datazone (>=1.34.0,<1.35.0)"] -dax = ["mypy-boto3-dax (>=1.34.0,<1.35.0)"] -deadline = ["mypy-boto3-deadline (>=1.34.0,<1.35.0)"] -detective = ["mypy-boto3-detective (>=1.34.0,<1.35.0)"] -devicefarm = ["mypy-boto3-devicefarm (>=1.34.0,<1.35.0)"] -devops-guru = ["mypy-boto3-devops-guru (>=1.34.0,<1.35.0)"] -directconnect = ["mypy-boto3-directconnect (>=1.34.0,<1.35.0)"] -discovery = ["mypy-boto3-discovery (>=1.34.0,<1.35.0)"] -dlm = ["mypy-boto3-dlm (>=1.34.0,<1.35.0)"] -dms = ["mypy-boto3-dms (>=1.34.0,<1.35.0)"] -docdb = ["mypy-boto3-docdb (>=1.34.0,<1.35.0)"] -docdb-elastic = ["mypy-boto3-docdb-elastic (>=1.34.0,<1.35.0)"] -drs = ["mypy-boto3-drs (>=1.34.0,<1.35.0)"] -ds = ["mypy-boto3-ds (>=1.34.0,<1.35.0)"] -dynamodb = ["mypy-boto3-dynamodb (>=1.34.0,<1.35.0)"] -dynamodbstreams = ["mypy-boto3-dynamodbstreams (>=1.34.0,<1.35.0)"] -ebs = ["mypy-boto3-ebs (>=1.34.0,<1.35.0)"] -ec2 = ["mypy-boto3-ec2 (>=1.34.0,<1.35.0)"] -ec2-instance-connect = ["mypy-boto3-ec2-instance-connect (>=1.34.0,<1.35.0)"] -ecr = ["mypy-boto3-ecr (>=1.34.0,<1.35.0)"] -ecr-public = ["mypy-boto3-ecr-public (>=1.34.0,<1.35.0)"] -ecs = ["mypy-boto3-ecs (>=1.34.0,<1.35.0)"] -efs = ["mypy-boto3-efs (>=1.34.0,<1.35.0)"] -eks = ["mypy-boto3-eks (>=1.34.0,<1.35.0)"] -eks-auth = ["mypy-boto3-eks-auth (>=1.34.0,<1.35.0)"] -elastic-inference = ["mypy-boto3-elastic-inference (>=1.34.0,<1.35.0)"] -elasticache = ["mypy-boto3-elasticache (>=1.34.0,<1.35.0)"] -elasticbeanstalk = ["mypy-boto3-elasticbeanstalk (>=1.34.0,<1.35.0)"] -elastictranscoder = ["mypy-boto3-elastictranscoder (>=1.34.0,<1.35.0)"] -elb = ["mypy-boto3-elb (>=1.34.0,<1.35.0)"] -elbv2 = ["mypy-boto3-elbv2 (>=1.34.0,<1.35.0)"] -emr = ["mypy-boto3-emr (>=1.34.0,<1.35.0)"] -emr-containers = ["mypy-boto3-emr-containers (>=1.34.0,<1.35.0)"] -emr-serverless = ["mypy-boto3-emr-serverless (>=1.34.0,<1.35.0)"] -entityresolution = ["mypy-boto3-entityresolution (>=1.34.0,<1.35.0)"] -es = ["mypy-boto3-es (>=1.34.0,<1.35.0)"] -essential = ["mypy-boto3-cloudformation (>=1.34.0,<1.35.0)", "mypy-boto3-dynamodb (>=1.34.0,<1.35.0)", "mypy-boto3-ec2 (>=1.34.0,<1.35.0)", "mypy-boto3-lambda (>=1.34.0,<1.35.0)", "mypy-boto3-rds (>=1.34.0,<1.35.0)", "mypy-boto3-s3 (>=1.34.0,<1.35.0)", "mypy-boto3-sqs (>=1.34.0,<1.35.0)"] -events = ["mypy-boto3-events (>=1.34.0,<1.35.0)"] -evidently = ["mypy-boto3-evidently (>=1.34.0,<1.35.0)"] -finspace = ["mypy-boto3-finspace (>=1.34.0,<1.35.0)"] -finspace-data = ["mypy-boto3-finspace-data (>=1.34.0,<1.35.0)"] -firehose = ["mypy-boto3-firehose (>=1.34.0,<1.35.0)"] -fis = ["mypy-boto3-fis (>=1.34.0,<1.35.0)"] -fms = ["mypy-boto3-fms (>=1.34.0,<1.35.0)"] -forecast = ["mypy-boto3-forecast (>=1.34.0,<1.35.0)"] -forecastquery = ["mypy-boto3-forecastquery (>=1.34.0,<1.35.0)"] -frauddetector = ["mypy-boto3-frauddetector (>=1.34.0,<1.35.0)"] -freetier = ["mypy-boto3-freetier (>=1.34.0,<1.35.0)"] -fsx = ["mypy-boto3-fsx (>=1.34.0,<1.35.0)"] -gamelift = ["mypy-boto3-gamelift (>=1.34.0,<1.35.0)"] -glacier = ["mypy-boto3-glacier (>=1.34.0,<1.35.0)"] -globalaccelerator = ["mypy-boto3-globalaccelerator (>=1.34.0,<1.35.0)"] -glue = ["mypy-boto3-glue (>=1.34.0,<1.35.0)"] -grafana = ["mypy-boto3-grafana (>=1.34.0,<1.35.0)"] -greengrass = ["mypy-boto3-greengrass (>=1.34.0,<1.35.0)"] -greengrassv2 = ["mypy-boto3-greengrassv2 (>=1.34.0,<1.35.0)"] -groundstation = ["mypy-boto3-groundstation (>=1.34.0,<1.35.0)"] -guardduty = ["mypy-boto3-guardduty (>=1.34.0,<1.35.0)"] -health = ["mypy-boto3-health (>=1.34.0,<1.35.0)"] -healthlake = ["mypy-boto3-healthlake (>=1.34.0,<1.35.0)"] -iam = ["mypy-boto3-iam (>=1.34.0,<1.35.0)"] -identitystore = ["mypy-boto3-identitystore (>=1.34.0,<1.35.0)"] -imagebuilder = ["mypy-boto3-imagebuilder (>=1.34.0,<1.35.0)"] -importexport = ["mypy-boto3-importexport (>=1.34.0,<1.35.0)"] -inspector = ["mypy-boto3-inspector (>=1.34.0,<1.35.0)"] -inspector-scan = ["mypy-boto3-inspector-scan (>=1.34.0,<1.35.0)"] -inspector2 = ["mypy-boto3-inspector2 (>=1.34.0,<1.35.0)"] -internetmonitor = ["mypy-boto3-internetmonitor (>=1.34.0,<1.35.0)"] -iot = ["mypy-boto3-iot (>=1.34.0,<1.35.0)"] -iot-data = ["mypy-boto3-iot-data (>=1.34.0,<1.35.0)"] -iot-jobs-data = ["mypy-boto3-iot-jobs-data (>=1.34.0,<1.35.0)"] -iot1click-devices = ["mypy-boto3-iot1click-devices (>=1.34.0,<1.35.0)"] -iot1click-projects = ["mypy-boto3-iot1click-projects (>=1.34.0,<1.35.0)"] -iotanalytics = ["mypy-boto3-iotanalytics (>=1.34.0,<1.35.0)"] -iotdeviceadvisor = ["mypy-boto3-iotdeviceadvisor (>=1.34.0,<1.35.0)"] -iotevents = ["mypy-boto3-iotevents (>=1.34.0,<1.35.0)"] -iotevents-data = ["mypy-boto3-iotevents-data (>=1.34.0,<1.35.0)"] -iotfleethub = ["mypy-boto3-iotfleethub (>=1.34.0,<1.35.0)"] -iotfleetwise = ["mypy-boto3-iotfleetwise (>=1.34.0,<1.35.0)"] -iotsecuretunneling = ["mypy-boto3-iotsecuretunneling (>=1.34.0,<1.35.0)"] -iotsitewise = ["mypy-boto3-iotsitewise (>=1.34.0,<1.35.0)"] -iotthingsgraph = ["mypy-boto3-iotthingsgraph (>=1.34.0,<1.35.0)"] -iottwinmaker = ["mypy-boto3-iottwinmaker (>=1.34.0,<1.35.0)"] -iotwireless = ["mypy-boto3-iotwireless (>=1.34.0,<1.35.0)"] -ivs = ["mypy-boto3-ivs (>=1.34.0,<1.35.0)"] -ivs-realtime = ["mypy-boto3-ivs-realtime (>=1.34.0,<1.35.0)"] -ivschat = ["mypy-boto3-ivschat (>=1.34.0,<1.35.0)"] -kafka = ["mypy-boto3-kafka (>=1.34.0,<1.35.0)"] -kafkaconnect = ["mypy-boto3-kafkaconnect (>=1.34.0,<1.35.0)"] -kendra = ["mypy-boto3-kendra (>=1.34.0,<1.35.0)"] -kendra-ranking = ["mypy-boto3-kendra-ranking (>=1.34.0,<1.35.0)"] -keyspaces = ["mypy-boto3-keyspaces (>=1.34.0,<1.35.0)"] -kinesis = ["mypy-boto3-kinesis (>=1.34.0,<1.35.0)"] -kinesis-video-archived-media = ["mypy-boto3-kinesis-video-archived-media (>=1.34.0,<1.35.0)"] -kinesis-video-media = ["mypy-boto3-kinesis-video-media (>=1.34.0,<1.35.0)"] -kinesis-video-signaling = ["mypy-boto3-kinesis-video-signaling (>=1.34.0,<1.35.0)"] -kinesis-video-webrtc-storage = ["mypy-boto3-kinesis-video-webrtc-storage (>=1.34.0,<1.35.0)"] -kinesisanalytics = ["mypy-boto3-kinesisanalytics (>=1.34.0,<1.35.0)"] -kinesisanalyticsv2 = ["mypy-boto3-kinesisanalyticsv2 (>=1.34.0,<1.35.0)"] -kinesisvideo = ["mypy-boto3-kinesisvideo (>=1.34.0,<1.35.0)"] -kms = ["mypy-boto3-kms (>=1.34.0,<1.35.0)"] -lakeformation = ["mypy-boto3-lakeformation (>=1.34.0,<1.35.0)"] -lambda = ["mypy-boto3-lambda (>=1.34.0,<1.35.0)"] -launch-wizard = ["mypy-boto3-launch-wizard (>=1.34.0,<1.35.0)"] -lex-models = ["mypy-boto3-lex-models (>=1.34.0,<1.35.0)"] -lex-runtime = ["mypy-boto3-lex-runtime (>=1.34.0,<1.35.0)"] -lexv2-models = ["mypy-boto3-lexv2-models (>=1.34.0,<1.35.0)"] -lexv2-runtime = ["mypy-boto3-lexv2-runtime (>=1.34.0,<1.35.0)"] -license-manager = ["mypy-boto3-license-manager (>=1.34.0,<1.35.0)"] -license-manager-linux-subscriptions = ["mypy-boto3-license-manager-linux-subscriptions (>=1.34.0,<1.35.0)"] -license-manager-user-subscriptions = ["mypy-boto3-license-manager-user-subscriptions (>=1.34.0,<1.35.0)"] -lightsail = ["mypy-boto3-lightsail (>=1.34.0,<1.35.0)"] -location = ["mypy-boto3-location (>=1.34.0,<1.35.0)"] -logs = ["mypy-boto3-logs (>=1.34.0,<1.35.0)"] -lookoutequipment = ["mypy-boto3-lookoutequipment (>=1.34.0,<1.35.0)"] -lookoutmetrics = ["mypy-boto3-lookoutmetrics (>=1.34.0,<1.35.0)"] -lookoutvision = ["mypy-boto3-lookoutvision (>=1.34.0,<1.35.0)"] -m2 = ["mypy-boto3-m2 (>=1.34.0,<1.35.0)"] -machinelearning = ["mypy-boto3-machinelearning (>=1.34.0,<1.35.0)"] -macie2 = ["mypy-boto3-macie2 (>=1.34.0,<1.35.0)"] -mailmanager = ["mypy-boto3-mailmanager (>=1.34.0,<1.35.0)"] -managedblockchain = ["mypy-boto3-managedblockchain (>=1.34.0,<1.35.0)"] -managedblockchain-query = ["mypy-boto3-managedblockchain-query (>=1.34.0,<1.35.0)"] -marketplace-agreement = ["mypy-boto3-marketplace-agreement (>=1.34.0,<1.35.0)"] -marketplace-catalog = ["mypy-boto3-marketplace-catalog (>=1.34.0,<1.35.0)"] -marketplace-deployment = ["mypy-boto3-marketplace-deployment (>=1.34.0,<1.35.0)"] -marketplace-entitlement = ["mypy-boto3-marketplace-entitlement (>=1.34.0,<1.35.0)"] -marketplacecommerceanalytics = ["mypy-boto3-marketplacecommerceanalytics (>=1.34.0,<1.35.0)"] -mediaconnect = ["mypy-boto3-mediaconnect (>=1.34.0,<1.35.0)"] -mediaconvert = ["mypy-boto3-mediaconvert (>=1.34.0,<1.35.0)"] -medialive = ["mypy-boto3-medialive (>=1.34.0,<1.35.0)"] -mediapackage = ["mypy-boto3-mediapackage (>=1.34.0,<1.35.0)"] -mediapackage-vod = ["mypy-boto3-mediapackage-vod (>=1.34.0,<1.35.0)"] -mediapackagev2 = ["mypy-boto3-mediapackagev2 (>=1.34.0,<1.35.0)"] -mediastore = ["mypy-boto3-mediastore (>=1.34.0,<1.35.0)"] -mediastore-data = ["mypy-boto3-mediastore-data (>=1.34.0,<1.35.0)"] -mediatailor = ["mypy-boto3-mediatailor (>=1.34.0,<1.35.0)"] -medical-imaging = ["mypy-boto3-medical-imaging (>=1.34.0,<1.35.0)"] -memorydb = ["mypy-boto3-memorydb (>=1.34.0,<1.35.0)"] -meteringmarketplace = ["mypy-boto3-meteringmarketplace (>=1.34.0,<1.35.0)"] -mgh = ["mypy-boto3-mgh (>=1.34.0,<1.35.0)"] -mgn = ["mypy-boto3-mgn (>=1.34.0,<1.35.0)"] -migration-hub-refactor-spaces = ["mypy-boto3-migration-hub-refactor-spaces (>=1.34.0,<1.35.0)"] -migrationhub-config = ["mypy-boto3-migrationhub-config (>=1.34.0,<1.35.0)"] -migrationhuborchestrator = ["mypy-boto3-migrationhuborchestrator (>=1.34.0,<1.35.0)"] -migrationhubstrategy = ["mypy-boto3-migrationhubstrategy (>=1.34.0,<1.35.0)"] -mobile = ["mypy-boto3-mobile (>=1.34.0,<1.35.0)"] -mq = ["mypy-boto3-mq (>=1.34.0,<1.35.0)"] -mturk = ["mypy-boto3-mturk (>=1.34.0,<1.35.0)"] -mwaa = ["mypy-boto3-mwaa (>=1.34.0,<1.35.0)"] -neptune = ["mypy-boto3-neptune (>=1.34.0,<1.35.0)"] -neptune-graph = ["mypy-boto3-neptune-graph (>=1.34.0,<1.35.0)"] -neptunedata = ["mypy-boto3-neptunedata (>=1.34.0,<1.35.0)"] -network-firewall = ["mypy-boto3-network-firewall (>=1.34.0,<1.35.0)"] -networkmanager = ["mypy-boto3-networkmanager (>=1.34.0,<1.35.0)"] -networkmonitor = ["mypy-boto3-networkmonitor (>=1.34.0,<1.35.0)"] -nimble = ["mypy-boto3-nimble (>=1.34.0,<1.35.0)"] -oam = ["mypy-boto3-oam (>=1.34.0,<1.35.0)"] -omics = ["mypy-boto3-omics (>=1.34.0,<1.35.0)"] -opensearch = ["mypy-boto3-opensearch (>=1.34.0,<1.35.0)"] -opensearchserverless = ["mypy-boto3-opensearchserverless (>=1.34.0,<1.35.0)"] -opsworks = ["mypy-boto3-opsworks (>=1.34.0,<1.35.0)"] -opsworkscm = ["mypy-boto3-opsworkscm (>=1.34.0,<1.35.0)"] -organizations = ["mypy-boto3-organizations (>=1.34.0,<1.35.0)"] -osis = ["mypy-boto3-osis (>=1.34.0,<1.35.0)"] -outposts = ["mypy-boto3-outposts (>=1.34.0,<1.35.0)"] -panorama = ["mypy-boto3-panorama (>=1.34.0,<1.35.0)"] -payment-cryptography = ["mypy-boto3-payment-cryptography (>=1.34.0,<1.35.0)"] -payment-cryptography-data = ["mypy-boto3-payment-cryptography-data (>=1.34.0,<1.35.0)"] -pca-connector-ad = ["mypy-boto3-pca-connector-ad (>=1.34.0,<1.35.0)"] -pca-connector-scep = ["mypy-boto3-pca-connector-scep (>=1.34.0,<1.35.0)"] -personalize = ["mypy-boto3-personalize (>=1.34.0,<1.35.0)"] -personalize-events = ["mypy-boto3-personalize-events (>=1.34.0,<1.35.0)"] -personalize-runtime = ["mypy-boto3-personalize-runtime (>=1.34.0,<1.35.0)"] -pi = ["mypy-boto3-pi (>=1.34.0,<1.35.0)"] -pinpoint = ["mypy-boto3-pinpoint (>=1.34.0,<1.35.0)"] -pinpoint-email = ["mypy-boto3-pinpoint-email (>=1.34.0,<1.35.0)"] -pinpoint-sms-voice = ["mypy-boto3-pinpoint-sms-voice (>=1.34.0,<1.35.0)"] -pinpoint-sms-voice-v2 = ["mypy-boto3-pinpoint-sms-voice-v2 (>=1.34.0,<1.35.0)"] -pipes = ["mypy-boto3-pipes (>=1.34.0,<1.35.0)"] -polly = ["mypy-boto3-polly (>=1.34.0,<1.35.0)"] -pricing = ["mypy-boto3-pricing (>=1.34.0,<1.35.0)"] -privatenetworks = ["mypy-boto3-privatenetworks (>=1.34.0,<1.35.0)"] -proton = ["mypy-boto3-proton (>=1.34.0,<1.35.0)"] -qbusiness = ["mypy-boto3-qbusiness (>=1.34.0,<1.35.0)"] -qconnect = ["mypy-boto3-qconnect (>=1.34.0,<1.35.0)"] -qldb = ["mypy-boto3-qldb (>=1.34.0,<1.35.0)"] -qldb-session = ["mypy-boto3-qldb-session (>=1.34.0,<1.35.0)"] -quicksight = ["mypy-boto3-quicksight (>=1.34.0,<1.35.0)"] -ram = ["mypy-boto3-ram (>=1.34.0,<1.35.0)"] -rbin = ["mypy-boto3-rbin (>=1.34.0,<1.35.0)"] -rds = ["mypy-boto3-rds (>=1.34.0,<1.35.0)"] -rds-data = ["mypy-boto3-rds-data (>=1.34.0,<1.35.0)"] -redshift = ["mypy-boto3-redshift (>=1.34.0,<1.35.0)"] -redshift-data = ["mypy-boto3-redshift-data (>=1.34.0,<1.35.0)"] -redshift-serverless = ["mypy-boto3-redshift-serverless (>=1.34.0,<1.35.0)"] -rekognition = ["mypy-boto3-rekognition (>=1.34.0,<1.35.0)"] -repostspace = ["mypy-boto3-repostspace (>=1.34.0,<1.35.0)"] -resiliencehub = ["mypy-boto3-resiliencehub (>=1.34.0,<1.35.0)"] -resource-explorer-2 = ["mypy-boto3-resource-explorer-2 (>=1.34.0,<1.35.0)"] -resource-groups = ["mypy-boto3-resource-groups (>=1.34.0,<1.35.0)"] -resourcegroupstaggingapi = ["mypy-boto3-resourcegroupstaggingapi (>=1.34.0,<1.35.0)"] -robomaker = ["mypy-boto3-robomaker (>=1.34.0,<1.35.0)"] -rolesanywhere = ["mypy-boto3-rolesanywhere (>=1.34.0,<1.35.0)"] -route53 = ["mypy-boto3-route53 (>=1.34.0,<1.35.0)"] -route53-recovery-cluster = ["mypy-boto3-route53-recovery-cluster (>=1.34.0,<1.35.0)"] -route53-recovery-control-config = ["mypy-boto3-route53-recovery-control-config (>=1.34.0,<1.35.0)"] -route53-recovery-readiness = ["mypy-boto3-route53-recovery-readiness (>=1.34.0,<1.35.0)"] -route53domains = ["mypy-boto3-route53domains (>=1.34.0,<1.35.0)"] -route53profiles = ["mypy-boto3-route53profiles (>=1.34.0,<1.35.0)"] -route53resolver = ["mypy-boto3-route53resolver (>=1.34.0,<1.35.0)"] -rum = ["mypy-boto3-rum (>=1.34.0,<1.35.0)"] -s3 = ["mypy-boto3-s3 (>=1.34.0,<1.35.0)"] -s3control = ["mypy-boto3-s3control (>=1.34.0,<1.35.0)"] -s3outposts = ["mypy-boto3-s3outposts (>=1.34.0,<1.35.0)"] -sagemaker = ["mypy-boto3-sagemaker (>=1.34.0,<1.35.0)"] -sagemaker-a2i-runtime = ["mypy-boto3-sagemaker-a2i-runtime (>=1.34.0,<1.35.0)"] -sagemaker-edge = ["mypy-boto3-sagemaker-edge (>=1.34.0,<1.35.0)"] -sagemaker-featurestore-runtime = ["mypy-boto3-sagemaker-featurestore-runtime (>=1.34.0,<1.35.0)"] -sagemaker-geospatial = ["mypy-boto3-sagemaker-geospatial (>=1.34.0,<1.35.0)"] -sagemaker-metrics = ["mypy-boto3-sagemaker-metrics (>=1.34.0,<1.35.0)"] -sagemaker-runtime = ["mypy-boto3-sagemaker-runtime (>=1.34.0,<1.35.0)"] -savingsplans = ["mypy-boto3-savingsplans (>=1.34.0,<1.35.0)"] -scheduler = ["mypy-boto3-scheduler (>=1.34.0,<1.35.0)"] -schemas = ["mypy-boto3-schemas (>=1.34.0,<1.35.0)"] -sdb = ["mypy-boto3-sdb (>=1.34.0,<1.35.0)"] -secretsmanager = ["mypy-boto3-secretsmanager (>=1.34.0,<1.35.0)"] -securityhub = ["mypy-boto3-securityhub (>=1.34.0,<1.35.0)"] -securitylake = ["mypy-boto3-securitylake (>=1.34.0,<1.35.0)"] -serverlessrepo = ["mypy-boto3-serverlessrepo (>=1.34.0,<1.35.0)"] -service-quotas = ["mypy-boto3-service-quotas (>=1.34.0,<1.35.0)"] -servicecatalog = ["mypy-boto3-servicecatalog (>=1.34.0,<1.35.0)"] -servicecatalog-appregistry = ["mypy-boto3-servicecatalog-appregistry (>=1.34.0,<1.35.0)"] -servicediscovery = ["mypy-boto3-servicediscovery (>=1.34.0,<1.35.0)"] -ses = ["mypy-boto3-ses (>=1.34.0,<1.35.0)"] -sesv2 = ["mypy-boto3-sesv2 (>=1.34.0,<1.35.0)"] -shield = ["mypy-boto3-shield (>=1.34.0,<1.35.0)"] -signer = ["mypy-boto3-signer (>=1.34.0,<1.35.0)"] -simspaceweaver = ["mypy-boto3-simspaceweaver (>=1.34.0,<1.35.0)"] -sms = ["mypy-boto3-sms (>=1.34.0,<1.35.0)"] -sms-voice = ["mypy-boto3-sms-voice (>=1.34.0,<1.35.0)"] -snow-device-management = ["mypy-boto3-snow-device-management (>=1.34.0,<1.35.0)"] -snowball = ["mypy-boto3-snowball (>=1.34.0,<1.35.0)"] -sns = ["mypy-boto3-sns (>=1.34.0,<1.35.0)"] -sqs = ["mypy-boto3-sqs (>=1.34.0,<1.35.0)"] -ssm = ["mypy-boto3-ssm (>=1.34.0,<1.35.0)"] -ssm-contacts = ["mypy-boto3-ssm-contacts (>=1.34.0,<1.35.0)"] -ssm-incidents = ["mypy-boto3-ssm-incidents (>=1.34.0,<1.35.0)"] -ssm-sap = ["mypy-boto3-ssm-sap (>=1.34.0,<1.35.0)"] -sso = ["mypy-boto3-sso (>=1.34.0,<1.35.0)"] -sso-admin = ["mypy-boto3-sso-admin (>=1.34.0,<1.35.0)"] -sso-oidc = ["mypy-boto3-sso-oidc (>=1.34.0,<1.35.0)"] -stepfunctions = ["mypy-boto3-stepfunctions (>=1.34.0,<1.35.0)"] -storagegateway = ["mypy-boto3-storagegateway (>=1.34.0,<1.35.0)"] -sts = ["mypy-boto3-sts (>=1.34.0,<1.35.0)"] -supplychain = ["mypy-boto3-supplychain (>=1.34.0,<1.35.0)"] -support = ["mypy-boto3-support (>=1.34.0,<1.35.0)"] -support-app = ["mypy-boto3-support-app (>=1.34.0,<1.35.0)"] -swf = ["mypy-boto3-swf (>=1.34.0,<1.35.0)"] -synthetics = ["mypy-boto3-synthetics (>=1.34.0,<1.35.0)"] -taxsettings = ["mypy-boto3-taxsettings (>=1.34.0,<1.35.0)"] -textract = ["mypy-boto3-textract (>=1.34.0,<1.35.0)"] -timestream-influxdb = ["mypy-boto3-timestream-influxdb (>=1.34.0,<1.35.0)"] -timestream-query = ["mypy-boto3-timestream-query (>=1.34.0,<1.35.0)"] -timestream-write = ["mypy-boto3-timestream-write (>=1.34.0,<1.35.0)"] -tnb = ["mypy-boto3-tnb (>=1.34.0,<1.35.0)"] -transcribe = ["mypy-boto3-transcribe (>=1.34.0,<1.35.0)"] -transfer = ["mypy-boto3-transfer (>=1.34.0,<1.35.0)"] -translate = ["mypy-boto3-translate (>=1.34.0,<1.35.0)"] -trustedadvisor = ["mypy-boto3-trustedadvisor (>=1.34.0,<1.35.0)"] -verifiedpermissions = ["mypy-boto3-verifiedpermissions (>=1.34.0,<1.35.0)"] -voice-id = ["mypy-boto3-voice-id (>=1.34.0,<1.35.0)"] -vpc-lattice = ["mypy-boto3-vpc-lattice (>=1.34.0,<1.35.0)"] -waf = ["mypy-boto3-waf (>=1.34.0,<1.35.0)"] -waf-regional = ["mypy-boto3-waf-regional (>=1.34.0,<1.35.0)"] -wafv2 = ["mypy-boto3-wafv2 (>=1.34.0,<1.35.0)"] -wellarchitected = ["mypy-boto3-wellarchitected (>=1.34.0,<1.35.0)"] -wisdom = ["mypy-boto3-wisdom (>=1.34.0,<1.35.0)"] -workdocs = ["mypy-boto3-workdocs (>=1.34.0,<1.35.0)"] -worklink = ["mypy-boto3-worklink (>=1.34.0,<1.35.0)"] -workmail = ["mypy-boto3-workmail (>=1.34.0,<1.35.0)"] -workmailmessageflow = ["mypy-boto3-workmailmessageflow (>=1.34.0,<1.35.0)"] -workspaces = ["mypy-boto3-workspaces (>=1.34.0,<1.35.0)"] -workspaces-thin-client = ["mypy-boto3-workspaces-thin-client (>=1.34.0,<1.35.0)"] -workspaces-web = ["mypy-boto3-workspaces-web (>=1.34.0,<1.35.0)"] -xray = ["mypy-boto3-xray (>=1.34.0,<1.35.0)"] +accessanalyzer = ["mypy-boto3-accessanalyzer (>=1.35.0,<1.36.0)"] +account = ["mypy-boto3-account (>=1.35.0,<1.36.0)"] +acm = ["mypy-boto3-acm (>=1.35.0,<1.36.0)"] +acm-pca = ["mypy-boto3-acm-pca (>=1.35.0,<1.36.0)"] +all = ["mypy-boto3-accessanalyzer (>=1.35.0,<1.36.0)", "mypy-boto3-account (>=1.35.0,<1.36.0)", "mypy-boto3-acm (>=1.35.0,<1.36.0)", "mypy-boto3-acm-pca (>=1.35.0,<1.36.0)", "mypy-boto3-amp (>=1.35.0,<1.36.0)", "mypy-boto3-amplify (>=1.35.0,<1.36.0)", "mypy-boto3-amplifybackend (>=1.35.0,<1.36.0)", "mypy-boto3-amplifyuibuilder (>=1.35.0,<1.36.0)", "mypy-boto3-apigateway (>=1.35.0,<1.36.0)", "mypy-boto3-apigatewaymanagementapi (>=1.35.0,<1.36.0)", "mypy-boto3-apigatewayv2 (>=1.35.0,<1.36.0)", "mypy-boto3-appconfig (>=1.35.0,<1.36.0)", "mypy-boto3-appconfigdata (>=1.35.0,<1.36.0)", "mypy-boto3-appfabric (>=1.35.0,<1.36.0)", "mypy-boto3-appflow (>=1.35.0,<1.36.0)", "mypy-boto3-appintegrations (>=1.35.0,<1.36.0)", "mypy-boto3-application-autoscaling (>=1.35.0,<1.36.0)", "mypy-boto3-application-insights (>=1.35.0,<1.36.0)", "mypy-boto3-application-signals (>=1.35.0,<1.36.0)", "mypy-boto3-applicationcostprofiler (>=1.35.0,<1.36.0)", "mypy-boto3-appmesh (>=1.35.0,<1.36.0)", "mypy-boto3-apprunner (>=1.35.0,<1.36.0)", "mypy-boto3-appstream (>=1.35.0,<1.36.0)", "mypy-boto3-appsync (>=1.35.0,<1.36.0)", "mypy-boto3-apptest (>=1.35.0,<1.36.0)", "mypy-boto3-arc-zonal-shift (>=1.35.0,<1.36.0)", "mypy-boto3-artifact (>=1.35.0,<1.36.0)", "mypy-boto3-athena (>=1.35.0,<1.36.0)", "mypy-boto3-auditmanager (>=1.35.0,<1.36.0)", "mypy-boto3-autoscaling (>=1.35.0,<1.36.0)", "mypy-boto3-autoscaling-plans (>=1.35.0,<1.36.0)", "mypy-boto3-b2bi (>=1.35.0,<1.36.0)", "mypy-boto3-backup (>=1.35.0,<1.36.0)", "mypy-boto3-backup-gateway (>=1.35.0,<1.36.0)", "mypy-boto3-batch (>=1.35.0,<1.36.0)", "mypy-boto3-bcm-data-exports (>=1.35.0,<1.36.0)", "mypy-boto3-bedrock (>=1.35.0,<1.36.0)", "mypy-boto3-bedrock-agent (>=1.35.0,<1.36.0)", "mypy-boto3-bedrock-agent-runtime (>=1.35.0,<1.36.0)", "mypy-boto3-bedrock-runtime (>=1.35.0,<1.36.0)", "mypy-boto3-billingconductor (>=1.35.0,<1.36.0)", "mypy-boto3-braket (>=1.35.0,<1.36.0)", "mypy-boto3-budgets (>=1.35.0,<1.36.0)", "mypy-boto3-ce (>=1.35.0,<1.36.0)", "mypy-boto3-chatbot (>=1.35.0,<1.36.0)", "mypy-boto3-chime (>=1.35.0,<1.36.0)", "mypy-boto3-chime-sdk-identity (>=1.35.0,<1.36.0)", "mypy-boto3-chime-sdk-media-pipelines (>=1.35.0,<1.36.0)", "mypy-boto3-chime-sdk-meetings (>=1.35.0,<1.36.0)", "mypy-boto3-chime-sdk-messaging (>=1.35.0,<1.36.0)", "mypy-boto3-chime-sdk-voice (>=1.35.0,<1.36.0)", "mypy-boto3-cleanrooms (>=1.35.0,<1.36.0)", "mypy-boto3-cleanroomsml (>=1.35.0,<1.36.0)", "mypy-boto3-cloud9 (>=1.35.0,<1.36.0)", "mypy-boto3-cloudcontrol (>=1.35.0,<1.36.0)", "mypy-boto3-clouddirectory (>=1.35.0,<1.36.0)", "mypy-boto3-cloudformation (>=1.35.0,<1.36.0)", "mypy-boto3-cloudfront (>=1.35.0,<1.36.0)", "mypy-boto3-cloudfront-keyvaluestore (>=1.35.0,<1.36.0)", "mypy-boto3-cloudhsm (>=1.35.0,<1.36.0)", "mypy-boto3-cloudhsmv2 (>=1.35.0,<1.36.0)", "mypy-boto3-cloudsearch (>=1.35.0,<1.36.0)", "mypy-boto3-cloudsearchdomain (>=1.35.0,<1.36.0)", "mypy-boto3-cloudtrail (>=1.35.0,<1.36.0)", "mypy-boto3-cloudtrail-data (>=1.35.0,<1.36.0)", "mypy-boto3-cloudwatch (>=1.35.0,<1.36.0)", "mypy-boto3-codeartifact (>=1.35.0,<1.36.0)", "mypy-boto3-codebuild (>=1.35.0,<1.36.0)", "mypy-boto3-codecatalyst (>=1.35.0,<1.36.0)", "mypy-boto3-codecommit (>=1.35.0,<1.36.0)", "mypy-boto3-codeconnections (>=1.35.0,<1.36.0)", "mypy-boto3-codedeploy (>=1.35.0,<1.36.0)", "mypy-boto3-codeguru-reviewer (>=1.35.0,<1.36.0)", "mypy-boto3-codeguru-security (>=1.35.0,<1.36.0)", "mypy-boto3-codeguruprofiler (>=1.35.0,<1.36.0)", "mypy-boto3-codepipeline (>=1.35.0,<1.36.0)", "mypy-boto3-codestar-connections (>=1.35.0,<1.36.0)", "mypy-boto3-codestar-notifications (>=1.35.0,<1.36.0)", "mypy-boto3-cognito-identity (>=1.35.0,<1.36.0)", "mypy-boto3-cognito-idp (>=1.35.0,<1.36.0)", "mypy-boto3-cognito-sync (>=1.35.0,<1.36.0)", "mypy-boto3-comprehend (>=1.35.0,<1.36.0)", "mypy-boto3-comprehendmedical (>=1.35.0,<1.36.0)", "mypy-boto3-compute-optimizer (>=1.35.0,<1.36.0)", "mypy-boto3-config (>=1.35.0,<1.36.0)", "mypy-boto3-connect (>=1.35.0,<1.36.0)", "mypy-boto3-connect-contact-lens (>=1.35.0,<1.36.0)", "mypy-boto3-connectcampaigns (>=1.35.0,<1.36.0)", "mypy-boto3-connectcases (>=1.35.0,<1.36.0)", "mypy-boto3-connectparticipant (>=1.35.0,<1.36.0)", "mypy-boto3-controlcatalog (>=1.35.0,<1.36.0)", "mypy-boto3-controltower (>=1.35.0,<1.36.0)", "mypy-boto3-cost-optimization-hub (>=1.35.0,<1.36.0)", "mypy-boto3-cur (>=1.35.0,<1.36.0)", "mypy-boto3-customer-profiles (>=1.35.0,<1.36.0)", "mypy-boto3-databrew (>=1.35.0,<1.36.0)", "mypy-boto3-dataexchange (>=1.35.0,<1.36.0)", "mypy-boto3-datapipeline (>=1.35.0,<1.36.0)", "mypy-boto3-datasync (>=1.35.0,<1.36.0)", "mypy-boto3-datazone (>=1.35.0,<1.36.0)", "mypy-boto3-dax (>=1.35.0,<1.36.0)", "mypy-boto3-deadline (>=1.35.0,<1.36.0)", "mypy-boto3-detective (>=1.35.0,<1.36.0)", "mypy-boto3-devicefarm (>=1.35.0,<1.36.0)", "mypy-boto3-devops-guru (>=1.35.0,<1.36.0)", "mypy-boto3-directconnect (>=1.35.0,<1.36.0)", "mypy-boto3-discovery (>=1.35.0,<1.36.0)", "mypy-boto3-dlm (>=1.35.0,<1.36.0)", "mypy-boto3-dms (>=1.35.0,<1.36.0)", "mypy-boto3-docdb (>=1.35.0,<1.36.0)", "mypy-boto3-docdb-elastic (>=1.35.0,<1.36.0)", "mypy-boto3-drs (>=1.35.0,<1.36.0)", "mypy-boto3-ds (>=1.35.0,<1.36.0)", "mypy-boto3-dynamodb (>=1.35.0,<1.36.0)", "mypy-boto3-dynamodbstreams (>=1.35.0,<1.36.0)", "mypy-boto3-ebs (>=1.35.0,<1.36.0)", "mypy-boto3-ec2 (>=1.35.0,<1.36.0)", "mypy-boto3-ec2-instance-connect (>=1.35.0,<1.36.0)", "mypy-boto3-ecr (>=1.35.0,<1.36.0)", "mypy-boto3-ecr-public (>=1.35.0,<1.36.0)", "mypy-boto3-ecs (>=1.35.0,<1.36.0)", "mypy-boto3-efs (>=1.35.0,<1.36.0)", "mypy-boto3-eks (>=1.35.0,<1.36.0)", "mypy-boto3-eks-auth (>=1.35.0,<1.36.0)", "mypy-boto3-elastic-inference (>=1.35.0,<1.36.0)", "mypy-boto3-elasticache (>=1.35.0,<1.36.0)", "mypy-boto3-elasticbeanstalk (>=1.35.0,<1.36.0)", "mypy-boto3-elastictranscoder (>=1.35.0,<1.36.0)", "mypy-boto3-elb (>=1.35.0,<1.36.0)", "mypy-boto3-elbv2 (>=1.35.0,<1.36.0)", "mypy-boto3-emr (>=1.35.0,<1.36.0)", "mypy-boto3-emr-containers (>=1.35.0,<1.36.0)", "mypy-boto3-emr-serverless (>=1.35.0,<1.36.0)", "mypy-boto3-entityresolution (>=1.35.0,<1.36.0)", "mypy-boto3-es (>=1.35.0,<1.36.0)", "mypy-boto3-events (>=1.35.0,<1.36.0)", "mypy-boto3-evidently (>=1.35.0,<1.36.0)", "mypy-boto3-finspace (>=1.35.0,<1.36.0)", "mypy-boto3-finspace-data (>=1.35.0,<1.36.0)", "mypy-boto3-firehose (>=1.35.0,<1.36.0)", "mypy-boto3-fis (>=1.35.0,<1.36.0)", "mypy-boto3-fms (>=1.35.0,<1.36.0)", "mypy-boto3-forecast (>=1.35.0,<1.36.0)", "mypy-boto3-forecastquery (>=1.35.0,<1.36.0)", "mypy-boto3-frauddetector (>=1.35.0,<1.36.0)", "mypy-boto3-freetier (>=1.35.0,<1.36.0)", "mypy-boto3-fsx (>=1.35.0,<1.36.0)", "mypy-boto3-gamelift (>=1.35.0,<1.36.0)", "mypy-boto3-glacier (>=1.35.0,<1.36.0)", "mypy-boto3-globalaccelerator (>=1.35.0,<1.36.0)", "mypy-boto3-glue (>=1.35.0,<1.36.0)", "mypy-boto3-grafana (>=1.35.0,<1.36.0)", "mypy-boto3-greengrass (>=1.35.0,<1.36.0)", "mypy-boto3-greengrassv2 (>=1.35.0,<1.36.0)", "mypy-boto3-groundstation (>=1.35.0,<1.36.0)", "mypy-boto3-guardduty (>=1.35.0,<1.36.0)", "mypy-boto3-health (>=1.35.0,<1.36.0)", "mypy-boto3-healthlake (>=1.35.0,<1.36.0)", "mypy-boto3-iam (>=1.35.0,<1.36.0)", "mypy-boto3-identitystore (>=1.35.0,<1.36.0)", "mypy-boto3-imagebuilder (>=1.35.0,<1.36.0)", "mypy-boto3-importexport (>=1.35.0,<1.36.0)", "mypy-boto3-inspector (>=1.35.0,<1.36.0)", "mypy-boto3-inspector-scan (>=1.35.0,<1.36.0)", "mypy-boto3-inspector2 (>=1.35.0,<1.36.0)", "mypy-boto3-internetmonitor (>=1.35.0,<1.36.0)", "mypy-boto3-iot (>=1.35.0,<1.36.0)", "mypy-boto3-iot-data (>=1.35.0,<1.36.0)", "mypy-boto3-iot-jobs-data (>=1.35.0,<1.36.0)", "mypy-boto3-iot1click-devices (>=1.35.0,<1.36.0)", "mypy-boto3-iot1click-projects (>=1.35.0,<1.36.0)", "mypy-boto3-iotanalytics (>=1.35.0,<1.36.0)", "mypy-boto3-iotdeviceadvisor (>=1.35.0,<1.36.0)", "mypy-boto3-iotevents (>=1.35.0,<1.36.0)", "mypy-boto3-iotevents-data (>=1.35.0,<1.36.0)", "mypy-boto3-iotfleethub (>=1.35.0,<1.36.0)", "mypy-boto3-iotfleetwise (>=1.35.0,<1.36.0)", "mypy-boto3-iotsecuretunneling (>=1.35.0,<1.36.0)", "mypy-boto3-iotsitewise (>=1.35.0,<1.36.0)", "mypy-boto3-iotthingsgraph (>=1.35.0,<1.36.0)", "mypy-boto3-iottwinmaker (>=1.35.0,<1.36.0)", "mypy-boto3-iotwireless (>=1.35.0,<1.36.0)", "mypy-boto3-ivs (>=1.35.0,<1.36.0)", "mypy-boto3-ivs-realtime (>=1.35.0,<1.36.0)", "mypy-boto3-ivschat (>=1.35.0,<1.36.0)", "mypy-boto3-kafka (>=1.35.0,<1.36.0)", "mypy-boto3-kafkaconnect (>=1.35.0,<1.36.0)", "mypy-boto3-kendra (>=1.35.0,<1.36.0)", "mypy-boto3-kendra-ranking (>=1.35.0,<1.36.0)", "mypy-boto3-keyspaces (>=1.35.0,<1.36.0)", "mypy-boto3-kinesis (>=1.35.0,<1.36.0)", "mypy-boto3-kinesis-video-archived-media (>=1.35.0,<1.36.0)", "mypy-boto3-kinesis-video-media (>=1.35.0,<1.36.0)", "mypy-boto3-kinesis-video-signaling (>=1.35.0,<1.36.0)", "mypy-boto3-kinesis-video-webrtc-storage (>=1.35.0,<1.36.0)", "mypy-boto3-kinesisanalytics (>=1.35.0,<1.36.0)", "mypy-boto3-kinesisanalyticsv2 (>=1.35.0,<1.36.0)", "mypy-boto3-kinesisvideo (>=1.35.0,<1.36.0)", "mypy-boto3-kms (>=1.35.0,<1.36.0)", "mypy-boto3-lakeformation (>=1.35.0,<1.36.0)", "mypy-boto3-lambda (>=1.35.0,<1.36.0)", "mypy-boto3-launch-wizard (>=1.35.0,<1.36.0)", "mypy-boto3-lex-models (>=1.35.0,<1.36.0)", "mypy-boto3-lex-runtime (>=1.35.0,<1.36.0)", "mypy-boto3-lexv2-models (>=1.35.0,<1.36.0)", "mypy-boto3-lexv2-runtime (>=1.35.0,<1.36.0)", "mypy-boto3-license-manager (>=1.35.0,<1.36.0)", "mypy-boto3-license-manager-linux-subscriptions (>=1.35.0,<1.36.0)", "mypy-boto3-license-manager-user-subscriptions (>=1.35.0,<1.36.0)", "mypy-boto3-lightsail (>=1.35.0,<1.36.0)", "mypy-boto3-location (>=1.35.0,<1.36.0)", "mypy-boto3-logs (>=1.35.0,<1.36.0)", "mypy-boto3-lookoutequipment (>=1.35.0,<1.36.0)", "mypy-boto3-lookoutmetrics (>=1.35.0,<1.36.0)", "mypy-boto3-lookoutvision (>=1.35.0,<1.36.0)", "mypy-boto3-m2 (>=1.35.0,<1.36.0)", "mypy-boto3-machinelearning (>=1.35.0,<1.36.0)", "mypy-boto3-macie2 (>=1.35.0,<1.36.0)", "mypy-boto3-mailmanager (>=1.35.0,<1.36.0)", "mypy-boto3-managedblockchain (>=1.35.0,<1.36.0)", "mypy-boto3-managedblockchain-query (>=1.35.0,<1.36.0)", "mypy-boto3-marketplace-agreement (>=1.35.0,<1.36.0)", "mypy-boto3-marketplace-catalog (>=1.35.0,<1.36.0)", "mypy-boto3-marketplace-deployment (>=1.35.0,<1.36.0)", "mypy-boto3-marketplace-entitlement (>=1.35.0,<1.36.0)", "mypy-boto3-marketplacecommerceanalytics (>=1.35.0,<1.36.0)", "mypy-boto3-mediaconnect (>=1.35.0,<1.36.0)", "mypy-boto3-mediaconvert (>=1.35.0,<1.36.0)", "mypy-boto3-medialive (>=1.35.0,<1.36.0)", "mypy-boto3-mediapackage (>=1.35.0,<1.36.0)", "mypy-boto3-mediapackage-vod (>=1.35.0,<1.36.0)", "mypy-boto3-mediapackagev2 (>=1.35.0,<1.36.0)", "mypy-boto3-mediastore (>=1.35.0,<1.36.0)", "mypy-boto3-mediastore-data (>=1.35.0,<1.36.0)", "mypy-boto3-mediatailor (>=1.35.0,<1.36.0)", "mypy-boto3-medical-imaging (>=1.35.0,<1.36.0)", "mypy-boto3-memorydb (>=1.35.0,<1.36.0)", "mypy-boto3-meteringmarketplace (>=1.35.0,<1.36.0)", "mypy-boto3-mgh (>=1.35.0,<1.36.0)", "mypy-boto3-mgn (>=1.35.0,<1.36.0)", "mypy-boto3-migration-hub-refactor-spaces (>=1.35.0,<1.36.0)", "mypy-boto3-migrationhub-config (>=1.35.0,<1.36.0)", "mypy-boto3-migrationhuborchestrator (>=1.35.0,<1.36.0)", "mypy-boto3-migrationhubstrategy (>=1.35.0,<1.36.0)", "mypy-boto3-mq (>=1.35.0,<1.36.0)", "mypy-boto3-mturk (>=1.35.0,<1.36.0)", "mypy-boto3-mwaa (>=1.35.0,<1.36.0)", "mypy-boto3-neptune (>=1.35.0,<1.36.0)", "mypy-boto3-neptune-graph (>=1.35.0,<1.36.0)", "mypy-boto3-neptunedata (>=1.35.0,<1.36.0)", "mypy-boto3-network-firewall (>=1.35.0,<1.36.0)", "mypy-boto3-networkmanager (>=1.35.0,<1.36.0)", "mypy-boto3-networkmonitor (>=1.35.0,<1.36.0)", "mypy-boto3-nimble (>=1.35.0,<1.36.0)", "mypy-boto3-oam (>=1.35.0,<1.36.0)", "mypy-boto3-omics (>=1.35.0,<1.36.0)", "mypy-boto3-opensearch (>=1.35.0,<1.36.0)", "mypy-boto3-opensearchserverless (>=1.35.0,<1.36.0)", "mypy-boto3-opsworks (>=1.35.0,<1.36.0)", "mypy-boto3-opsworkscm (>=1.35.0,<1.36.0)", "mypy-boto3-organizations (>=1.35.0,<1.36.0)", "mypy-boto3-osis (>=1.35.0,<1.36.0)", "mypy-boto3-outposts (>=1.35.0,<1.36.0)", "mypy-boto3-panorama (>=1.35.0,<1.36.0)", "mypy-boto3-payment-cryptography (>=1.35.0,<1.36.0)", "mypy-boto3-payment-cryptography-data (>=1.35.0,<1.36.0)", "mypy-boto3-pca-connector-ad (>=1.35.0,<1.36.0)", "mypy-boto3-pca-connector-scep (>=1.35.0,<1.36.0)", "mypy-boto3-pcs (>=1.35.0,<1.36.0)", "mypy-boto3-personalize (>=1.35.0,<1.36.0)", "mypy-boto3-personalize-events (>=1.35.0,<1.36.0)", "mypy-boto3-personalize-runtime (>=1.35.0,<1.36.0)", "mypy-boto3-pi (>=1.35.0,<1.36.0)", "mypy-boto3-pinpoint (>=1.35.0,<1.36.0)", "mypy-boto3-pinpoint-email (>=1.35.0,<1.36.0)", "mypy-boto3-pinpoint-sms-voice (>=1.35.0,<1.36.0)", "mypy-boto3-pinpoint-sms-voice-v2 (>=1.35.0,<1.36.0)", "mypy-boto3-pipes (>=1.35.0,<1.36.0)", "mypy-boto3-polly (>=1.35.0,<1.36.0)", "mypy-boto3-pricing (>=1.35.0,<1.36.0)", "mypy-boto3-privatenetworks (>=1.35.0,<1.36.0)", "mypy-boto3-proton (>=1.35.0,<1.36.0)", "mypy-boto3-qapps (>=1.35.0,<1.36.0)", "mypy-boto3-qbusiness (>=1.35.0,<1.36.0)", "mypy-boto3-qconnect (>=1.35.0,<1.36.0)", "mypy-boto3-qldb (>=1.35.0,<1.36.0)", "mypy-boto3-qldb-session (>=1.35.0,<1.36.0)", "mypy-boto3-quicksight (>=1.35.0,<1.36.0)", "mypy-boto3-ram (>=1.35.0,<1.36.0)", "mypy-boto3-rbin (>=1.35.0,<1.36.0)", "mypy-boto3-rds (>=1.35.0,<1.36.0)", "mypy-boto3-rds-data (>=1.35.0,<1.36.0)", "mypy-boto3-redshift (>=1.35.0,<1.36.0)", "mypy-boto3-redshift-data (>=1.35.0,<1.36.0)", "mypy-boto3-redshift-serverless (>=1.35.0,<1.36.0)", "mypy-boto3-rekognition (>=1.35.0,<1.36.0)", "mypy-boto3-repostspace (>=1.35.0,<1.36.0)", "mypy-boto3-resiliencehub (>=1.35.0,<1.36.0)", "mypy-boto3-resource-explorer-2 (>=1.35.0,<1.36.0)", "mypy-boto3-resource-groups (>=1.35.0,<1.36.0)", "mypy-boto3-resourcegroupstaggingapi (>=1.35.0,<1.36.0)", "mypy-boto3-robomaker (>=1.35.0,<1.36.0)", "mypy-boto3-rolesanywhere (>=1.35.0,<1.36.0)", "mypy-boto3-route53 (>=1.35.0,<1.36.0)", "mypy-boto3-route53-recovery-cluster (>=1.35.0,<1.36.0)", "mypy-boto3-route53-recovery-control-config (>=1.35.0,<1.36.0)", "mypy-boto3-route53-recovery-readiness (>=1.35.0,<1.36.0)", "mypy-boto3-route53domains (>=1.35.0,<1.36.0)", "mypy-boto3-route53profiles (>=1.35.0,<1.36.0)", "mypy-boto3-route53resolver (>=1.35.0,<1.36.0)", "mypy-boto3-rum (>=1.35.0,<1.36.0)", "mypy-boto3-s3 (>=1.35.0,<1.36.0)", "mypy-boto3-s3control (>=1.35.0,<1.36.0)", "mypy-boto3-s3outposts (>=1.35.0,<1.36.0)", "mypy-boto3-sagemaker (>=1.35.0,<1.36.0)", "mypy-boto3-sagemaker-a2i-runtime (>=1.35.0,<1.36.0)", "mypy-boto3-sagemaker-edge (>=1.35.0,<1.36.0)", "mypy-boto3-sagemaker-featurestore-runtime (>=1.35.0,<1.36.0)", "mypy-boto3-sagemaker-geospatial (>=1.35.0,<1.36.0)", "mypy-boto3-sagemaker-metrics (>=1.35.0,<1.36.0)", "mypy-boto3-sagemaker-runtime (>=1.35.0,<1.36.0)", "mypy-boto3-savingsplans (>=1.35.0,<1.36.0)", "mypy-boto3-scheduler (>=1.35.0,<1.36.0)", "mypy-boto3-schemas (>=1.35.0,<1.36.0)", "mypy-boto3-sdb (>=1.35.0,<1.36.0)", "mypy-boto3-secretsmanager (>=1.35.0,<1.36.0)", "mypy-boto3-securityhub (>=1.35.0,<1.36.0)", "mypy-boto3-securitylake (>=1.35.0,<1.36.0)", "mypy-boto3-serverlessrepo (>=1.35.0,<1.36.0)", "mypy-boto3-service-quotas (>=1.35.0,<1.36.0)", "mypy-boto3-servicecatalog (>=1.35.0,<1.36.0)", "mypy-boto3-servicecatalog-appregistry (>=1.35.0,<1.36.0)", "mypy-boto3-servicediscovery (>=1.35.0,<1.36.0)", "mypy-boto3-ses (>=1.35.0,<1.36.0)", "mypy-boto3-sesv2 (>=1.35.0,<1.36.0)", "mypy-boto3-shield (>=1.35.0,<1.36.0)", "mypy-boto3-signer (>=1.35.0,<1.36.0)", "mypy-boto3-simspaceweaver (>=1.35.0,<1.36.0)", "mypy-boto3-sms (>=1.35.0,<1.36.0)", "mypy-boto3-sms-voice (>=1.35.0,<1.36.0)", "mypy-boto3-snow-device-management (>=1.35.0,<1.36.0)", "mypy-boto3-snowball (>=1.35.0,<1.36.0)", "mypy-boto3-sns (>=1.35.0,<1.36.0)", "mypy-boto3-sqs (>=1.35.0,<1.36.0)", "mypy-boto3-ssm (>=1.35.0,<1.36.0)", "mypy-boto3-ssm-contacts (>=1.35.0,<1.36.0)", "mypy-boto3-ssm-incidents (>=1.35.0,<1.36.0)", "mypy-boto3-ssm-quicksetup (>=1.35.0,<1.36.0)", "mypy-boto3-ssm-sap (>=1.35.0,<1.36.0)", "mypy-boto3-sso (>=1.35.0,<1.36.0)", "mypy-boto3-sso-admin (>=1.35.0,<1.36.0)", "mypy-boto3-sso-oidc (>=1.35.0,<1.36.0)", "mypy-boto3-stepfunctions (>=1.35.0,<1.36.0)", "mypy-boto3-storagegateway (>=1.35.0,<1.36.0)", "mypy-boto3-sts (>=1.35.0,<1.36.0)", "mypy-boto3-supplychain (>=1.35.0,<1.36.0)", "mypy-boto3-support (>=1.35.0,<1.36.0)", "mypy-boto3-support-app (>=1.35.0,<1.36.0)", "mypy-boto3-swf (>=1.35.0,<1.36.0)", "mypy-boto3-synthetics (>=1.35.0,<1.36.0)", "mypy-boto3-taxsettings (>=1.35.0,<1.36.0)", "mypy-boto3-textract (>=1.35.0,<1.36.0)", "mypy-boto3-timestream-influxdb (>=1.35.0,<1.36.0)", "mypy-boto3-timestream-query (>=1.35.0,<1.36.0)", "mypy-boto3-timestream-write (>=1.35.0,<1.36.0)", "mypy-boto3-tnb (>=1.35.0,<1.36.0)", "mypy-boto3-transcribe (>=1.35.0,<1.36.0)", "mypy-boto3-transfer (>=1.35.0,<1.36.0)", "mypy-boto3-translate (>=1.35.0,<1.36.0)", "mypy-boto3-trustedadvisor (>=1.35.0,<1.36.0)", "mypy-boto3-verifiedpermissions (>=1.35.0,<1.36.0)", "mypy-boto3-voice-id (>=1.35.0,<1.36.0)", "mypy-boto3-vpc-lattice (>=1.35.0,<1.36.0)", "mypy-boto3-waf (>=1.35.0,<1.36.0)", "mypy-boto3-waf-regional (>=1.35.0,<1.36.0)", "mypy-boto3-wafv2 (>=1.35.0,<1.36.0)", "mypy-boto3-wellarchitected (>=1.35.0,<1.36.0)", "mypy-boto3-wisdom (>=1.35.0,<1.36.0)", "mypy-boto3-workdocs (>=1.35.0,<1.36.0)", "mypy-boto3-worklink (>=1.35.0,<1.36.0)", "mypy-boto3-workmail (>=1.35.0,<1.36.0)", "mypy-boto3-workmailmessageflow (>=1.35.0,<1.36.0)", "mypy-boto3-workspaces (>=1.35.0,<1.36.0)", "mypy-boto3-workspaces-thin-client (>=1.35.0,<1.36.0)", "mypy-boto3-workspaces-web (>=1.35.0,<1.36.0)", "mypy-boto3-xray (>=1.35.0,<1.36.0)"] +amp = ["mypy-boto3-amp (>=1.35.0,<1.36.0)"] +amplify = ["mypy-boto3-amplify (>=1.35.0,<1.36.0)"] +amplifybackend = ["mypy-boto3-amplifybackend (>=1.35.0,<1.36.0)"] +amplifyuibuilder = ["mypy-boto3-amplifyuibuilder (>=1.35.0,<1.36.0)"] +apigateway = ["mypy-boto3-apigateway (>=1.35.0,<1.36.0)"] +apigatewaymanagementapi = ["mypy-boto3-apigatewaymanagementapi (>=1.35.0,<1.36.0)"] +apigatewayv2 = ["mypy-boto3-apigatewayv2 (>=1.35.0,<1.36.0)"] +appconfig = ["mypy-boto3-appconfig (>=1.35.0,<1.36.0)"] +appconfigdata = ["mypy-boto3-appconfigdata (>=1.35.0,<1.36.0)"] +appfabric = ["mypy-boto3-appfabric (>=1.35.0,<1.36.0)"] +appflow = ["mypy-boto3-appflow (>=1.35.0,<1.36.0)"] +appintegrations = ["mypy-boto3-appintegrations (>=1.35.0,<1.36.0)"] +application-autoscaling = ["mypy-boto3-application-autoscaling (>=1.35.0,<1.36.0)"] +application-insights = ["mypy-boto3-application-insights (>=1.35.0,<1.36.0)"] +application-signals = ["mypy-boto3-application-signals (>=1.35.0,<1.36.0)"] +applicationcostprofiler = ["mypy-boto3-applicationcostprofiler (>=1.35.0,<1.36.0)"] +appmesh = ["mypy-boto3-appmesh (>=1.35.0,<1.36.0)"] +apprunner = ["mypy-boto3-apprunner (>=1.35.0,<1.36.0)"] +appstream = ["mypy-boto3-appstream (>=1.35.0,<1.36.0)"] +appsync = ["mypy-boto3-appsync (>=1.35.0,<1.36.0)"] +apptest = ["mypy-boto3-apptest (>=1.35.0,<1.36.0)"] +arc-zonal-shift = ["mypy-boto3-arc-zonal-shift (>=1.35.0,<1.36.0)"] +artifact = ["mypy-boto3-artifact (>=1.35.0,<1.36.0)"] +athena = ["mypy-boto3-athena (>=1.35.0,<1.36.0)"] +auditmanager = ["mypy-boto3-auditmanager (>=1.35.0,<1.36.0)"] +autoscaling = ["mypy-boto3-autoscaling (>=1.35.0,<1.36.0)"] +autoscaling-plans = ["mypy-boto3-autoscaling-plans (>=1.35.0,<1.36.0)"] +b2bi = ["mypy-boto3-b2bi (>=1.35.0,<1.36.0)"] +backup = ["mypy-boto3-backup (>=1.35.0,<1.36.0)"] +backup-gateway = ["mypy-boto3-backup-gateway (>=1.35.0,<1.36.0)"] +batch = ["mypy-boto3-batch (>=1.35.0,<1.36.0)"] +bcm-data-exports = ["mypy-boto3-bcm-data-exports (>=1.35.0,<1.36.0)"] +bedrock = ["mypy-boto3-bedrock (>=1.35.0,<1.36.0)"] +bedrock-agent = ["mypy-boto3-bedrock-agent (>=1.35.0,<1.36.0)"] +bedrock-agent-runtime = ["mypy-boto3-bedrock-agent-runtime (>=1.35.0,<1.36.0)"] +bedrock-runtime = ["mypy-boto3-bedrock-runtime (>=1.35.0,<1.36.0)"] +billingconductor = ["mypy-boto3-billingconductor (>=1.35.0,<1.36.0)"] +boto3 = ["boto3 (==1.35.16)", "botocore (==1.35.16)"] +braket = ["mypy-boto3-braket (>=1.35.0,<1.36.0)"] +budgets = ["mypy-boto3-budgets (>=1.35.0,<1.36.0)"] +ce = ["mypy-boto3-ce (>=1.35.0,<1.36.0)"] +chatbot = ["mypy-boto3-chatbot (>=1.35.0,<1.36.0)"] +chime = ["mypy-boto3-chime (>=1.35.0,<1.36.0)"] +chime-sdk-identity = ["mypy-boto3-chime-sdk-identity (>=1.35.0,<1.36.0)"] +chime-sdk-media-pipelines = ["mypy-boto3-chime-sdk-media-pipelines (>=1.35.0,<1.36.0)"] +chime-sdk-meetings = ["mypy-boto3-chime-sdk-meetings (>=1.35.0,<1.36.0)"] +chime-sdk-messaging = ["mypy-boto3-chime-sdk-messaging (>=1.35.0,<1.36.0)"] +chime-sdk-voice = ["mypy-boto3-chime-sdk-voice (>=1.35.0,<1.36.0)"] +cleanrooms = ["mypy-boto3-cleanrooms (>=1.35.0,<1.36.0)"] +cleanroomsml = ["mypy-boto3-cleanroomsml (>=1.35.0,<1.36.0)"] +cloud9 = ["mypy-boto3-cloud9 (>=1.35.0,<1.36.0)"] +cloudcontrol = ["mypy-boto3-cloudcontrol (>=1.35.0,<1.36.0)"] +clouddirectory = ["mypy-boto3-clouddirectory (>=1.35.0,<1.36.0)"] +cloudformation = ["mypy-boto3-cloudformation (>=1.35.0,<1.36.0)"] +cloudfront = ["mypy-boto3-cloudfront (>=1.35.0,<1.36.0)"] +cloudfront-keyvaluestore = ["mypy-boto3-cloudfront-keyvaluestore (>=1.35.0,<1.36.0)"] +cloudhsm = ["mypy-boto3-cloudhsm (>=1.35.0,<1.36.0)"] +cloudhsmv2 = ["mypy-boto3-cloudhsmv2 (>=1.35.0,<1.36.0)"] +cloudsearch = ["mypy-boto3-cloudsearch (>=1.35.0,<1.36.0)"] +cloudsearchdomain = ["mypy-boto3-cloudsearchdomain (>=1.35.0,<1.36.0)"] +cloudtrail = ["mypy-boto3-cloudtrail (>=1.35.0,<1.36.0)"] +cloudtrail-data = ["mypy-boto3-cloudtrail-data (>=1.35.0,<1.36.0)"] +cloudwatch = ["mypy-boto3-cloudwatch (>=1.35.0,<1.36.0)"] +codeartifact = ["mypy-boto3-codeartifact (>=1.35.0,<1.36.0)"] +codebuild = ["mypy-boto3-codebuild (>=1.35.0,<1.36.0)"] +codecatalyst = ["mypy-boto3-codecatalyst (>=1.35.0,<1.36.0)"] +codecommit = ["mypy-boto3-codecommit (>=1.35.0,<1.36.0)"] +codeconnections = ["mypy-boto3-codeconnections (>=1.35.0,<1.36.0)"] +codedeploy = ["mypy-boto3-codedeploy (>=1.35.0,<1.36.0)"] +codeguru-reviewer = ["mypy-boto3-codeguru-reviewer (>=1.35.0,<1.36.0)"] +codeguru-security = ["mypy-boto3-codeguru-security (>=1.35.0,<1.36.0)"] +codeguruprofiler = ["mypy-boto3-codeguruprofiler (>=1.35.0,<1.36.0)"] +codepipeline = ["mypy-boto3-codepipeline (>=1.35.0,<1.36.0)"] +codestar-connections = ["mypy-boto3-codestar-connections (>=1.35.0,<1.36.0)"] +codestar-notifications = ["mypy-boto3-codestar-notifications (>=1.35.0,<1.36.0)"] +cognito-identity = ["mypy-boto3-cognito-identity (>=1.35.0,<1.36.0)"] +cognito-idp = ["mypy-boto3-cognito-idp (>=1.35.0,<1.36.0)"] +cognito-sync = ["mypy-boto3-cognito-sync (>=1.35.0,<1.36.0)"] +comprehend = ["mypy-boto3-comprehend (>=1.35.0,<1.36.0)"] +comprehendmedical = ["mypy-boto3-comprehendmedical (>=1.35.0,<1.36.0)"] +compute-optimizer = ["mypy-boto3-compute-optimizer (>=1.35.0,<1.36.0)"] +config = ["mypy-boto3-config (>=1.35.0,<1.36.0)"] +connect = ["mypy-boto3-connect (>=1.35.0,<1.36.0)"] +connect-contact-lens = ["mypy-boto3-connect-contact-lens (>=1.35.0,<1.36.0)"] +connectcampaigns = ["mypy-boto3-connectcampaigns (>=1.35.0,<1.36.0)"] +connectcases = ["mypy-boto3-connectcases (>=1.35.0,<1.36.0)"] +connectparticipant = ["mypy-boto3-connectparticipant (>=1.35.0,<1.36.0)"] +controlcatalog = ["mypy-boto3-controlcatalog (>=1.35.0,<1.36.0)"] +controltower = ["mypy-boto3-controltower (>=1.35.0,<1.36.0)"] +cost-optimization-hub = ["mypy-boto3-cost-optimization-hub (>=1.35.0,<1.36.0)"] +cur = ["mypy-boto3-cur (>=1.35.0,<1.36.0)"] +customer-profiles = ["mypy-boto3-customer-profiles (>=1.35.0,<1.36.0)"] +databrew = ["mypy-boto3-databrew (>=1.35.0,<1.36.0)"] +dataexchange = ["mypy-boto3-dataexchange (>=1.35.0,<1.36.0)"] +datapipeline = ["mypy-boto3-datapipeline (>=1.35.0,<1.36.0)"] +datasync = ["mypy-boto3-datasync (>=1.35.0,<1.36.0)"] +datazone = ["mypy-boto3-datazone (>=1.35.0,<1.36.0)"] +dax = ["mypy-boto3-dax (>=1.35.0,<1.36.0)"] +deadline = ["mypy-boto3-deadline (>=1.35.0,<1.36.0)"] +detective = ["mypy-boto3-detective (>=1.35.0,<1.36.0)"] +devicefarm = ["mypy-boto3-devicefarm (>=1.35.0,<1.36.0)"] +devops-guru = ["mypy-boto3-devops-guru (>=1.35.0,<1.36.0)"] +directconnect = ["mypy-boto3-directconnect (>=1.35.0,<1.36.0)"] +discovery = ["mypy-boto3-discovery (>=1.35.0,<1.36.0)"] +dlm = ["mypy-boto3-dlm (>=1.35.0,<1.36.0)"] +dms = ["mypy-boto3-dms (>=1.35.0,<1.36.0)"] +docdb = ["mypy-boto3-docdb (>=1.35.0,<1.36.0)"] +docdb-elastic = ["mypy-boto3-docdb-elastic (>=1.35.0,<1.36.0)"] +drs = ["mypy-boto3-drs (>=1.35.0,<1.36.0)"] +ds = ["mypy-boto3-ds (>=1.35.0,<1.36.0)"] +dynamodb = ["mypy-boto3-dynamodb (>=1.35.0,<1.36.0)"] +dynamodbstreams = ["mypy-boto3-dynamodbstreams (>=1.35.0,<1.36.0)"] +ebs = ["mypy-boto3-ebs (>=1.35.0,<1.36.0)"] +ec2 = ["mypy-boto3-ec2 (>=1.35.0,<1.36.0)"] +ec2-instance-connect = ["mypy-boto3-ec2-instance-connect (>=1.35.0,<1.36.0)"] +ecr = ["mypy-boto3-ecr (>=1.35.0,<1.36.0)"] +ecr-public = ["mypy-boto3-ecr-public (>=1.35.0,<1.36.0)"] +ecs = ["mypy-boto3-ecs (>=1.35.0,<1.36.0)"] +efs = ["mypy-boto3-efs (>=1.35.0,<1.36.0)"] +eks = ["mypy-boto3-eks (>=1.35.0,<1.36.0)"] +eks-auth = ["mypy-boto3-eks-auth (>=1.35.0,<1.36.0)"] +elastic-inference = ["mypy-boto3-elastic-inference (>=1.35.0,<1.36.0)"] +elasticache = ["mypy-boto3-elasticache (>=1.35.0,<1.36.0)"] +elasticbeanstalk = ["mypy-boto3-elasticbeanstalk (>=1.35.0,<1.36.0)"] +elastictranscoder = ["mypy-boto3-elastictranscoder (>=1.35.0,<1.36.0)"] +elb = ["mypy-boto3-elb (>=1.35.0,<1.36.0)"] +elbv2 = ["mypy-boto3-elbv2 (>=1.35.0,<1.36.0)"] +emr = ["mypy-boto3-emr (>=1.35.0,<1.36.0)"] +emr-containers = ["mypy-boto3-emr-containers (>=1.35.0,<1.36.0)"] +emr-serverless = ["mypy-boto3-emr-serverless (>=1.35.0,<1.36.0)"] +entityresolution = ["mypy-boto3-entityresolution (>=1.35.0,<1.36.0)"] +es = ["mypy-boto3-es (>=1.35.0,<1.36.0)"] +essential = ["mypy-boto3-cloudformation (>=1.35.0,<1.36.0)", "mypy-boto3-dynamodb (>=1.35.0,<1.36.0)", "mypy-boto3-ec2 (>=1.35.0,<1.36.0)", "mypy-boto3-lambda (>=1.35.0,<1.36.0)", "mypy-boto3-rds (>=1.35.0,<1.36.0)", "mypy-boto3-s3 (>=1.35.0,<1.36.0)", "mypy-boto3-sqs (>=1.35.0,<1.36.0)"] +events = ["mypy-boto3-events (>=1.35.0,<1.36.0)"] +evidently = ["mypy-boto3-evidently (>=1.35.0,<1.36.0)"] +finspace = ["mypy-boto3-finspace (>=1.35.0,<1.36.0)"] +finspace-data = ["mypy-boto3-finspace-data (>=1.35.0,<1.36.0)"] +firehose = ["mypy-boto3-firehose (>=1.35.0,<1.36.0)"] +fis = ["mypy-boto3-fis (>=1.35.0,<1.36.0)"] +fms = ["mypy-boto3-fms (>=1.35.0,<1.36.0)"] +forecast = ["mypy-boto3-forecast (>=1.35.0,<1.36.0)"] +forecastquery = ["mypy-boto3-forecastquery (>=1.35.0,<1.36.0)"] +frauddetector = ["mypy-boto3-frauddetector (>=1.35.0,<1.36.0)"] +freetier = ["mypy-boto3-freetier (>=1.35.0,<1.36.0)"] +fsx = ["mypy-boto3-fsx (>=1.35.0,<1.36.0)"] +gamelift = ["mypy-boto3-gamelift (>=1.35.0,<1.36.0)"] +glacier = ["mypy-boto3-glacier (>=1.35.0,<1.36.0)"] +globalaccelerator = ["mypy-boto3-globalaccelerator (>=1.35.0,<1.36.0)"] +glue = ["mypy-boto3-glue (>=1.35.0,<1.36.0)"] +grafana = ["mypy-boto3-grafana (>=1.35.0,<1.36.0)"] +greengrass = ["mypy-boto3-greengrass (>=1.35.0,<1.36.0)"] +greengrassv2 = ["mypy-boto3-greengrassv2 (>=1.35.0,<1.36.0)"] +groundstation = ["mypy-boto3-groundstation (>=1.35.0,<1.36.0)"] +guardduty = ["mypy-boto3-guardduty (>=1.35.0,<1.36.0)"] +health = ["mypy-boto3-health (>=1.35.0,<1.36.0)"] +healthlake = ["mypy-boto3-healthlake (>=1.35.0,<1.36.0)"] +iam = ["mypy-boto3-iam (>=1.35.0,<1.36.0)"] +identitystore = ["mypy-boto3-identitystore (>=1.35.0,<1.36.0)"] +imagebuilder = ["mypy-boto3-imagebuilder (>=1.35.0,<1.36.0)"] +importexport = ["mypy-boto3-importexport (>=1.35.0,<1.36.0)"] +inspector = ["mypy-boto3-inspector (>=1.35.0,<1.36.0)"] +inspector-scan = ["mypy-boto3-inspector-scan (>=1.35.0,<1.36.0)"] +inspector2 = ["mypy-boto3-inspector2 (>=1.35.0,<1.36.0)"] +internetmonitor = ["mypy-boto3-internetmonitor (>=1.35.0,<1.36.0)"] +iot = ["mypy-boto3-iot (>=1.35.0,<1.36.0)"] +iot-data = ["mypy-boto3-iot-data (>=1.35.0,<1.36.0)"] +iot-jobs-data = ["mypy-boto3-iot-jobs-data (>=1.35.0,<1.36.0)"] +iot1click-devices = ["mypy-boto3-iot1click-devices (>=1.35.0,<1.36.0)"] +iot1click-projects = ["mypy-boto3-iot1click-projects (>=1.35.0,<1.36.0)"] +iotanalytics = ["mypy-boto3-iotanalytics (>=1.35.0,<1.36.0)"] +iotdeviceadvisor = ["mypy-boto3-iotdeviceadvisor (>=1.35.0,<1.36.0)"] +iotevents = ["mypy-boto3-iotevents (>=1.35.0,<1.36.0)"] +iotevents-data = ["mypy-boto3-iotevents-data (>=1.35.0,<1.36.0)"] +iotfleethub = ["mypy-boto3-iotfleethub (>=1.35.0,<1.36.0)"] +iotfleetwise = ["mypy-boto3-iotfleetwise (>=1.35.0,<1.36.0)"] +iotsecuretunneling = ["mypy-boto3-iotsecuretunneling (>=1.35.0,<1.36.0)"] +iotsitewise = ["mypy-boto3-iotsitewise (>=1.35.0,<1.36.0)"] +iotthingsgraph = ["mypy-boto3-iotthingsgraph (>=1.35.0,<1.36.0)"] +iottwinmaker = ["mypy-boto3-iottwinmaker (>=1.35.0,<1.36.0)"] +iotwireless = ["mypy-boto3-iotwireless (>=1.35.0,<1.36.0)"] +ivs = ["mypy-boto3-ivs (>=1.35.0,<1.36.0)"] +ivs-realtime = ["mypy-boto3-ivs-realtime (>=1.35.0,<1.36.0)"] +ivschat = ["mypy-boto3-ivschat (>=1.35.0,<1.36.0)"] +kafka = ["mypy-boto3-kafka (>=1.35.0,<1.36.0)"] +kafkaconnect = ["mypy-boto3-kafkaconnect (>=1.35.0,<1.36.0)"] +kendra = ["mypy-boto3-kendra (>=1.35.0,<1.36.0)"] +kendra-ranking = ["mypy-boto3-kendra-ranking (>=1.35.0,<1.36.0)"] +keyspaces = ["mypy-boto3-keyspaces (>=1.35.0,<1.36.0)"] +kinesis = ["mypy-boto3-kinesis (>=1.35.0,<1.36.0)"] +kinesis-video-archived-media = ["mypy-boto3-kinesis-video-archived-media (>=1.35.0,<1.36.0)"] +kinesis-video-media = ["mypy-boto3-kinesis-video-media (>=1.35.0,<1.36.0)"] +kinesis-video-signaling = ["mypy-boto3-kinesis-video-signaling (>=1.35.0,<1.36.0)"] +kinesis-video-webrtc-storage = ["mypy-boto3-kinesis-video-webrtc-storage (>=1.35.0,<1.36.0)"] +kinesisanalytics = ["mypy-boto3-kinesisanalytics (>=1.35.0,<1.36.0)"] +kinesisanalyticsv2 = ["mypy-boto3-kinesisanalyticsv2 (>=1.35.0,<1.36.0)"] +kinesisvideo = ["mypy-boto3-kinesisvideo (>=1.35.0,<1.36.0)"] +kms = ["mypy-boto3-kms (>=1.35.0,<1.36.0)"] +lakeformation = ["mypy-boto3-lakeformation (>=1.35.0,<1.36.0)"] +lambda = ["mypy-boto3-lambda (>=1.35.0,<1.36.0)"] +launch-wizard = ["mypy-boto3-launch-wizard (>=1.35.0,<1.36.0)"] +lex-models = ["mypy-boto3-lex-models (>=1.35.0,<1.36.0)"] +lex-runtime = ["mypy-boto3-lex-runtime (>=1.35.0,<1.36.0)"] +lexv2-models = ["mypy-boto3-lexv2-models (>=1.35.0,<1.36.0)"] +lexv2-runtime = ["mypy-boto3-lexv2-runtime (>=1.35.0,<1.36.0)"] +license-manager = ["mypy-boto3-license-manager (>=1.35.0,<1.36.0)"] +license-manager-linux-subscriptions = ["mypy-boto3-license-manager-linux-subscriptions (>=1.35.0,<1.36.0)"] +license-manager-user-subscriptions = ["mypy-boto3-license-manager-user-subscriptions (>=1.35.0,<1.36.0)"] +lightsail = ["mypy-boto3-lightsail (>=1.35.0,<1.36.0)"] +location = ["mypy-boto3-location (>=1.35.0,<1.36.0)"] +logs = ["mypy-boto3-logs (>=1.35.0,<1.36.0)"] +lookoutequipment = ["mypy-boto3-lookoutequipment (>=1.35.0,<1.36.0)"] +lookoutmetrics = ["mypy-boto3-lookoutmetrics (>=1.35.0,<1.36.0)"] +lookoutvision = ["mypy-boto3-lookoutvision (>=1.35.0,<1.36.0)"] +m2 = ["mypy-boto3-m2 (>=1.35.0,<1.36.0)"] +machinelearning = ["mypy-boto3-machinelearning (>=1.35.0,<1.36.0)"] +macie2 = ["mypy-boto3-macie2 (>=1.35.0,<1.36.0)"] +mailmanager = ["mypy-boto3-mailmanager (>=1.35.0,<1.36.0)"] +managedblockchain = ["mypy-boto3-managedblockchain (>=1.35.0,<1.36.0)"] +managedblockchain-query = ["mypy-boto3-managedblockchain-query (>=1.35.0,<1.36.0)"] +marketplace-agreement = ["mypy-boto3-marketplace-agreement (>=1.35.0,<1.36.0)"] +marketplace-catalog = ["mypy-boto3-marketplace-catalog (>=1.35.0,<1.36.0)"] +marketplace-deployment = ["mypy-boto3-marketplace-deployment (>=1.35.0,<1.36.0)"] +marketplace-entitlement = ["mypy-boto3-marketplace-entitlement (>=1.35.0,<1.36.0)"] +marketplacecommerceanalytics = ["mypy-boto3-marketplacecommerceanalytics (>=1.35.0,<1.36.0)"] +mediaconnect = ["mypy-boto3-mediaconnect (>=1.35.0,<1.36.0)"] +mediaconvert = ["mypy-boto3-mediaconvert (>=1.35.0,<1.36.0)"] +medialive = ["mypy-boto3-medialive (>=1.35.0,<1.36.0)"] +mediapackage = ["mypy-boto3-mediapackage (>=1.35.0,<1.36.0)"] +mediapackage-vod = ["mypy-boto3-mediapackage-vod (>=1.35.0,<1.36.0)"] +mediapackagev2 = ["mypy-boto3-mediapackagev2 (>=1.35.0,<1.36.0)"] +mediastore = ["mypy-boto3-mediastore (>=1.35.0,<1.36.0)"] +mediastore-data = ["mypy-boto3-mediastore-data (>=1.35.0,<1.36.0)"] +mediatailor = ["mypy-boto3-mediatailor (>=1.35.0,<1.36.0)"] +medical-imaging = ["mypy-boto3-medical-imaging (>=1.35.0,<1.36.0)"] +memorydb = ["mypy-boto3-memorydb (>=1.35.0,<1.36.0)"] +meteringmarketplace = ["mypy-boto3-meteringmarketplace (>=1.35.0,<1.36.0)"] +mgh = ["mypy-boto3-mgh (>=1.35.0,<1.36.0)"] +mgn = ["mypy-boto3-mgn (>=1.35.0,<1.36.0)"] +migration-hub-refactor-spaces = ["mypy-boto3-migration-hub-refactor-spaces (>=1.35.0,<1.36.0)"] +migrationhub-config = ["mypy-boto3-migrationhub-config (>=1.35.0,<1.36.0)"] +migrationhuborchestrator = ["mypy-boto3-migrationhuborchestrator (>=1.35.0,<1.36.0)"] +migrationhubstrategy = ["mypy-boto3-migrationhubstrategy (>=1.35.0,<1.36.0)"] +mq = ["mypy-boto3-mq (>=1.35.0,<1.36.0)"] +mturk = ["mypy-boto3-mturk (>=1.35.0,<1.36.0)"] +mwaa = ["mypy-boto3-mwaa (>=1.35.0,<1.36.0)"] +neptune = ["mypy-boto3-neptune (>=1.35.0,<1.36.0)"] +neptune-graph = ["mypy-boto3-neptune-graph (>=1.35.0,<1.36.0)"] +neptunedata = ["mypy-boto3-neptunedata (>=1.35.0,<1.36.0)"] +network-firewall = ["mypy-boto3-network-firewall (>=1.35.0,<1.36.0)"] +networkmanager = ["mypy-boto3-networkmanager (>=1.35.0,<1.36.0)"] +networkmonitor = ["mypy-boto3-networkmonitor (>=1.35.0,<1.36.0)"] +nimble = ["mypy-boto3-nimble (>=1.35.0,<1.36.0)"] +oam = ["mypy-boto3-oam (>=1.35.0,<1.36.0)"] +omics = ["mypy-boto3-omics (>=1.35.0,<1.36.0)"] +opensearch = ["mypy-boto3-opensearch (>=1.35.0,<1.36.0)"] +opensearchserverless = ["mypy-boto3-opensearchserverless (>=1.35.0,<1.36.0)"] +opsworks = ["mypy-boto3-opsworks (>=1.35.0,<1.36.0)"] +opsworkscm = ["mypy-boto3-opsworkscm (>=1.35.0,<1.36.0)"] +organizations = ["mypy-boto3-organizations (>=1.35.0,<1.36.0)"] +osis = ["mypy-boto3-osis (>=1.35.0,<1.36.0)"] +outposts = ["mypy-boto3-outposts (>=1.35.0,<1.36.0)"] +panorama = ["mypy-boto3-panorama (>=1.35.0,<1.36.0)"] +payment-cryptography = ["mypy-boto3-payment-cryptography (>=1.35.0,<1.36.0)"] +payment-cryptography-data = ["mypy-boto3-payment-cryptography-data (>=1.35.0,<1.36.0)"] +pca-connector-ad = ["mypy-boto3-pca-connector-ad (>=1.35.0,<1.36.0)"] +pca-connector-scep = ["mypy-boto3-pca-connector-scep (>=1.35.0,<1.36.0)"] +pcs = ["mypy-boto3-pcs (>=1.35.0,<1.36.0)"] +personalize = ["mypy-boto3-personalize (>=1.35.0,<1.36.0)"] +personalize-events = ["mypy-boto3-personalize-events (>=1.35.0,<1.36.0)"] +personalize-runtime = ["mypy-boto3-personalize-runtime (>=1.35.0,<1.36.0)"] +pi = ["mypy-boto3-pi (>=1.35.0,<1.36.0)"] +pinpoint = ["mypy-boto3-pinpoint (>=1.35.0,<1.36.0)"] +pinpoint-email = ["mypy-boto3-pinpoint-email (>=1.35.0,<1.36.0)"] +pinpoint-sms-voice = ["mypy-boto3-pinpoint-sms-voice (>=1.35.0,<1.36.0)"] +pinpoint-sms-voice-v2 = ["mypy-boto3-pinpoint-sms-voice-v2 (>=1.35.0,<1.36.0)"] +pipes = ["mypy-boto3-pipes (>=1.35.0,<1.36.0)"] +polly = ["mypy-boto3-polly (>=1.35.0,<1.36.0)"] +pricing = ["mypy-boto3-pricing (>=1.35.0,<1.36.0)"] +privatenetworks = ["mypy-boto3-privatenetworks (>=1.35.0,<1.36.0)"] +proton = ["mypy-boto3-proton (>=1.35.0,<1.36.0)"] +qapps = ["mypy-boto3-qapps (>=1.35.0,<1.36.0)"] +qbusiness = ["mypy-boto3-qbusiness (>=1.35.0,<1.36.0)"] +qconnect = ["mypy-boto3-qconnect (>=1.35.0,<1.36.0)"] +qldb = ["mypy-boto3-qldb (>=1.35.0,<1.36.0)"] +qldb-session = ["mypy-boto3-qldb-session (>=1.35.0,<1.36.0)"] +quicksight = ["mypy-boto3-quicksight (>=1.35.0,<1.36.0)"] +ram = ["mypy-boto3-ram (>=1.35.0,<1.36.0)"] +rbin = ["mypy-boto3-rbin (>=1.35.0,<1.36.0)"] +rds = ["mypy-boto3-rds (>=1.35.0,<1.36.0)"] +rds-data = ["mypy-boto3-rds-data (>=1.35.0,<1.36.0)"] +redshift = ["mypy-boto3-redshift (>=1.35.0,<1.36.0)"] +redshift-data = ["mypy-boto3-redshift-data (>=1.35.0,<1.36.0)"] +redshift-serverless = ["mypy-boto3-redshift-serverless (>=1.35.0,<1.36.0)"] +rekognition = ["mypy-boto3-rekognition (>=1.35.0,<1.36.0)"] +repostspace = ["mypy-boto3-repostspace (>=1.35.0,<1.36.0)"] +resiliencehub = ["mypy-boto3-resiliencehub (>=1.35.0,<1.36.0)"] +resource-explorer-2 = ["mypy-boto3-resource-explorer-2 (>=1.35.0,<1.36.0)"] +resource-groups = ["mypy-boto3-resource-groups (>=1.35.0,<1.36.0)"] +resourcegroupstaggingapi = ["mypy-boto3-resourcegroupstaggingapi (>=1.35.0,<1.36.0)"] +robomaker = ["mypy-boto3-robomaker (>=1.35.0,<1.36.0)"] +rolesanywhere = ["mypy-boto3-rolesanywhere (>=1.35.0,<1.36.0)"] +route53 = ["mypy-boto3-route53 (>=1.35.0,<1.36.0)"] +route53-recovery-cluster = ["mypy-boto3-route53-recovery-cluster (>=1.35.0,<1.36.0)"] +route53-recovery-control-config = ["mypy-boto3-route53-recovery-control-config (>=1.35.0,<1.36.0)"] +route53-recovery-readiness = ["mypy-boto3-route53-recovery-readiness (>=1.35.0,<1.36.0)"] +route53domains = ["mypy-boto3-route53domains (>=1.35.0,<1.36.0)"] +route53profiles = ["mypy-boto3-route53profiles (>=1.35.0,<1.36.0)"] +route53resolver = ["mypy-boto3-route53resolver (>=1.35.0,<1.36.0)"] +rum = ["mypy-boto3-rum (>=1.35.0,<1.36.0)"] +s3 = ["mypy-boto3-s3 (>=1.35.0,<1.36.0)"] +s3control = ["mypy-boto3-s3control (>=1.35.0,<1.36.0)"] +s3outposts = ["mypy-boto3-s3outposts (>=1.35.0,<1.36.0)"] +sagemaker = ["mypy-boto3-sagemaker (>=1.35.0,<1.36.0)"] +sagemaker-a2i-runtime = ["mypy-boto3-sagemaker-a2i-runtime (>=1.35.0,<1.36.0)"] +sagemaker-edge = ["mypy-boto3-sagemaker-edge (>=1.35.0,<1.36.0)"] +sagemaker-featurestore-runtime = ["mypy-boto3-sagemaker-featurestore-runtime (>=1.35.0,<1.36.0)"] +sagemaker-geospatial = ["mypy-boto3-sagemaker-geospatial (>=1.35.0,<1.36.0)"] +sagemaker-metrics = ["mypy-boto3-sagemaker-metrics (>=1.35.0,<1.36.0)"] +sagemaker-runtime = ["mypy-boto3-sagemaker-runtime (>=1.35.0,<1.36.0)"] +savingsplans = ["mypy-boto3-savingsplans (>=1.35.0,<1.36.0)"] +scheduler = ["mypy-boto3-scheduler (>=1.35.0,<1.36.0)"] +schemas = ["mypy-boto3-schemas (>=1.35.0,<1.36.0)"] +sdb = ["mypy-boto3-sdb (>=1.35.0,<1.36.0)"] +secretsmanager = ["mypy-boto3-secretsmanager (>=1.35.0,<1.36.0)"] +securityhub = ["mypy-boto3-securityhub (>=1.35.0,<1.36.0)"] +securitylake = ["mypy-boto3-securitylake (>=1.35.0,<1.36.0)"] +serverlessrepo = ["mypy-boto3-serverlessrepo (>=1.35.0,<1.36.0)"] +service-quotas = ["mypy-boto3-service-quotas (>=1.35.0,<1.36.0)"] +servicecatalog = ["mypy-boto3-servicecatalog (>=1.35.0,<1.36.0)"] +servicecatalog-appregistry = ["mypy-boto3-servicecatalog-appregistry (>=1.35.0,<1.36.0)"] +servicediscovery = ["mypy-boto3-servicediscovery (>=1.35.0,<1.36.0)"] +ses = ["mypy-boto3-ses (>=1.35.0,<1.36.0)"] +sesv2 = ["mypy-boto3-sesv2 (>=1.35.0,<1.36.0)"] +shield = ["mypy-boto3-shield (>=1.35.0,<1.36.0)"] +signer = ["mypy-boto3-signer (>=1.35.0,<1.36.0)"] +simspaceweaver = ["mypy-boto3-simspaceweaver (>=1.35.0,<1.36.0)"] +sms = ["mypy-boto3-sms (>=1.35.0,<1.36.0)"] +sms-voice = ["mypy-boto3-sms-voice (>=1.35.0,<1.36.0)"] +snow-device-management = ["mypy-boto3-snow-device-management (>=1.35.0,<1.36.0)"] +snowball = ["mypy-boto3-snowball (>=1.35.0,<1.36.0)"] +sns = ["mypy-boto3-sns (>=1.35.0,<1.36.0)"] +sqs = ["mypy-boto3-sqs (>=1.35.0,<1.36.0)"] +ssm = ["mypy-boto3-ssm (>=1.35.0,<1.36.0)"] +ssm-contacts = ["mypy-boto3-ssm-contacts (>=1.35.0,<1.36.0)"] +ssm-incidents = ["mypy-boto3-ssm-incidents (>=1.35.0,<1.36.0)"] +ssm-quicksetup = ["mypy-boto3-ssm-quicksetup (>=1.35.0,<1.36.0)"] +ssm-sap = ["mypy-boto3-ssm-sap (>=1.35.0,<1.36.0)"] +sso = ["mypy-boto3-sso (>=1.35.0,<1.36.0)"] +sso-admin = ["mypy-boto3-sso-admin (>=1.35.0,<1.36.0)"] +sso-oidc = ["mypy-boto3-sso-oidc (>=1.35.0,<1.36.0)"] +stepfunctions = ["mypy-boto3-stepfunctions (>=1.35.0,<1.36.0)"] +storagegateway = ["mypy-boto3-storagegateway (>=1.35.0,<1.36.0)"] +sts = ["mypy-boto3-sts (>=1.35.0,<1.36.0)"] +supplychain = ["mypy-boto3-supplychain (>=1.35.0,<1.36.0)"] +support = ["mypy-boto3-support (>=1.35.0,<1.36.0)"] +support-app = ["mypy-boto3-support-app (>=1.35.0,<1.36.0)"] +swf = ["mypy-boto3-swf (>=1.35.0,<1.36.0)"] +synthetics = ["mypy-boto3-synthetics (>=1.35.0,<1.36.0)"] +taxsettings = ["mypy-boto3-taxsettings (>=1.35.0,<1.36.0)"] +textract = ["mypy-boto3-textract (>=1.35.0,<1.36.0)"] +timestream-influxdb = ["mypy-boto3-timestream-influxdb (>=1.35.0,<1.36.0)"] +timestream-query = ["mypy-boto3-timestream-query (>=1.35.0,<1.36.0)"] +timestream-write = ["mypy-boto3-timestream-write (>=1.35.0,<1.36.0)"] +tnb = ["mypy-boto3-tnb (>=1.35.0,<1.36.0)"] +transcribe = ["mypy-boto3-transcribe (>=1.35.0,<1.36.0)"] +transfer = ["mypy-boto3-transfer (>=1.35.0,<1.36.0)"] +translate = ["mypy-boto3-translate (>=1.35.0,<1.36.0)"] +trustedadvisor = ["mypy-boto3-trustedadvisor (>=1.35.0,<1.36.0)"] +verifiedpermissions = ["mypy-boto3-verifiedpermissions (>=1.35.0,<1.36.0)"] +voice-id = ["mypy-boto3-voice-id (>=1.35.0,<1.36.0)"] +vpc-lattice = ["mypy-boto3-vpc-lattice (>=1.35.0,<1.36.0)"] +waf = ["mypy-boto3-waf (>=1.35.0,<1.36.0)"] +waf-regional = ["mypy-boto3-waf-regional (>=1.35.0,<1.36.0)"] +wafv2 = ["mypy-boto3-wafv2 (>=1.35.0,<1.36.0)"] +wellarchitected = ["mypy-boto3-wellarchitected (>=1.35.0,<1.36.0)"] +wisdom = ["mypy-boto3-wisdom (>=1.35.0,<1.36.0)"] +workdocs = ["mypy-boto3-workdocs (>=1.35.0,<1.36.0)"] +worklink = ["mypy-boto3-worklink (>=1.35.0,<1.36.0)"] +workmail = ["mypy-boto3-workmail (>=1.35.0,<1.36.0)"] +workmailmessageflow = ["mypy-boto3-workmailmessageflow (>=1.35.0,<1.36.0)"] +workspaces = ["mypy-boto3-workspaces (>=1.35.0,<1.36.0)"] +workspaces-thin-client = ["mypy-boto3-workspaces-thin-client (>=1.35.0,<1.36.0)"] +workspaces-web = ["mypy-boto3-workspaces-web (>=1.35.0,<1.36.0)"] +xray = ["mypy-boto3-xray (>=1.35.0,<1.36.0)"] [[package]] name = "botocore" -version = "1.34.106" +version = "1.35.16" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.8" files = [ - {file = "botocore-1.34.106-py3-none-any.whl", hash = "sha256:4baf0e27c2dfc4f4d0dee7c217c716e0782f9b30e8e1fff983fce237d88f73ae"}, - {file = "botocore-1.34.106.tar.gz", hash = "sha256:921fa5202f88c3e58fdcb4b3acffd56d65b24bca47092ee4b27aa988556c0be6"}, + {file = "botocore-1.35.16-py3-none-any.whl", hash = "sha256:3564a980d95ff2861a6ca74313173d8778aa659125c63cf49c93ad23896c63b1"}, + {file = "botocore-1.35.16.tar.gz", hash = "sha256:1b48c94e8a4bbe23143f3d1c21a32b9ffc7476b651ef42371ab45d678f6dbfbc"}, ] [package.dependencies] @@ -738,17 +765,17 @@ python-dateutil = ">=2.1,<3.0.0" urllib3 = {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""} [package.extras] -crt = ["awscrt (==0.20.9)"] +crt = ["awscrt (==0.21.5)"] [[package]] name = "botocore-stubs" -version = "1.34.128" +version = "1.35.16" description = "Type annotations and code completion for botocore" optional = false -python-versions = "<4.0,>=3.8" +python-versions = ">=3.8" files = [ - {file = "botocore_stubs-1.34.128-py3-none-any.whl", hash = "sha256:66ed60ecd4433374a20783ea0ca0486019a0ec020d59f830ab4f418926d888ee"}, - {file = "botocore_stubs-1.34.128.tar.gz", hash = "sha256:00e5910b3afb76422208d7ab6c3f3b2d4125e3203e15bf47c0ff5f9e38f00c19"}, + {file = "botocore_stubs-1.35.16-py3-none-any.whl", hash = "sha256:7181c2edf169a4dc89f9932cbd8eb82fb6b54ac59784685058f4c6ad180fce92"}, + {file = "botocore_stubs-1.35.16.tar.gz", hash = "sha256:bfdabe90607dbcb923042da5886eecdcc5839e7c976ccc2ccbd091dc690a633f"}, ] [package.dependencies] @@ -784,74 +811,89 @@ jinja2 = ">=3" [[package]] name = "certifi" -version = "2024.6.2" +version = "2024.8.30" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"}, - {file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"}, + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, ] [[package]] name = "cffi" -version = "1.16.0" +version = "1.17.1" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" files = [ - {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, - {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, - {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, - {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, - {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, - {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, - {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, - {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, - {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, - {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, - {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, - {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, - {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, - {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, - {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, - {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, - {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, - {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, - {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, - {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, - {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, - {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, - {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, - {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, - {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, - {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, - {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] [package.dependencies] @@ -1034,126 +1076,167 @@ test = ["pytest"] [[package]] name = "contourpy" -version = "1.2.1" +version = "1.3.0" description = "Python library for calculating contours of 2D quadrilateral grids" optional = false python-versions = ">=3.9" files = [ - {file = "contourpy-1.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bd7c23df857d488f418439686d3b10ae2fbf9bc256cd045b37a8c16575ea1040"}, - {file = "contourpy-1.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5b9eb0ca724a241683c9685a484da9d35c872fd42756574a7cfbf58af26677fd"}, - {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c75507d0a55378240f781599c30e7776674dbaf883a46d1c90f37e563453480"}, - {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11959f0ce4a6f7b76ec578576a0b61a28bdc0696194b6347ba3f1c53827178b9"}, - {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb3315a8a236ee19b6df481fc5f997436e8ade24a9f03dfdc6bd490fea20c6da"}, - {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39f3ecaf76cd98e802f094e0d4fbc6dc9c45a8d0c4d185f0f6c2234e14e5f75b"}, - {file = "contourpy-1.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:94b34f32646ca0414237168d68a9157cb3889f06b096612afdd296003fdd32fd"}, - {file = "contourpy-1.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:457499c79fa84593f22454bbd27670227874cd2ff5d6c84e60575c8b50a69619"}, - {file = "contourpy-1.2.1-cp310-cp310-win32.whl", hash = "sha256:ac58bdee53cbeba2ecad824fa8159493f0bf3b8ea4e93feb06c9a465d6c87da8"}, - {file = "contourpy-1.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:9cffe0f850e89d7c0012a1fb8730f75edd4320a0a731ed0c183904fe6ecfc3a9"}, - {file = "contourpy-1.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6022cecf8f44e36af10bd9118ca71f371078b4c168b6e0fab43d4a889985dbb5"}, - {file = "contourpy-1.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef5adb9a3b1d0c645ff694f9bca7702ec2c70f4d734f9922ea34de02294fdf72"}, - {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6150ffa5c767bc6332df27157d95442c379b7dce3a38dff89c0f39b63275696f"}, - {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c863140fafc615c14a4bf4efd0f4425c02230eb8ef02784c9a156461e62c965"}, - {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:00e5388f71c1a0610e6fe56b5c44ab7ba14165cdd6d695429c5cd94021e390b2"}, - {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4492d82b3bc7fbb7e3610747b159869468079fe149ec5c4d771fa1f614a14df"}, - {file = "contourpy-1.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:49e70d111fee47284d9dd867c9bb9a7058a3c617274900780c43e38d90fe1205"}, - {file = "contourpy-1.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b59c0ffceff8d4d3996a45f2bb6f4c207f94684a96bf3d9728dbb77428dd8cb8"}, - {file = "contourpy-1.2.1-cp311-cp311-win32.whl", hash = "sha256:7b4182299f251060996af5249c286bae9361fa8c6a9cda5efc29fe8bfd6062ec"}, - {file = "contourpy-1.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2855c8b0b55958265e8b5888d6a615ba02883b225f2227461aa9127c578a4922"}, - {file = "contourpy-1.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:62828cada4a2b850dbef89c81f5a33741898b305db244904de418cc957ff05dc"}, - {file = "contourpy-1.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:309be79c0a354afff9ff7da4aaed7c3257e77edf6c1b448a779329431ee79d7e"}, - {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e785e0f2ef0d567099b9ff92cbfb958d71c2d5b9259981cd9bee81bd194c9a4"}, - {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cac0a8f71a041aa587410424ad46dfa6a11f6149ceb219ce7dd48f6b02b87a7"}, - {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af3f4485884750dddd9c25cb7e3915d83c2db92488b38ccb77dd594eac84c4a0"}, - {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ce6889abac9a42afd07a562c2d6d4b2b7134f83f18571d859b25624a331c90b"}, - {file = "contourpy-1.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a1eea9aecf761c661d096d39ed9026574de8adb2ae1c5bd7b33558af884fb2ce"}, - {file = "contourpy-1.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:187fa1d4c6acc06adb0fae5544c59898ad781409e61a926ac7e84b8f276dcef4"}, - {file = "contourpy-1.2.1-cp312-cp312-win32.whl", hash = "sha256:c2528d60e398c7c4c799d56f907664673a807635b857df18f7ae64d3e6ce2d9f"}, - {file = "contourpy-1.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:1a07fc092a4088ee952ddae19a2b2a85757b923217b7eed584fdf25f53a6e7ce"}, - {file = "contourpy-1.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bb6834cbd983b19f06908b45bfc2dad6ac9479ae04abe923a275b5f48f1a186b"}, - {file = "contourpy-1.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1d59e739ab0e3520e62a26c60707cc3ab0365d2f8fecea74bfe4de72dc56388f"}, - {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd3db01f59fdcbce5b22afad19e390260d6d0222f35a1023d9adc5690a889364"}, - {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a12a813949e5066148712a0626895c26b2578874e4cc63160bb007e6df3436fe"}, - {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe0ccca550bb8e5abc22f530ec0466136379c01321fd94f30a22231e8a48d985"}, - {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1d59258c3c67c865435d8fbeb35f8c59b8bef3d6f46c1f29f6123556af28445"}, - {file = "contourpy-1.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f32c38afb74bd98ce26de7cc74a67b40afb7b05aae7b42924ea990d51e4dac02"}, - {file = "contourpy-1.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d31a63bc6e6d87f77d71e1abbd7387ab817a66733734883d1fc0021ed9bfa083"}, - {file = "contourpy-1.2.1-cp39-cp39-win32.whl", hash = "sha256:ddcb8581510311e13421b1f544403c16e901c4e8f09083c881fab2be80ee31ba"}, - {file = "contourpy-1.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:10a37ae557aabf2509c79715cd20b62e4c7c28b8cd62dd7d99e5ed3ce28c3fd9"}, - {file = "contourpy-1.2.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a31f94983fecbac95e58388210427d68cd30fe8a36927980fab9c20062645609"}, - {file = "contourpy-1.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef2b055471c0eb466033760a521efb9d8a32b99ab907fc8358481a1dd29e3bd3"}, - {file = "contourpy-1.2.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b33d2bc4f69caedcd0a275329eb2198f560b325605810895627be5d4b876bf7f"}, - {file = "contourpy-1.2.1.tar.gz", hash = "sha256:4d8908b3bee1c889e547867ca4cdc54e5ab6be6d3e078556814a22457f49423c"}, + {file = "contourpy-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:880ea32e5c774634f9fcd46504bf9f080a41ad855f4fef54f5380f5133d343c7"}, + {file = "contourpy-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:76c905ef940a4474a6289c71d53122a4f77766eef23c03cd57016ce19d0f7b42"}, + {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92f8557cbb07415a4d6fa191f20fd9d2d9eb9c0b61d1b2f52a8926e43c6e9af7"}, + {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36f965570cff02b874773c49bfe85562b47030805d7d8360748f3eca570f4cab"}, + {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cacd81e2d4b6f89c9f8a5b69b86490152ff39afc58a95af002a398273e5ce589"}, + {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69375194457ad0fad3a839b9e29aa0b0ed53bb54db1bfb6c3ae43d111c31ce41"}, + {file = "contourpy-1.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a52040312b1a858b5e31ef28c2e865376a386c60c0e248370bbea2d3f3b760d"}, + {file = "contourpy-1.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3faeb2998e4fcb256542e8a926d08da08977f7f5e62cf733f3c211c2a5586223"}, + {file = "contourpy-1.3.0-cp310-cp310-win32.whl", hash = "sha256:36e0cff201bcb17a0a8ecc7f454fe078437fa6bda730e695a92f2d9932bd507f"}, + {file = "contourpy-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:87ddffef1dbe5e669b5c2440b643d3fdd8622a348fe1983fad7a0f0ccb1cd67b"}, + {file = "contourpy-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fa4c02abe6c446ba70d96ece336e621efa4aecae43eaa9b030ae5fb92b309ad"}, + {file = "contourpy-1.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:834e0cfe17ba12f79963861e0f908556b2cedd52e1f75e6578801febcc6a9f49"}, + {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbc4c3217eee163fa3984fd1567632b48d6dfd29216da3ded3d7b844a8014a66"}, + {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4865cd1d419e0c7a7bf6de1777b185eebdc51470800a9f42b9e9decf17762081"}, + {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:303c252947ab4b14c08afeb52375b26781ccd6a5ccd81abcdfc1fafd14cf93c1"}, + {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637f674226be46f6ba372fd29d9523dd977a291f66ab2a74fbeb5530bb3f445d"}, + {file = "contourpy-1.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:76a896b2f195b57db25d6b44e7e03f221d32fe318d03ede41f8b4d9ba1bff53c"}, + {file = "contourpy-1.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e1fd23e9d01591bab45546c089ae89d926917a66dceb3abcf01f6105d927e2cb"}, + {file = "contourpy-1.3.0-cp311-cp311-win32.whl", hash = "sha256:d402880b84df3bec6eab53cd0cf802cae6a2ef9537e70cf75e91618a3801c20c"}, + {file = "contourpy-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:6cb6cc968059db9c62cb35fbf70248f40994dfcd7aa10444bbf8b3faeb7c2d67"}, + {file = "contourpy-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:570ef7cf892f0afbe5b2ee410c507ce12e15a5fa91017a0009f79f7d93a1268f"}, + {file = "contourpy-1.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:da84c537cb8b97d153e9fb208c221c45605f73147bd4cadd23bdae915042aad6"}, + {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0be4d8425bfa755e0fd76ee1e019636ccc7c29f77a7c86b4328a9eb6a26d0639"}, + {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c0da700bf58f6e0b65312d0a5e695179a71d0163957fa381bb3c1f72972537c"}, + {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb8b141bb00fa977d9122636b16aa67d37fd40a3d8b52dd837e536d64b9a4d06"}, + {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3634b5385c6716c258d0419c46d05c8aa7dc8cb70326c9a4fb66b69ad2b52e09"}, + {file = "contourpy-1.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0dce35502151b6bd35027ac39ba6e5a44be13a68f55735c3612c568cac3805fd"}, + {file = "contourpy-1.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aea348f053c645100612b333adc5983d87be69acdc6d77d3169c090d3b01dc35"}, + {file = "contourpy-1.3.0-cp312-cp312-win32.whl", hash = "sha256:90f73a5116ad1ba7174341ef3ea5c3150ddf20b024b98fb0c3b29034752c8aeb"}, + {file = "contourpy-1.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:b11b39aea6be6764f84360fce6c82211a9db32a7c7de8fa6dd5397cf1d079c3b"}, + {file = "contourpy-1.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3e1c7fa44aaae40a2247e2e8e0627f4bea3dd257014764aa644f319a5f8600e3"}, + {file = "contourpy-1.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:364174c2a76057feef647c802652f00953b575723062560498dc7930fc9b1cb7"}, + {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32b238b3b3b649e09ce9aaf51f0c261d38644bdfa35cbaf7b263457850957a84"}, + {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d51fca85f9f7ad0b65b4b9fe800406d0d77017d7270d31ec3fb1cc07358fdea0"}, + {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:732896af21716b29ab3e988d4ce14bc5133733b85956316fb0c56355f398099b"}, + {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d73f659398a0904e125280836ae6f88ba9b178b2fed6884f3b1f95b989d2c8da"}, + {file = "contourpy-1.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c6c7c2408b7048082932cf4e641fa3b8ca848259212f51c8c59c45aa7ac18f14"}, + {file = "contourpy-1.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f317576606de89da6b7e0861cf6061f6146ead3528acabff9236458a6ba467f8"}, + {file = "contourpy-1.3.0-cp313-cp313-win32.whl", hash = "sha256:31cd3a85dbdf1fc002280c65caa7e2b5f65e4a973fcdf70dd2fdcb9868069294"}, + {file = "contourpy-1.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:4553c421929ec95fb07b3aaca0fae668b2eb5a5203d1217ca7c34c063c53d087"}, + {file = "contourpy-1.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:345af746d7766821d05d72cb8f3845dfd08dd137101a2cb9b24de277d716def8"}, + {file = "contourpy-1.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3bb3808858a9dc68f6f03d319acd5f1b8a337e6cdda197f02f4b8ff67ad2057b"}, + {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:420d39daa61aab1221567b42eecb01112908b2cab7f1b4106a52caaec8d36973"}, + {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4d63ee447261e963af02642ffcb864e5a2ee4cbfd78080657a9880b8b1868e18"}, + {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:167d6c890815e1dac9536dca00828b445d5d0df4d6a8c6adb4a7ec3166812fa8"}, + {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:710a26b3dc80c0e4febf04555de66f5fd17e9cf7170a7b08000601a10570bda6"}, + {file = "contourpy-1.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:75ee7cb1a14c617f34a51d11fa7524173e56551646828353c4af859c56b766e2"}, + {file = "contourpy-1.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:33c92cdae89ec5135d036e7218e69b0bb2851206077251f04a6c4e0e21f03927"}, + {file = "contourpy-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a11077e395f67ffc2c44ec2418cfebed032cd6da3022a94fc227b6faf8e2acb8"}, + {file = "contourpy-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e8134301d7e204c88ed7ab50028ba06c683000040ede1d617298611f9dc6240c"}, + {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e12968fdfd5bb45ffdf6192a590bd8ddd3ba9e58360b29683c6bb71a7b41edca"}, + {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fd2a0fc506eccaaa7595b7e1418951f213cf8255be2600f1ea1b61e46a60c55f"}, + {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4cfb5c62ce023dfc410d6059c936dcf96442ba40814aefbfa575425a3a7f19dc"}, + {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68a32389b06b82c2fdd68276148d7b9275b5f5cf13e5417e4252f6d1a34f72a2"}, + {file = "contourpy-1.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:94e848a6b83da10898cbf1311a815f770acc9b6a3f2d646f330d57eb4e87592e"}, + {file = "contourpy-1.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d78ab28a03c854a873787a0a42254a0ccb3cb133c672f645c9f9c8f3ae9d0800"}, + {file = "contourpy-1.3.0-cp39-cp39-win32.whl", hash = "sha256:81cb5ed4952aae6014bc9d0421dec7c5835c9c8c31cdf51910b708f548cf58e5"}, + {file = "contourpy-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:14e262f67bd7e6eb6880bc564dcda30b15e351a594657e55b7eec94b6ef72843"}, + {file = "contourpy-1.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fe41b41505a5a33aeaed2a613dccaeaa74e0e3ead6dd6fd3a118fb471644fd6c"}, + {file = "contourpy-1.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eca7e17a65f72a5133bdbec9ecf22401c62bcf4821361ef7811faee695799779"}, + {file = "contourpy-1.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ec4dc6bf570f5b22ed0d7efba0dfa9c5b9e0431aeea7581aa217542d9e809a4"}, + {file = "contourpy-1.3.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:00ccd0dbaad6d804ab259820fa7cb0b8036bda0686ef844d24125d8287178ce0"}, + {file = "contourpy-1.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca947601224119117f7c19c9cdf6b3ab54c5726ef1d906aa4a69dfb6dd58102"}, + {file = "contourpy-1.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c6ec93afeb848a0845a18989da3beca3eec2c0f852322efe21af1931147d12cb"}, + {file = "contourpy-1.3.0.tar.gz", hash = "sha256:7ffa0db17717a8ffb127efd0c95a4362d996b892c2904db72428d5b52e1938a4"}, ] [package.dependencies] -numpy = ">=1.20" +numpy = ">=1.23" [package.extras] bokeh = ["bokeh", "selenium"] docs = ["furo", "sphinx (>=7.2)", "sphinx-copybutton"] -mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.8.0)", "types-Pillow"] +mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.11.1)", "types-Pillow"] test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] -test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] +test-no-images = ["pytest", "pytest-cov", "pytest-rerunfailures", "pytest-xdist", "wurlitzer"] [[package]] name = "coverage" -version = "7.5.3" +version = "7.6.1" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a6519d917abb15e12380406d721e37613e2a67d166f9fb7e5a8ce0375744cd45"}, - {file = "coverage-7.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aea7da970f1feccf48be7335f8b2ca64baf9b589d79e05b9397a06696ce1a1ec"}, - {file = "coverage-7.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:923b7b1c717bd0f0f92d862d1ff51d9b2b55dbbd133e05680204465f454bb286"}, - {file = "coverage-7.5.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62bda40da1e68898186f274f832ef3e759ce929da9a9fd9fcf265956de269dbc"}, - {file = "coverage-7.5.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8b7339180d00de83e930358223c617cc343dd08e1aa5ec7b06c3a121aec4e1d"}, - {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:25a5caf742c6195e08002d3b6c2dd6947e50efc5fc2c2205f61ecb47592d2d83"}, - {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:05ac5f60faa0c704c0f7e6a5cbfd6f02101ed05e0aee4d2822637a9e672c998d"}, - {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:239a4e75e09c2b12ea478d28815acf83334d32e722e7433471fbf641c606344c"}, - {file = "coverage-7.5.3-cp310-cp310-win32.whl", hash = "sha256:a5812840d1d00eafae6585aba38021f90a705a25b8216ec7f66aebe5b619fb84"}, - {file = "coverage-7.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:33ca90a0eb29225f195e30684ba4a6db05dbef03c2ccd50b9077714c48153cac"}, - {file = "coverage-7.5.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f81bc26d609bf0fbc622c7122ba6307993c83c795d2d6f6f6fd8c000a770d974"}, - {file = "coverage-7.5.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7cec2af81f9e7569280822be68bd57e51b86d42e59ea30d10ebdbb22d2cb7232"}, - {file = "coverage-7.5.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55f689f846661e3f26efa535071775d0483388a1ccfab899df72924805e9e7cd"}, - {file = "coverage-7.5.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50084d3516aa263791198913a17354bd1dc627d3c1639209640b9cac3fef5807"}, - {file = "coverage-7.5.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:341dd8f61c26337c37988345ca5c8ccabeff33093a26953a1ac72e7d0103c4fb"}, - {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ab0b028165eea880af12f66086694768f2c3139b2c31ad5e032c8edbafca6ffc"}, - {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5bc5a8c87714b0c67cfeb4c7caa82b2d71e8864d1a46aa990b5588fa953673b8"}, - {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:38a3b98dae8a7c9057bd91fbf3415c05e700a5114c5f1b5b0ea5f8f429ba6614"}, - {file = "coverage-7.5.3-cp311-cp311-win32.whl", hash = "sha256:fcf7d1d6f5da887ca04302db8e0e0cf56ce9a5e05f202720e49b3e8157ddb9a9"}, - {file = "coverage-7.5.3-cp311-cp311-win_amd64.whl", hash = "sha256:8c836309931839cca658a78a888dab9676b5c988d0dd34ca247f5f3e679f4e7a"}, - {file = "coverage-7.5.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:296a7d9bbc598e8744c00f7a6cecf1da9b30ae9ad51c566291ff1314e6cbbed8"}, - {file = "coverage-7.5.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:34d6d21d8795a97b14d503dcaf74226ae51eb1f2bd41015d3ef332a24d0a17b3"}, - {file = "coverage-7.5.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e317953bb4c074c06c798a11dbdd2cf9979dbcaa8ccc0fa4701d80042d4ebf1"}, - {file = "coverage-7.5.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:705f3d7c2b098c40f5b81790a5fedb274113373d4d1a69e65f8b68b0cc26f6db"}, - {file = "coverage-7.5.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1196e13c45e327d6cd0b6e471530a1882f1017eb83c6229fc613cd1a11b53cd"}, - {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:015eddc5ccd5364dcb902eaecf9515636806fa1e0d5bef5769d06d0f31b54523"}, - {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:fd27d8b49e574e50caa65196d908f80e4dff64d7e592d0c59788b45aad7e8b35"}, - {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:33fc65740267222fc02975c061eb7167185fef4cc8f2770267ee8bf7d6a42f84"}, - {file = "coverage-7.5.3-cp312-cp312-win32.whl", hash = "sha256:7b2a19e13dfb5c8e145c7a6ea959485ee8e2204699903c88c7d25283584bfc08"}, - {file = "coverage-7.5.3-cp312-cp312-win_amd64.whl", hash = "sha256:0bbddc54bbacfc09b3edaec644d4ac90c08ee8ed4844b0f86227dcda2d428fcb"}, - {file = "coverage-7.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f78300789a708ac1f17e134593f577407d52d0417305435b134805c4fb135adb"}, - {file = "coverage-7.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b368e1aee1b9b75757942d44d7598dcd22a9dbb126affcbba82d15917f0cc155"}, - {file = "coverage-7.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f836c174c3a7f639bded48ec913f348c4761cbf49de4a20a956d3431a7c9cb24"}, - {file = "coverage-7.5.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:244f509f126dc71369393ce5fea17c0592c40ee44e607b6d855e9c4ac57aac98"}, - {file = "coverage-7.5.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4c2872b3c91f9baa836147ca33650dc5c172e9273c808c3c3199c75490e709d"}, - {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dd4b3355b01273a56b20c219e74e7549e14370b31a4ffe42706a8cda91f19f6d"}, - {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f542287b1489c7a860d43a7d8883e27ca62ab84ca53c965d11dac1d3a1fab7ce"}, - {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:75e3f4e86804023e991096b29e147e635f5e2568f77883a1e6eed74512659ab0"}, - {file = "coverage-7.5.3-cp38-cp38-win32.whl", hash = "sha256:c59d2ad092dc0551d9f79d9d44d005c945ba95832a6798f98f9216ede3d5f485"}, - {file = "coverage-7.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:fa21a04112c59ad54f69d80e376f7f9d0f5f9123ab87ecd18fbb9ec3a2beed56"}, - {file = "coverage-7.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f5102a92855d518b0996eb197772f5ac2a527c0ec617124ad5242a3af5e25f85"}, - {file = "coverage-7.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d1da0a2e3b37b745a2b2a678a4c796462cf753aebf94edcc87dcc6b8641eae31"}, - {file = "coverage-7.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8383a6c8cefba1b7cecc0149415046b6fc38836295bc4c84e820872eb5478b3d"}, - {file = "coverage-7.5.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9aad68c3f2566dfae84bf46295a79e79d904e1c21ccfc66de88cd446f8686341"}, - {file = "coverage-7.5.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e079c9ec772fedbade9d7ebc36202a1d9ef7291bc9b3a024ca395c4d52853d7"}, - {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bde997cac85fcac227b27d4fb2c7608a2c5f6558469b0eb704c5726ae49e1c52"}, - {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:990fb20b32990b2ce2c5f974c3e738c9358b2735bc05075d50a6f36721b8f303"}, - {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3d5a67f0da401e105753d474369ab034c7bae51a4c31c77d94030d59e41df5bd"}, - {file = "coverage-7.5.3-cp39-cp39-win32.whl", hash = "sha256:e08c470c2eb01977d221fd87495b44867a56d4d594f43739a8028f8646a51e0d"}, - {file = "coverage-7.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:1d2a830ade66d3563bb61d1e3c77c8def97b30ed91e166c67d0632c018f380f0"}, - {file = "coverage-7.5.3-pp38.pp39.pp310-none-any.whl", hash = "sha256:3538d8fb1ee9bdd2e2692b3b18c22bb1c19ffbefd06880f5ac496e42d7bb3884"}, - {file = "coverage-7.5.3.tar.gz", hash = "sha256:04aefca5190d1dc7a53a4c1a5a7f8568811306d7a8ee231c42fb69215571944f"}, + {file = "coverage-7.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b06079abebbc0e89e6163b8e8f0e16270124c154dc6e4a47b413dd538859af16"}, + {file = "coverage-7.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cf4b19715bccd7ee27b6b120e7e9dd56037b9c0681dcc1adc9ba9db3d417fa36"}, + {file = "coverage-7.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61c0abb4c85b095a784ef23fdd4aede7a2628478e7baba7c5e3deba61070a02"}, + {file = "coverage-7.6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd21f6ae3f08b41004dfb433fa895d858f3f5979e7762d052b12aef444e29afc"}, + {file = "coverage-7.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f59d57baca39b32db42b83b2a7ba6f47ad9c394ec2076b084c3f029b7afca23"}, + {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a1ac0ae2b8bd743b88ed0502544847c3053d7171a3cff9228af618a068ed9c34"}, + {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e6a08c0be454c3b3beb105c0596ebdc2371fab6bb90c0c0297f4e58fd7e1012c"}, + {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f5796e664fe802da4f57a168c85359a8fbf3eab5e55cd4e4569fbacecc903959"}, + {file = "coverage-7.6.1-cp310-cp310-win32.whl", hash = "sha256:7bb65125fcbef8d989fa1dd0e8a060999497629ca5b0efbca209588a73356232"}, + {file = "coverage-7.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:3115a95daa9bdba70aea750db7b96b37259a81a709223c8448fa97727d546fe0"}, + {file = "coverage-7.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7dea0889685db8550f839fa202744652e87c60015029ce3f60e006f8c4462c93"}, + {file = "coverage-7.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed37bd3c3b063412f7620464a9ac1314d33100329f39799255fb8d3027da50d3"}, + {file = "coverage-7.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d85f5e9a5f8b73e2350097c3756ef7e785f55bd71205defa0bfdaf96c31616ff"}, + {file = "coverage-7.6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bc572be474cafb617672c43fe989d6e48d3c83af02ce8de73fff1c6bb3c198d"}, + {file = "coverage-7.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0420b573964c760df9e9e86d1a9a622d0d27f417e1a949a8a66dd7bcee7bc6"}, + {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1f4aa8219db826ce6be7099d559f8ec311549bfc4046f7f9fe9b5cea5c581c56"}, + {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:fc5a77d0c516700ebad189b587de289a20a78324bc54baee03dd486f0855d234"}, + {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b48f312cca9621272ae49008c7f613337c53fadca647d6384cc129d2996d1133"}, + {file = "coverage-7.6.1-cp311-cp311-win32.whl", hash = "sha256:1125ca0e5fd475cbbba3bb67ae20bd2c23a98fac4e32412883f9bcbaa81c314c"}, + {file = "coverage-7.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:8ae539519c4c040c5ffd0632784e21b2f03fc1340752af711f33e5be83a9d6c6"}, + {file = "coverage-7.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:95cae0efeb032af8458fc27d191f85d1717b1d4e49f7cb226cf526ff28179778"}, + {file = "coverage-7.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5621a9175cf9d0b0c84c2ef2b12e9f5f5071357c4d2ea6ca1cf01814f45d2391"}, + {file = "coverage-7.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:260933720fdcd75340e7dbe9060655aff3af1f0c5d20f46b57f262ab6c86a5e8"}, + {file = "coverage-7.6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07e2ca0ad381b91350c0ed49d52699b625aab2b44b65e1b4e02fa9df0e92ad2d"}, + {file = "coverage-7.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c44fee9975f04b33331cb8eb272827111efc8930cfd582e0320613263ca849ca"}, + {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:877abb17e6339d96bf08e7a622d05095e72b71f8afd8a9fefc82cf30ed944163"}, + {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3e0cadcf6733c09154b461f1ca72d5416635e5e4ec4e536192180d34ec160f8a"}, + {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c3c02d12f837d9683e5ab2f3d9844dc57655b92c74e286c262e0fc54213c216d"}, + {file = "coverage-7.6.1-cp312-cp312-win32.whl", hash = "sha256:e05882b70b87a18d937ca6768ff33cc3f72847cbc4de4491c8e73880766718e5"}, + {file = "coverage-7.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:b5d7b556859dd85f3a541db6a4e0167b86e7273e1cdc973e5b175166bb634fdb"}, + {file = "coverage-7.6.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a4acd025ecc06185ba2b801f2de85546e0b8ac787cf9d3b06e7e2a69f925b106"}, + {file = "coverage-7.6.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a6d3adcf24b624a7b778533480e32434a39ad8fa30c315208f6d3e5542aeb6e9"}, + {file = "coverage-7.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0c212c49b6c10e6951362f7c6df3329f04c2b1c28499563d4035d964ab8e08c"}, + {file = "coverage-7.6.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e81d7a3e58882450ec4186ca59a3f20a5d4440f25b1cff6f0902ad890e6748a"}, + {file = "coverage-7.6.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78b260de9790fd81e69401c2dc8b17da47c8038176a79092a89cb2b7d945d060"}, + {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a78d169acd38300060b28d600344a803628c3fd585c912cacc9ea8790fe96862"}, + {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2c09f4ce52cb99dd7505cd0fc8e0e37c77b87f46bc9c1eb03fe3bc9991085388"}, + {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6878ef48d4227aace338d88c48738a4258213cd7b74fd9a3d4d7582bb1d8a155"}, + {file = "coverage-7.6.1-cp313-cp313-win32.whl", hash = "sha256:44df346d5215a8c0e360307d46ffaabe0f5d3502c8a1cefd700b34baf31d411a"}, + {file = "coverage-7.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:8284cf8c0dd272a247bc154eb6c95548722dce90d098c17a883ed36e67cdb129"}, + {file = "coverage-7.6.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d3296782ca4eab572a1a4eca686d8bfb00226300dcefdf43faa25b5242ab8a3e"}, + {file = "coverage-7.6.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:502753043567491d3ff6d08629270127e0c31d4184c4c8d98f92c26f65019962"}, + {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a89ecca80709d4076b95f89f308544ec8f7b4727e8a547913a35f16717856cb"}, + {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a318d68e92e80af8b00fa99609796fdbcdfef3629c77c6283566c6f02c6d6704"}, + {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13b0a73a0896988f053e4fbb7de6d93388e6dd292b0d87ee51d106f2c11b465b"}, + {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4421712dbfc5562150f7554f13dde997a2e932a6b5f352edcce948a815efee6f"}, + {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:166811d20dfea725e2e4baa71fffd6c968a958577848d2131f39b60043400223"}, + {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:225667980479a17db1048cb2bf8bfb39b8e5be8f164b8f6628b64f78a72cf9d3"}, + {file = "coverage-7.6.1-cp313-cp313t-win32.whl", hash = "sha256:170d444ab405852903b7d04ea9ae9b98f98ab6d7e63e1115e82620807519797f"}, + {file = "coverage-7.6.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b9f222de8cded79c49bf184bdbc06630d4c58eec9459b939b4a690c82ed05657"}, + {file = "coverage-7.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6db04803b6c7291985a761004e9060b2bca08da6d04f26a7f2294b8623a0c1a0"}, + {file = "coverage-7.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f1adfc8ac319e1a348af294106bc6a8458a0f1633cc62a1446aebc30c5fa186a"}, + {file = "coverage-7.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a95324a9de9650a729239daea117df21f4b9868ce32e63f8b650ebe6cef5595b"}, + {file = "coverage-7.6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b43c03669dc4618ec25270b06ecd3ee4fa94c7f9b3c14bae6571ca00ef98b0d3"}, + {file = "coverage-7.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8929543a7192c13d177b770008bc4e8119f2e1f881d563fc6b6305d2d0ebe9de"}, + {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:a09ece4a69cf399510c8ab25e0950d9cf2b42f7b3cb0374f95d2e2ff594478a6"}, + {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9054a0754de38d9dbd01a46621636689124d666bad1936d76c0341f7d71bf569"}, + {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0dbde0f4aa9a16fa4d754356a8f2e36296ff4d83994b2c9d8398aa32f222f989"}, + {file = "coverage-7.6.1-cp38-cp38-win32.whl", hash = "sha256:da511e6ad4f7323ee5702e6633085fb76c2f893aaf8ce4c51a0ba4fc07580ea7"}, + {file = "coverage-7.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:3f1156e3e8f2872197af3840d8ad307a9dd18e615dc64d9ee41696f287c57ad8"}, + {file = "coverage-7.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abd5fd0db5f4dc9289408aaf34908072f805ff7792632250dcb36dc591d24255"}, + {file = "coverage-7.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:547f45fa1a93154bd82050a7f3cddbc1a7a4dd2a9bf5cb7d06f4ae29fe94eaf8"}, + {file = "coverage-7.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:645786266c8f18a931b65bfcefdbf6952dd0dea98feee39bd188607a9d307ed2"}, + {file = "coverage-7.6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e0b2df163b8ed01d515807af24f63de04bebcecbd6c3bfeff88385789fdf75a"}, + {file = "coverage-7.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:609b06f178fe8e9f89ef676532760ec0b4deea15e9969bf754b37f7c40326dbc"}, + {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:702855feff378050ae4f741045e19a32d57d19f3e0676d589df0575008ea5004"}, + {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2bdb062ea438f22d99cba0d7829c2ef0af1d768d1e4a4f528087224c90b132cb"}, + {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9c56863d44bd1c4fe2abb8a4d6f5371d197f1ac0ebdee542f07f35895fc07f36"}, + {file = "coverage-7.6.1-cp39-cp39-win32.whl", hash = "sha256:6e2cd258d7d927d09493c8df1ce9174ad01b381d4729a9d8d4e38670ca24774c"}, + {file = "coverage-7.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:06a737c882bd26d0d6ee7269b20b12f14a8704807a01056c80bb881a4b2ce6ca"}, + {file = "coverage-7.6.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:e9a6e0eb86070e8ccaedfbd9d38fec54864f3125ab95419970575b42af7541df"}, + {file = "coverage-7.6.1.tar.gz", hash = "sha256:953510dfb7b12ab69d20135a0662397f077c59b1e6379a768e97c59d852ee51d"}, ] [package.dependencies] @@ -1164,43 +1247,38 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "42.0.8" +version = "43.0.1" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, - {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, - {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, - {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, - {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, - {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, - {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, + {file = "cryptography-43.0.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:8385d98f6a3bf8bb2d65a73e17ed87a3ba84f6991c155691c51112075f9ffc5d"}, + {file = "cryptography-43.0.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27e613d7077ac613e399270253259d9d53872aaf657471473ebfc9a52935c062"}, + {file = "cryptography-43.0.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68aaecc4178e90719e95298515979814bda0cbada1256a4485414860bd7ab962"}, + {file = "cryptography-43.0.1-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:de41fd81a41e53267cb020bb3a7212861da53a7d39f863585d13ea11049cf277"}, + {file = "cryptography-43.0.1-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f98bf604c82c416bc829e490c700ca1553eafdf2912a91e23a79d97d9801372a"}, + {file = "cryptography-43.0.1-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:61ec41068b7b74268fa86e3e9e12b9f0c21fcf65434571dbb13d954bceb08042"}, + {file = "cryptography-43.0.1-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:014f58110f53237ace6a408b5beb6c427b64e084eb451ef25a28308270086494"}, + {file = "cryptography-43.0.1-cp37-abi3-win32.whl", hash = "sha256:2bd51274dcd59f09dd952afb696bf9c61a7a49dfc764c04dd33ef7a6b502a1e2"}, + {file = "cryptography-43.0.1-cp37-abi3-win_amd64.whl", hash = "sha256:666ae11966643886c2987b3b721899d250855718d6d9ce41b521252a17985f4d"}, + {file = "cryptography-43.0.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:ac119bb76b9faa00f48128b7f5679e1d8d437365c5d26f1c2c3f0da4ce1b553d"}, + {file = "cryptography-43.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bbcce1a551e262dfbafb6e6252f1ae36a248e615ca44ba302df077a846a8806"}, + {file = "cryptography-43.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58d4e9129985185a06d849aa6df265bdd5a74ca6e1b736a77959b498e0505b85"}, + {file = "cryptography-43.0.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d03a475165f3134f773d1388aeb19c2d25ba88b6a9733c5c590b9ff7bbfa2e0c"}, + {file = "cryptography-43.0.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:511f4273808ab590912a93ddb4e3914dfd8a388fed883361b02dea3791f292e1"}, + {file = "cryptography-43.0.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:80eda8b3e173f0f247f711eef62be51b599b5d425c429b5d4ca6a05e9e856baa"}, + {file = "cryptography-43.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:38926c50cff6f533f8a2dae3d7f19541432610d114a70808f0926d5aaa7121e4"}, + {file = "cryptography-43.0.1-cp39-abi3-win32.whl", hash = "sha256:a575913fb06e05e6b4b814d7f7468c2c660e8bb16d8d5a1faf9b33ccc569dd47"}, + {file = "cryptography-43.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:d75601ad10b059ec832e78823b348bfa1a59f6b8d545db3a24fd44362a1564cb"}, + {file = "cryptography-43.0.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ea25acb556320250756e53f9e20a4177515f012c9eaea17eb7587a8c4d8ae034"}, + {file = "cryptography-43.0.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c1332724be35d23a854994ff0b66530119500b6053d0bd3363265f7e5e77288d"}, + {file = "cryptography-43.0.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fba1007b3ef89946dbbb515aeeb41e30203b004f0b4b00e5e16078b518563289"}, + {file = "cryptography-43.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5b43d1ea6b378b54a1dc99dd8a2b5be47658fe9a7ce0a58ff0b55f4b43ef2b84"}, + {file = "cryptography-43.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:88cce104c36870d70c49c7c8fd22885875d950d9ee6ab54df2745f83ba0dc365"}, + {file = "cryptography-43.0.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:9d3cdb25fa98afdd3d0892d132b8d7139e2c087da1712041f6b762e4f807cc96"}, + {file = "cryptography-43.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e710bf40870f4db63c3d7d929aa9e09e4e7ee219e703f949ec4073b4294f6172"}, + {file = "cryptography-43.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7c05650fe8023c5ed0d46793d4b7d7e6cd9c04e68eabe5b0aeea836e37bdcec2"}, + {file = "cryptography-43.0.1.tar.gz", hash = "sha256:203e92a75716d8cfb491dc47c79e17d0d9207ccffcbcb35f598fbe463ae3444d"}, ] [package.dependencies] @@ -1213,7 +1291,7 @@ nox = ["nox"] pep8test = ["check-sdist", "click", "mypy", "ruff"] sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test = ["certifi", "cryptography-vectors (==43.0.1)", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] [[package]] @@ -1233,33 +1311,33 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"] [[package]] name = "debugpy" -version = "1.8.1" +version = "1.8.5" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" files = [ - {file = "debugpy-1.8.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:3bda0f1e943d386cc7a0e71bfa59f4137909e2ed947fb3946c506e113000f741"}, - {file = "debugpy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dda73bf69ea479c8577a0448f8c707691152e6c4de7f0c4dec5a4bc11dee516e"}, - {file = "debugpy-1.8.1-cp310-cp310-win32.whl", hash = "sha256:3a79c6f62adef994b2dbe9fc2cc9cc3864a23575b6e387339ab739873bea53d0"}, - {file = "debugpy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:7eb7bd2b56ea3bedb009616d9e2f64aab8fc7000d481faec3cd26c98a964bcdd"}, - {file = "debugpy-1.8.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb"}, - {file = "debugpy-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099"}, - {file = "debugpy-1.8.1-cp311-cp311-win32.whl", hash = "sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146"}, - {file = "debugpy-1.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8"}, - {file = "debugpy-1.8.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3ebb70ba1a6524d19fa7bb122f44b74170c447d5746a503e36adc244a20ac539"}, - {file = "debugpy-1.8.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2e658a9630f27534e63922ebf655a6ab60c370f4d2fc5c02a5b19baf4410ace"}, - {file = "debugpy-1.8.1-cp312-cp312-win32.whl", hash = "sha256:caad2846e21188797a1f17fc09c31b84c7c3c23baf2516fed5b40b378515bbf0"}, - {file = "debugpy-1.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:edcc9f58ec0fd121a25bc950d4578df47428d72e1a0d66c07403b04eb93bcf98"}, - {file = "debugpy-1.8.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7a3afa222f6fd3d9dfecd52729bc2e12c93e22a7491405a0ecbf9e1d32d45b39"}, - {file = "debugpy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d915a18f0597ef685e88bb35e5d7ab968964b7befefe1aaea1eb5b2640b586c7"}, - {file = "debugpy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:92116039b5500633cc8d44ecc187abe2dfa9b90f7a82bbf81d079fcdd506bae9"}, - {file = "debugpy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:e38beb7992b5afd9d5244e96ad5fa9135e94993b0c551ceebf3fe1a5d9beb234"}, - {file = "debugpy-1.8.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:bfb20cb57486c8e4793d41996652e5a6a885b4d9175dd369045dad59eaacea42"}, - {file = "debugpy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd3fdd3f67a7e576dd869c184c5dd71d9aaa36ded271939da352880c012e703"}, - {file = "debugpy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:58911e8521ca0c785ac7a0539f1e77e0ce2df753f786188f382229278b4cdf23"}, - {file = "debugpy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:6df9aa9599eb05ca179fb0b810282255202a66835c6efb1d112d21ecb830ddd3"}, - {file = "debugpy-1.8.1-py2.py3-none-any.whl", hash = "sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242"}, - {file = "debugpy-1.8.1.zip", hash = "sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42"}, + {file = "debugpy-1.8.5-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:7e4d594367d6407a120b76bdaa03886e9eb652c05ba7f87e37418426ad2079f7"}, + {file = "debugpy-1.8.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4413b7a3ede757dc33a273a17d685ea2b0c09dbd312cc03f5534a0fd4d40750a"}, + {file = "debugpy-1.8.5-cp310-cp310-win32.whl", hash = "sha256:dd3811bd63632bb25eda6bd73bea8e0521794cda02be41fa3160eb26fc29e7ed"}, + {file = "debugpy-1.8.5-cp310-cp310-win_amd64.whl", hash = "sha256:b78c1250441ce893cb5035dd6f5fc12db968cc07f91cc06996b2087f7cefdd8e"}, + {file = "debugpy-1.8.5-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:606bccba19f7188b6ea9579c8a4f5a5364ecd0bf5a0659c8a5d0e10dcee3032a"}, + {file = "debugpy-1.8.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db9fb642938a7a609a6c865c32ecd0d795d56c1aaa7a7a5722d77855d5e77f2b"}, + {file = "debugpy-1.8.5-cp311-cp311-win32.whl", hash = "sha256:4fbb3b39ae1aa3e5ad578f37a48a7a303dad9a3d018d369bc9ec629c1cfa7408"}, + {file = "debugpy-1.8.5-cp311-cp311-win_amd64.whl", hash = "sha256:345d6a0206e81eb68b1493ce2fbffd57c3088e2ce4b46592077a943d2b968ca3"}, + {file = "debugpy-1.8.5-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:5b5c770977c8ec6c40c60d6f58cacc7f7fe5a45960363d6974ddb9b62dbee156"}, + {file = "debugpy-1.8.5-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0a65b00b7cdd2ee0c2cf4c7335fef31e15f1b7056c7fdbce9e90193e1a8c8cb"}, + {file = "debugpy-1.8.5-cp312-cp312-win32.whl", hash = "sha256:c9f7c15ea1da18d2fcc2709e9f3d6de98b69a5b0fff1807fb80bc55f906691f7"}, + {file = "debugpy-1.8.5-cp312-cp312-win_amd64.whl", hash = "sha256:28ced650c974aaf179231668a293ecd5c63c0a671ae6d56b8795ecc5d2f48d3c"}, + {file = "debugpy-1.8.5-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:3df6692351172a42af7558daa5019651f898fc67450bf091335aa8a18fbf6f3a"}, + {file = "debugpy-1.8.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cd04a73eb2769eb0bfe43f5bfde1215c5923d6924b9b90f94d15f207a402226"}, + {file = "debugpy-1.8.5-cp38-cp38-win32.whl", hash = "sha256:8f913ee8e9fcf9d38a751f56e6de12a297ae7832749d35de26d960f14280750a"}, + {file = "debugpy-1.8.5-cp38-cp38-win_amd64.whl", hash = "sha256:a697beca97dad3780b89a7fb525d5e79f33821a8bc0c06faf1f1289e549743cf"}, + {file = "debugpy-1.8.5-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:0a1029a2869d01cb777216af8c53cda0476875ef02a2b6ff8b2f2c9a4b04176c"}, + {file = "debugpy-1.8.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84c276489e141ed0b93b0af648eef891546143d6a48f610945416453a8ad406"}, + {file = "debugpy-1.8.5-cp39-cp39-win32.whl", hash = "sha256:ad84b7cde7fd96cf6eea34ff6c4a1b7887e0fe2ea46e099e53234856f9d99a34"}, + {file = "debugpy-1.8.5-cp39-cp39-win_amd64.whl", hash = "sha256:7b0fe36ed9d26cb6836b0a51453653f8f2e347ba7348f2bbfe76bfeb670bfb1c"}, + {file = "debugpy-1.8.5-py2.py3-none-any.whl", hash = "sha256:55919dce65b471eff25901acf82d328bbd5b833526b6c1364bd5133754777a44"}, + {file = "debugpy-1.8.5.zip", hash = "sha256:b2112cfeb34b4507399d298fe7023a16656fc553ed5246536060ca7bd0e668d0"}, ] [[package]] @@ -1301,33 +1379,42 @@ files = [ [[package]] name = "earthaccess" -version = "0.5.3" +version = "0.10.0" description = "Client library for NASA Earthdata APIs" optional = false -python-versions = ">=3.8,<4.0" +python-versions = "<4.0,>=3.9" files = [ - {file = "earthaccess-0.5.3-py3-none-any.whl", hash = "sha256:9fe637ce0b5c7ff90d2453752c130c633e9c561c5a7ed8bf1071d01818101e8b"}, - {file = "earthaccess-0.5.3.tar.gz", hash = "sha256:65eff69433687e3d1773a749e0a03c88034c9e197facb79cf1b4b0696c8895fc"}, + {file = "earthaccess-0.10.0-py3-none-any.whl", hash = "sha256:045473588012d2042a31cd25e0abafac45715a20b168f26194ab6e0fc30b1a8f"}, + {file = "earthaccess-0.10.0.tar.gz", hash = "sha256:318bddb33b08bb7087a76f46a628eef0fa12258aafad91008fecee02e6186f75"}, ] [package.dependencies] -fsspec = ">=2022.1" +fsspec = ">=2022.11" +importlib-resources = ">=6.3.2" multimethod = ">=1.8" +numpy = [ + {version = ">=1.24.0", markers = "python_version < \"3.12\""}, + {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, +] pqdm = ">=0.1" -python-cmr = ">=0.7" -requests = ">=2.26,<3.0.0" -s3fs = ">=2021.11,<2024" +python-cmr = ">=0.10.0" +requests = ">=2.26" +s3fs = ">=2022.11" tinynetrc = ">=1.3.1,<2.0.0" +typing_extensions = ">=4.10.0" + +[package.extras] +kerchunk = ["dask (>=2022.1.0)", "kerchunk (>=0.1.2)"] [[package]] name = "exceptiongroup" -version = "1.2.1" +version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"}, - {file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"}, + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, ] [package.extras] @@ -1335,13 +1422,13 @@ test = ["pytest (>=6)"] [[package]] name = "executing" -version = "2.0.1" +version = "2.1.0" description = "Get the currently executing AST node of a frame, and other information" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" files = [ - {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"}, - {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"}, + {file = "executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf"}, + {file = "executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab"}, ] [package.extras] @@ -1363,35 +1450,36 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc [[package]] name = "fiona" -version = "1.9.6" +version = "1.10.0" description = "Fiona reads and writes spatial data files" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "fiona-1.9.6-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:63e528b5ea3d8b1038d788e7c65117835c787ba7fdc94b1b42f09c2cbc0aaff2"}, - {file = "fiona-1.9.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:918bd27d8625416672e834593970f96dff63215108f81efb876fe5c0bc58a3b4"}, - {file = "fiona-1.9.6-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:e313210b30d09ed8f829bf625599e248dadd78622728030221f6526580ff26c5"}, - {file = "fiona-1.9.6-cp310-cp310-win_amd64.whl", hash = "sha256:89095c2d542325ee45894b8837e8048cdbb2f22274934e1be3b673ca628010d7"}, - {file = "fiona-1.9.6-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:98cea6f435843b2119731c6b0470e5b7386aa16b6aa7edabbf1ed93aefe029c3"}, - {file = "fiona-1.9.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f4230eccbd896a79d1ebfa551d84bf90f512f7bcbe1ca61e3f82231321f1a532"}, - {file = "fiona-1.9.6-cp311-cp311-manylinux2014_x86_64.whl", hash = "sha256:48b6218224e96de5e36b5eb259f37160092260e5de0dcd82ca200b1887aa9884"}, - {file = "fiona-1.9.6-cp311-cp311-win_amd64.whl", hash = "sha256:c1dd5fbc29b7303bb87eb683455e8451e1a53bb8faf20ef97fdcd843c9e4a7f6"}, - {file = "fiona-1.9.6-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:42d8a0e5570948d3821c493b6141866d9a4d7a64edad2be4ecbb89f81904baac"}, - {file = "fiona-1.9.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39819fb8f5ec6d9971cb01b912b4431615a3d3f50c83798565d8ce41917930db"}, - {file = "fiona-1.9.6-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:9b53034efdf93ada9295b081e6a8280af7c75496a20df82d4c2ca46d65b85905"}, - {file = "fiona-1.9.6-cp312-cp312-win_amd64.whl", hash = "sha256:1dcd6eca7524535baf2a39d7981b4a46d33ae28c313934a7c3eae62eecf9dfa5"}, - {file = "fiona-1.9.6-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e5404ed08c711489abcb3a50a184816825b8af06eb73ad2a99e18b8e7b47c96a"}, - {file = "fiona-1.9.6-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:53bedd2989e255df1bf3378ae9c06d6d241ec273c280c544bb44ffffebb97fb0"}, - {file = "fiona-1.9.6-cp37-cp37m-win_amd64.whl", hash = "sha256:77653a08564a44e634c44cd74a068d2f55d1d4029edd16d1c8aadcc4d8cc1d2c"}, - {file = "fiona-1.9.6-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:e7617563b36d2be99f048f0d0054b4d765f4aae454398f88f19de9c2c324b7f8"}, - {file = "fiona-1.9.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:50037c3b7a5f6f434b562b5b1a5b664f1caa7a4383b00af23cdb59bfc6ba852c"}, - {file = "fiona-1.9.6-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:bf51846ad602757bf27876f458c5c9f14b09421fac612f64273cc4e3fcabc441"}, - {file = "fiona-1.9.6-cp38-cp38-win_amd64.whl", hash = "sha256:11af1afc1255642a7787fe112c29d01f968f1053e4d4700fc6f3bb879c1622e0"}, - {file = "fiona-1.9.6-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:52e8fec650b72fc5253d8f86b63859acc687182281c29bfacd3930496cf982d1"}, - {file = "fiona-1.9.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9b92aa1badb2773e7cac19bef3064d73e9d80c67c42f0928db2520a04be6f2f"}, - {file = "fiona-1.9.6-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:0eaffbf3bfae9960484c0c08ea461b0c40e111497f04e9475ebf15ac7a22d9dc"}, - {file = "fiona-1.9.6-cp39-cp39-win_amd64.whl", hash = "sha256:f1b49d51a744874608b689f029766aa1e078dd72e94b44cf8eeef6d7bd2e9051"}, - {file = "fiona-1.9.6.tar.gz", hash = "sha256:791b3494f8b218c06ea56f892bd6ba893dfa23525347761d066fb7738acda3b1"}, + {file = "fiona-1.10.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:2f8c6e7d2e5e2dc3b72b520cd160ca6d3689748b20d35b518eec9073f5a3c5bf"}, + {file = "fiona-1.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b2a42fb0a7168003015ab9648712f7d7eb971237af3c9be6000df69cd4b97ba7"}, + {file = "fiona-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d95a93d6d37e04232b141d9f08190b30e7dc368126a34342d764b9d0a857d770"}, + {file = "fiona-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:382cffc905d44a933951857ae07f79cf59567db08f4201ed2a28f9f9bcc86932"}, + {file = "fiona-1.10.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:2854fca6478ca3c1dc3f06531025550046f405488909a5be11ea97e4c55894db"}, + {file = "fiona-1.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef27d75046e57b3e55c4b5d4e1bf7e43ef490e73ada5e86f9b148aa23a2e7fd4"}, + {file = "fiona-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16072f9313f60220310951561c5df29122d078d26316455dc58516c330881d35"}, + {file = "fiona-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:1a7f28c5667d5cb05891fd00ed8ca2d3067bb58c90ca928a2741c0da74daf10d"}, + {file = "fiona-1.10.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:d099b1b5ab99db1d144ac47f657e14471178537d878ebd016c37afdf37303399"}, + {file = "fiona-1.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8ad1ea80555bc56047d4b4e60c9424cf66875f161b3e56ebd60fa0574dc6693f"}, + {file = "fiona-1.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a273cc957e86289609b47155f75d60c2cc37974a92618e016f75bc5ab9cc2dec"}, + {file = "fiona-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:ef44b3b0704244503a5f12ae92ca88b2cf4fedc9fd881b00c7c58b6899ca5133"}, + {file = "fiona-1.10.0-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:80929d220a92b50592b5ce96233d631c61a3c9b9bebd26ea136e7e48ffb50616"}, + {file = "fiona-1.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82514e8cc113245f2c7deda1c66f0aba67b183e20404365bbb7347e12b35c80f"}, + {file = "fiona-1.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c1a555b2546d3c69d0826a526a5c3e50a1cd330c95e2e0ebf6e82fa81fc2d96"}, + {file = "fiona-1.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:bf11de868ab601b8d917dc38719b39bf8bdeaadc4fda9964d96b4b354e528fff"}, + {file = "fiona-1.10.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:c0e72c4ed6ce7e2b2531a62844f3216528c149b55b89ff2881bcfe34d3b37300"}, + {file = "fiona-1.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:065328fcc61caeca7c5d4b0b1b741213e422997ea66eaa04c2e207e1609eb0e7"}, + {file = "fiona-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34575acb68b41009b28237121c728015aebb2ab3969cf46e57d9b9e5510ece61"}, + {file = "fiona-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:bfc9b76345a58ddcf9aae8697eb444728ff7a2cde7d5925f3031ff25e9eaa339"}, + {file = "fiona-1.10.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:f335beb927c5e9d9997a9cf665d6eee2e24191a02582f01786afa76119b71110"}, + {file = "fiona-1.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5f1db6fc3f9212fdc817628981731e0adcdce88b0afd30531986c732a75f6a98"}, + {file = "fiona-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc68efb479a04be9a8e9c381940493c22a47f6aec5bbec22d0bb57a9cb240296"}, + {file = "fiona-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:d99d2faa8cb3590dc0018a2832af39e1930b39cfff53017f3681d505bf813fee"}, + {file = "fiona-1.10.0.tar.gz", hash = "sha256:3529fd46d269ff3f70aeb9316a93ae95cf2f87d7e148a8ff0d68532bf81ff7ae"}, ] [package.dependencies] @@ -1400,29 +1488,28 @@ certifi = "*" click = ">=8.0,<9.0" click-plugins = ">=1.0" cligj = ">=0.5" -six = "*" [package.extras] all = ["fiona[calc,s3,test]"] -calc = ["shapely"] +calc = ["pyparsing", "shapely"] s3 = ["boto3 (>=1.3.1)"] -test = ["fiona[s3]", "pytest (>=7)", "pytest-cov", "pytz"] +test = ["aiohttp", "fiona[s3]", "fsspec", "pytest (>=7)", "pytest-cov", "pytz"] [[package]] name = "flake8" -version = "6.1.0" +version = "7.1.1" description = "the modular source code checker: pep8 pyflakes and co" optional = false python-versions = ">=3.8.1" files = [ - {file = "flake8-6.1.0-py2.py3-none-any.whl", hash = "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5"}, - {file = "flake8-6.1.0.tar.gz", hash = "sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23"}, + {file = "flake8-7.1.1-py2.py3-none-any.whl", hash = "sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"}, + {file = "flake8-7.1.1.tar.gz", hash = "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38"}, ] [package.dependencies] mccabe = ">=0.7.0,<0.8.0" -pycodestyle = ">=2.11.0,<2.12.0" -pyflakes = ">=3.1.0,<3.2.0" +pycodestyle = ">=2.12.0,<2.13.0" +pyflakes = ">=3.2.0,<3.3.0" [[package]] name = "folium" @@ -1447,53 +1534,53 @@ testing = ["pytest"] [[package]] name = "fonttools" -version = "4.53.0" +version = "4.53.1" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.53.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:52a6e0a7a0bf611c19bc8ec8f7592bdae79c8296c70eb05917fd831354699b20"}, - {file = "fonttools-4.53.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:099634631b9dd271d4a835d2b2a9e042ccc94ecdf7e2dd9f7f34f7daf333358d"}, - {file = "fonttools-4.53.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e40013572bfb843d6794a3ce076c29ef4efd15937ab833f520117f8eccc84fd6"}, - {file = "fonttools-4.53.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:715b41c3e231f7334cbe79dfc698213dcb7211520ec7a3bc2ba20c8515e8a3b5"}, - {file = "fonttools-4.53.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74ae2441731a05b44d5988d3ac2cf784d3ee0a535dbed257cbfff4be8bb49eb9"}, - {file = "fonttools-4.53.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:95db0c6581a54b47c30860d013977b8a14febc206c8b5ff562f9fe32738a8aca"}, - {file = "fonttools-4.53.0-cp310-cp310-win32.whl", hash = "sha256:9cd7a6beec6495d1dffb1033d50a3f82dfece23e9eb3c20cd3c2444d27514068"}, - {file = "fonttools-4.53.0-cp310-cp310-win_amd64.whl", hash = "sha256:daaef7390e632283051e3cf3e16aff2b68b247e99aea916f64e578c0449c9c68"}, - {file = "fonttools-4.53.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a209d2e624ba492df4f3bfad5996d1f76f03069c6133c60cd04f9a9e715595ec"}, - {file = "fonttools-4.53.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f520d9ac5b938e6494f58a25c77564beca7d0199ecf726e1bd3d56872c59749"}, - {file = "fonttools-4.53.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eceef49f457253000e6a2d0f7bd08ff4e9fe96ec4ffce2dbcb32e34d9c1b8161"}, - {file = "fonttools-4.53.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa1f3e34373aa16045484b4d9d352d4c6b5f9f77ac77a178252ccbc851e8b2ee"}, - {file = "fonttools-4.53.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:28d072169fe8275fb1a0d35e3233f6df36a7e8474e56cb790a7258ad822b6fd6"}, - {file = "fonttools-4.53.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4a2a6ba400d386e904fd05db81f73bee0008af37799a7586deaa4aef8cd5971e"}, - {file = "fonttools-4.53.0-cp311-cp311-win32.whl", hash = "sha256:bb7273789f69b565d88e97e9e1da602b4ee7ba733caf35a6c2affd4334d4f005"}, - {file = "fonttools-4.53.0-cp311-cp311-win_amd64.whl", hash = "sha256:9fe9096a60113e1d755e9e6bda15ef7e03391ee0554d22829aa506cdf946f796"}, - {file = "fonttools-4.53.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d8f191a17369bd53a5557a5ee4bab91d5330ca3aefcdf17fab9a497b0e7cff7a"}, - {file = "fonttools-4.53.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:93156dd7f90ae0a1b0e8871032a07ef3178f553f0c70c386025a808f3a63b1f4"}, - {file = "fonttools-4.53.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bff98816cb144fb7b85e4b5ba3888a33b56ecef075b0e95b95bcd0a5fbf20f06"}, - {file = "fonttools-4.53.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:973d030180eca8255b1bce6ffc09ef38a05dcec0e8320cc9b7bcaa65346f341d"}, - {file = "fonttools-4.53.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c4ee5a24e281fbd8261c6ab29faa7fd9a87a12e8c0eed485b705236c65999109"}, - {file = "fonttools-4.53.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bd5bc124fae781a4422f61b98d1d7faa47985f663a64770b78f13d2c072410c2"}, - {file = "fonttools-4.53.0-cp312-cp312-win32.whl", hash = "sha256:a239afa1126b6a619130909c8404070e2b473dd2b7fc4aacacd2e763f8597fea"}, - {file = "fonttools-4.53.0-cp312-cp312-win_amd64.whl", hash = "sha256:45b4afb069039f0366a43a5d454bc54eea942bfb66b3fc3e9a2c07ef4d617380"}, - {file = "fonttools-4.53.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:93bc9e5aaa06ff928d751dc6be889ff3e7d2aa393ab873bc7f6396a99f6fbb12"}, - {file = "fonttools-4.53.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2367d47816cc9783a28645bc1dac07f8ffc93e0f015e8c9fc674a5b76a6da6e4"}, - {file = "fonttools-4.53.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:907fa0b662dd8fc1d7c661b90782ce81afb510fc4b7aa6ae7304d6c094b27bce"}, - {file = "fonttools-4.53.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e0ad3c6ea4bd6a289d958a1eb922767233f00982cf0fe42b177657c86c80a8f"}, - {file = "fonttools-4.53.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:73121a9b7ff93ada888aaee3985a88495489cc027894458cb1a736660bdfb206"}, - {file = "fonttools-4.53.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ee595d7ba9bba130b2bec555a40aafa60c26ce68ed0cf509983e0f12d88674fd"}, - {file = "fonttools-4.53.0-cp38-cp38-win32.whl", hash = "sha256:fca66d9ff2ac89b03f5aa17e0b21a97c21f3491c46b583bb131eb32c7bab33af"}, - {file = "fonttools-4.53.0-cp38-cp38-win_amd64.whl", hash = "sha256:31f0e3147375002aae30696dd1dc596636abbd22fca09d2e730ecde0baad1d6b"}, - {file = "fonttools-4.53.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7d6166192dcd925c78a91d599b48960e0a46fe565391c79fe6de481ac44d20ac"}, - {file = "fonttools-4.53.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef50ec31649fbc3acf6afd261ed89d09eb909b97cc289d80476166df8438524d"}, - {file = "fonttools-4.53.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f193f060391a455920d61684a70017ef5284ccbe6023bb056e15e5ac3de11d1"}, - {file = "fonttools-4.53.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba9f09ff17f947392a855e3455a846f9855f6cf6bec33e9a427d3c1d254c712f"}, - {file = "fonttools-4.53.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0c555e039d268445172b909b1b6bdcba42ada1cf4a60e367d68702e3f87e5f64"}, - {file = "fonttools-4.53.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5a4788036201c908079e89ae3f5399b33bf45b9ea4514913f4dbbe4fac08efe0"}, - {file = "fonttools-4.53.0-cp39-cp39-win32.whl", hash = "sha256:d1a24f51a3305362b94681120c508758a88f207fa0a681c16b5a4172e9e6c7a9"}, - {file = "fonttools-4.53.0-cp39-cp39-win_amd64.whl", hash = "sha256:1e677bfb2b4bd0e5e99e0f7283e65e47a9814b0486cb64a41adf9ef110e078f2"}, - {file = "fonttools-4.53.0-py3-none-any.whl", hash = "sha256:6b4f04b1fbc01a3569d63359f2227c89ab294550de277fd09d8fca6185669fa4"}, - {file = "fonttools-4.53.0.tar.gz", hash = "sha256:c93ed66d32de1559b6fc348838c7572d5c0ac1e4a258e76763a5caddd8944002"}, + {file = "fonttools-4.53.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0679a30b59d74b6242909945429dbddb08496935b82f91ea9bf6ad240ec23397"}, + {file = "fonttools-4.53.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8bf06b94694251861ba7fdeea15c8ec0967f84c3d4143ae9daf42bbc7717fe3"}, + {file = "fonttools-4.53.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b96cd370a61f4d083c9c0053bf634279b094308d52fdc2dd9a22d8372fdd590d"}, + {file = "fonttools-4.53.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1c7c5aa18dd3b17995898b4a9b5929d69ef6ae2af5b96d585ff4005033d82f0"}, + {file = "fonttools-4.53.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e013aae589c1c12505da64a7d8d023e584987e51e62006e1bb30d72f26522c41"}, + {file = "fonttools-4.53.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9efd176f874cb6402e607e4cc9b4a9cd584d82fc34a4b0c811970b32ba62501f"}, + {file = "fonttools-4.53.1-cp310-cp310-win32.whl", hash = "sha256:c8696544c964500aa9439efb6761947393b70b17ef4e82d73277413f291260a4"}, + {file = "fonttools-4.53.1-cp310-cp310-win_amd64.whl", hash = "sha256:8959a59de5af6d2bec27489e98ef25a397cfa1774b375d5787509c06659b3671"}, + {file = "fonttools-4.53.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:da33440b1413bad53a8674393c5d29ce64d8c1a15ef8a77c642ffd900d07bfe1"}, + {file = "fonttools-4.53.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ff7e5e9bad94e3a70c5cd2fa27f20b9bb9385e10cddab567b85ce5d306ea923"}, + {file = "fonttools-4.53.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6e7170d675d12eac12ad1a981d90f118c06cf680b42a2d74c6c931e54b50719"}, + {file = "fonttools-4.53.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bee32ea8765e859670c4447b0817514ca79054463b6b79784b08a8df3a4d78e3"}, + {file = "fonttools-4.53.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6e08f572625a1ee682115223eabebc4c6a2035a6917eac6f60350aba297ccadb"}, + {file = "fonttools-4.53.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b21952c092ffd827504de7e66b62aba26fdb5f9d1e435c52477e6486e9d128b2"}, + {file = "fonttools-4.53.1-cp311-cp311-win32.whl", hash = "sha256:9dfdae43b7996af46ff9da520998a32b105c7f098aeea06b2226b30e74fbba88"}, + {file = "fonttools-4.53.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4d0096cb1ac7a77b3b41cd78c9b6bc4a400550e21dc7a92f2b5ab53ed74eb02"}, + {file = "fonttools-4.53.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d92d3c2a1b39631a6131c2fa25b5406855f97969b068e7e08413325bc0afba58"}, + {file = "fonttools-4.53.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3b3c8ebafbee8d9002bd8f1195d09ed2bd9ff134ddec37ee8f6a6375e6a4f0e8"}, + {file = "fonttools-4.53.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f029c095ad66c425b0ee85553d0dc326d45d7059dbc227330fc29b43e8ba60"}, + {file = "fonttools-4.53.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f5e6c3510b79ea27bb1ebfcc67048cde9ec67afa87c7dd7efa5c700491ac7f"}, + {file = "fonttools-4.53.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f677ce218976496a587ab17140da141557beb91d2a5c1a14212c994093f2eae2"}, + {file = "fonttools-4.53.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9e6ceba2a01b448e36754983d376064730690401da1dd104ddb543519470a15f"}, + {file = "fonttools-4.53.1-cp312-cp312-win32.whl", hash = "sha256:791b31ebbc05197d7aa096bbc7bd76d591f05905d2fd908bf103af4488e60670"}, + {file = "fonttools-4.53.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ed170b5e17da0264b9f6fae86073be3db15fa1bd74061c8331022bca6d09bab"}, + {file = "fonttools-4.53.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c818c058404eb2bba05e728d38049438afd649e3c409796723dfc17cd3f08749"}, + {file = "fonttools-4.53.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:651390c3b26b0c7d1f4407cad281ee7a5a85a31a110cbac5269de72a51551ba2"}, + {file = "fonttools-4.53.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e54f1bba2f655924c1138bbc7fa91abd61f45c68bd65ab5ed985942712864bbb"}, + {file = "fonttools-4.53.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9cd19cf4fe0595ebdd1d4915882b9440c3a6d30b008f3cc7587c1da7b95be5f"}, + {file = "fonttools-4.53.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2af40ae9cdcb204fc1d8f26b190aa16534fcd4f0df756268df674a270eab575d"}, + {file = "fonttools-4.53.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:35250099b0cfb32d799fb5d6c651220a642fe2e3c7d2560490e6f1d3f9ae9169"}, + {file = "fonttools-4.53.1-cp38-cp38-win32.whl", hash = "sha256:f08df60fbd8d289152079a65da4e66a447efc1d5d5a4d3f299cdd39e3b2e4a7d"}, + {file = "fonttools-4.53.1-cp38-cp38-win_amd64.whl", hash = "sha256:7b6b35e52ddc8fb0db562133894e6ef5b4e54e1283dff606fda3eed938c36fc8"}, + {file = "fonttools-4.53.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:75a157d8d26c06e64ace9df037ee93a4938a4606a38cb7ffaf6635e60e253b7a"}, + {file = "fonttools-4.53.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4824c198f714ab5559c5be10fd1adf876712aa7989882a4ec887bf1ef3e00e31"}, + {file = "fonttools-4.53.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:becc5d7cb89c7b7afa8321b6bb3dbee0eec2b57855c90b3e9bf5fb816671fa7c"}, + {file = "fonttools-4.53.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84ec3fb43befb54be490147b4a922b5314e16372a643004f182babee9f9c3407"}, + {file = "fonttools-4.53.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:73379d3ffdeecb376640cd8ed03e9d2d0e568c9d1a4e9b16504a834ebadc2dfb"}, + {file = "fonttools-4.53.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:02569e9a810f9d11f4ae82c391ebc6fb5730d95a0657d24d754ed7763fb2d122"}, + {file = "fonttools-4.53.1-cp39-cp39-win32.whl", hash = "sha256:aae7bd54187e8bf7fd69f8ab87b2885253d3575163ad4d669a262fe97f0136cb"}, + {file = "fonttools-4.53.1-cp39-cp39-win_amd64.whl", hash = "sha256:e5b708073ea3d684235648786f5f6153a48dc8762cdfe5563c57e80787c29fbb"}, + {file = "fonttools-4.53.1-py3-none-any.whl", hash = "sha256:f1f8758a2ad110bd6432203a344269f445a2907dc24ef6bccfd0ac4e14e0d71d"}, + {file = "fonttools-4.53.1.tar.gz", hash = "sha256:e128778a8e9bc11159ce5447f76766cefbd876f44bd79aff030287254e4752c4"}, ] [package.extras] @@ -1598,13 +1685,13 @@ files = [ [[package]] name = "fsspec" -version = "2023.12.2" +version = "2024.9.0" description = "File-system specification" optional = false python-versions = ">=3.8" files = [ - {file = "fsspec-2023.12.2-py3-none-any.whl", hash = "sha256:d800d87f72189a745fa3d6b033b9dc4a34ad069f60ca60b943a63599f5501960"}, - {file = "fsspec-2023.12.2.tar.gz", hash = "sha256:8548d39e8810b59c38014934f6b31e57f40c1b20f911f4cc2b85389c7e9bf0cb"}, + {file = "fsspec-2024.9.0-py3-none-any.whl", hash = "sha256:a0947d552d8a6efa72cc2c730b12c41d043509156966cca4fb157b0f2a0c574b"}, + {file = "fsspec-2024.9.0.tar.gz", hash = "sha256:4b0afb90c2f21832df142f292649035d80b421f60a9e1c027802e5a0da2b04e8"}, ] [package.extras] @@ -1612,7 +1699,8 @@ abfs = ["adlfs"] adl = ["adlfs"] arrow = ["pyarrow (>=1)"] dask = ["dask", "distributed"] -devel = ["pytest", "pytest-cov"] +dev = ["pre-commit", "ruff"] +doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"] dropbox = ["dropbox", "dropboxdrivefs", "requests"] full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] fuse = ["fusepy"] @@ -1622,13 +1710,16 @@ github = ["requests"] gs = ["gcsfs"] gui = ["panel"] hdfs = ["pyarrow (>=1)"] -http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "requests"] +http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] libarchive = ["libarchive-c"] oci = ["ocifs"] s3 = ["s3fs"] sftp = ["paramiko"] smb = ["smbprotocol"] ssh = ["paramiko"] +test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] +test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask-expr", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] +test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard"] tqdm = ["tqdm"] [[package]] @@ -1644,87 +1735,96 @@ files = [ [[package]] name = "geopandas" -version = "0.13.2" +version = "0.14.4" description = "Geographic pandas extensions" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "geopandas-0.13.2-py3-none-any.whl", hash = "sha256:101cfd0de54bcf9e287a55b5ea17ebe0db53a5e25a28bacf100143d0507cabd9"}, - {file = "geopandas-0.13.2.tar.gz", hash = "sha256:e5b56d9c20800c77bcc0c914db3f27447a37b23b2cd892be543f5001a694a968"}, + {file = "geopandas-0.14.4-py3-none-any.whl", hash = "sha256:3bb6473cb59d51e1a7fe2dbc24a1a063fb0ebdeddf3ce08ddbf8c7ddc99689aa"}, + {file = "geopandas-0.14.4.tar.gz", hash = "sha256:56765be9d58e2c743078085db3bd07dc6be7719f0dbe1dfdc1d705cb80be7c25"}, ] [package.dependencies] -fiona = ">=1.8.19" +fiona = ">=1.8.21" +numpy = ">=1.22" packaging = "*" -pandas = ">=1.1.0" -pyproj = ">=3.0.1" -shapely = ">=1.7.1" +pandas = ">=1.4.0" +pyproj = ">=3.3.0" +shapely = ">=1.8.0" [[package]] name = "greenlet" -version = "3.0.3" +version = "3.1.0" description = "Lightweight in-process concurrent programming" optional = false python-versions = ">=3.7" files = [ - {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"}, - {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"}, - {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"}, - {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"}, - {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"}, - {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"}, - {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"}, - {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"}, - {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"}, - {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"}, - {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"}, - {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"}, - {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"}, - {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"}, - {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"}, - {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"}, - {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"}, - {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"}, - {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"}, - {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"}, - {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"}, - {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"}, - {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"}, - {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"}, - {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"}, - {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"}, - {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"}, - {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"}, + {file = "greenlet-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a814dc3100e8a046ff48faeaa909e80cdb358411a3d6dd5293158425c684eda8"}, + {file = "greenlet-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a771dc64fa44ebe58d65768d869fcfb9060169d203446c1d446e844b62bdfdca"}, + {file = "greenlet-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0e49a65d25d7350cca2da15aac31b6f67a43d867448babf997fe83c7505f57bc"}, + {file = "greenlet-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2cd8518eade968bc52262d8c46727cfc0826ff4d552cf0430b8d65aaf50bb91d"}, + {file = "greenlet-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76dc19e660baea5c38e949455c1181bc018893f25372d10ffe24b3ed7341fb25"}, + {file = "greenlet-3.1.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c0a5b1c22c82831f56f2f7ad9bbe4948879762fe0d59833a4a71f16e5fa0f682"}, + {file = "greenlet-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2651dfb006f391bcb240635079a68a261b227a10a08af6349cba834a2141efa1"}, + {file = "greenlet-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3e7e6ef1737a819819b1163116ad4b48d06cfdd40352d813bb14436024fcda99"}, + {file = "greenlet-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:ffb08f2a1e59d38c7b8b9ac8083c9c8b9875f0955b1e9b9b9a965607a51f8e54"}, + {file = "greenlet-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9730929375021ec90f6447bff4f7f5508faef1c02f399a1953870cdb78e0c345"}, + {file = "greenlet-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:713d450cf8e61854de9420fb7eea8ad228df4e27e7d4ed465de98c955d2b3fa6"}, + {file = "greenlet-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c3446937be153718250fe421da548f973124189f18fe4575a0510b5c928f0cc"}, + {file = "greenlet-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ddc7bcedeb47187be74208bc652d63d6b20cb24f4e596bd356092d8000da6d6"}, + {file = "greenlet-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44151d7b81b9391ed759a2f2865bbe623ef00d648fed59363be2bbbd5154656f"}, + {file = "greenlet-3.1.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6cea1cca3be76c9483282dc7760ea1cc08a6ecec1f0b6ca0a94ea0d17432da19"}, + {file = "greenlet-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:619935a44f414274a2c08c9e74611965650b730eb4efe4b2270f91df5e4adf9a"}, + {file = "greenlet-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:221169d31cada333a0c7fd087b957c8f431c1dba202c3a58cf5a3583ed973e9b"}, + {file = "greenlet-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:01059afb9b178606b4b6e92c3e710ea1635597c3537e44da69f4531e111dd5e9"}, + {file = "greenlet-3.1.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:24fc216ec7c8be9becba8b64a98a78f9cd057fd2dc75ae952ca94ed8a893bf27"}, + {file = "greenlet-3.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d07c28b85b350564bdff9f51c1c5007dfb2f389385d1bc23288de51134ca303"}, + {file = "greenlet-3.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:243a223c96a4246f8a30ea470c440fe9db1f5e444941ee3c3cd79df119b8eebf"}, + {file = "greenlet-3.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:26811df4dc81271033a7836bc20d12cd30938e6bd2e9437f56fa03da81b0f8fc"}, + {file = "greenlet-3.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9d86401550b09a55410f32ceb5fe7efcd998bd2dad9e82521713cb148a4a15f"}, + {file = "greenlet-3.1.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:26d9c1c4f1748ccac0bae1dbb465fb1a795a75aba8af8ca871503019f4285e2a"}, + {file = "greenlet-3.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:cd468ec62257bb4544989402b19d795d2305eccb06cde5da0eb739b63dc04665"}, + {file = "greenlet-3.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a53dfe8f82b715319e9953330fa5c8708b610d48b5c59f1316337302af5c0811"}, + {file = "greenlet-3.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:28fe80a3eb673b2d5cc3b12eea468a5e5f4603c26aa34d88bf61bba82ceb2f9b"}, + {file = "greenlet-3.1.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:76b3e3976d2a452cba7aa9e453498ac72240d43030fdc6d538a72b87eaff52fd"}, + {file = "greenlet-3.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:655b21ffd37a96b1e78cc48bf254f5ea4b5b85efaf9e9e2a526b3c9309d660ca"}, + {file = "greenlet-3.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c6f4c2027689093775fd58ca2388d58789009116844432d920e9147f91acbe64"}, + {file = "greenlet-3.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76e5064fd8e94c3f74d9fd69b02d99e3cdb8fc286ed49a1f10b256e59d0d3a0b"}, + {file = "greenlet-3.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a4bf607f690f7987ab3291406e012cd8591a4f77aa54f29b890f9c331e84989"}, + {file = "greenlet-3.1.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:037d9ac99540ace9424cb9ea89f0accfaff4316f149520b4ae293eebc5bded17"}, + {file = "greenlet-3.1.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:90b5bbf05fe3d3ef697103850c2ce3374558f6fe40fd57c9fac1bf14903f50a5"}, + {file = "greenlet-3.1.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:726377bd60081172685c0ff46afbc600d064f01053190e4450857483c4d44484"}, + {file = "greenlet-3.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:d46d5069e2eeda111d6f71970e341f4bd9aeeee92074e649ae263b834286ecc0"}, + {file = "greenlet-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81eeec4403a7d7684b5812a8aaa626fa23b7d0848edb3a28d2eb3220daddcbd0"}, + {file = "greenlet-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a3dae7492d16e85ea6045fd11cb8e782b63eac8c8d520c3a92c02ac4573b0a6"}, + {file = "greenlet-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b5ea3664eed571779403858d7cd0a9b0ebf50d57d2cdeafc7748e09ef8cd81a"}, + {file = "greenlet-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a22f4e26400f7f48faef2d69c20dc055a1f3043d330923f9abe08ea0aecc44df"}, + {file = "greenlet-3.1.0-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13ff8c8e54a10472ce3b2a2da007f915175192f18e6495bad50486e87c7f6637"}, + {file = "greenlet-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f9671e7282d8c6fcabc32c0fb8d7c0ea8894ae85cee89c9aadc2d7129e1a9954"}, + {file = "greenlet-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:184258372ae9e1e9bddce6f187967f2e08ecd16906557c4320e3ba88a93438c3"}, + {file = "greenlet-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:a0409bc18a9f85321399c29baf93545152d74a49d92f2f55302f122007cfda00"}, + {file = "greenlet-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:9eb4a1d7399b9f3c7ac68ae6baa6be5f9195d1d08c9ddc45ad559aa6b556bce6"}, + {file = "greenlet-3.1.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:a8870983af660798dc1b529e1fd6f1cefd94e45135a32e58bd70edd694540f33"}, + {file = "greenlet-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfcfb73aed40f550a57ea904629bdaf2e562c68fa1164fa4588e752af6efdc3f"}, + {file = "greenlet-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f9482c2ed414781c0af0b35d9d575226da6b728bd1a720668fa05837184965b7"}, + {file = "greenlet-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d58ec349e0c2c0bc6669bf2cd4982d2f93bf067860d23a0ea1fe677b0f0b1e09"}, + {file = "greenlet-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd65695a8df1233309b701dec2539cc4b11e97d4fcc0f4185b4a12ce54db0491"}, + {file = "greenlet-3.1.0-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:665b21e95bc0fce5cab03b2e1d90ba9c66c510f1bb5fdc864f3a377d0f553f6b"}, + {file = "greenlet-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d3c59a06c2c28a81a026ff11fbf012081ea34fb9b7052f2ed0366e14896f0a1d"}, + {file = "greenlet-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5415b9494ff6240b09af06b91a375731febe0090218e2898d2b85f9b92abcda0"}, + {file = "greenlet-3.1.0-cp38-cp38-win32.whl", hash = "sha256:1544b8dd090b494c55e60c4ff46e238be44fdc472d2589e943c241e0169bcea2"}, + {file = "greenlet-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:7f346d24d74c00b6730440f5eb8ec3fe5774ca8d1c9574e8e57c8671bb51b910"}, + {file = "greenlet-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:db1b3ccb93488328c74e97ff888604a8b95ae4f35f4f56677ca57a4fc3a4220b"}, + {file = "greenlet-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44cd313629ded43bb3b98737bba2f3e2c2c8679b55ea29ed73daea6b755fe8e7"}, + {file = "greenlet-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fad7a051e07f64e297e6e8399b4d6a3bdcad3d7297409e9a06ef8cbccff4f501"}, + {file = "greenlet-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3967dcc1cd2ea61b08b0b276659242cbce5caca39e7cbc02408222fb9e6ff39"}, + {file = "greenlet-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d45b75b0f3fd8d99f62eb7908cfa6d727b7ed190737dec7fe46d993da550b81a"}, + {file = "greenlet-3.1.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2d004db911ed7b6218ec5c5bfe4cf70ae8aa2223dffbb5b3c69e342bb253cb28"}, + {file = "greenlet-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9505a0c8579899057cbefd4ec34d865ab99852baf1ff33a9481eb3924e2da0b"}, + {file = "greenlet-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5fd6e94593f6f9714dbad1aaba734b5ec04593374fa6638df61592055868f8b8"}, + {file = "greenlet-3.1.0-cp39-cp39-win32.whl", hash = "sha256:d0dd943282231480aad5f50f89bdf26690c995e8ff555f26d8a5b9887b559bcc"}, + {file = "greenlet-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:ac0adfdb3a21dc2a24ed728b61e72440d297d0fd3a577389df566651fcd08f97"}, + {file = "greenlet-3.1.0.tar.gz", hash = "sha256:b395121e9bbe8d02a750886f108d540abe66075e61e22f7353d9acb0b81be0f0"}, ] [package.extras] @@ -1733,13 +1833,13 @@ test = ["objgraph", "psutil"] [[package]] name = "idna" -version = "3.7" +version = "3.8" description = "Internationalized Domain Names in Applications (IDNA)" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, - {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, + {file = "idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac"}, + {file = "idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603"}, ] [[package]] @@ -1755,22 +1855,45 @@ files = [ [[package]] name = "importlib-metadata" -version = "7.1.0" +version = "8.5.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, - {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, + {file = "importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b"}, + {file = "importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7"}, ] [package.dependencies] -zipp = ">=0.5" +zipp = ">=3.20" [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] +test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +type = ["pytest-mypy"] + +[[package]] +name = "importlib-resources" +version = "6.4.5" +description = "Read resources from Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "importlib_resources-6.4.5-py3-none-any.whl", hash = "sha256:ac29d5f956f01d5e4bb63102a5a19957f1b9175e45649977264a1416783bb717"}, + {file = "importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065"}, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["jaraco.test (>=5.4)", "pytest (>=6,!=8.1.*)", "zipp (>=3.17)"] +type = ["pytest-mypy"] [[package]] name = "iniconfig" @@ -1785,13 +1908,13 @@ files = [ [[package]] name = "ipykernel" -version = "6.29.4" +version = "6.29.5" description = "IPython Kernel for Jupyter" optional = false python-versions = ">=3.8" files = [ - {file = "ipykernel-6.29.4-py3-none-any.whl", hash = "sha256:1181e653d95c6808039c509ef8e67c4126b3b3af7781496c7cbfb5ed938a27da"}, - {file = "ipykernel-6.29.4.tar.gz", hash = "sha256:3d44070060f9475ac2092b760123fadf105d2e2493c24848b6691a7c4f42af5c"}, + {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, + {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, ] [package.dependencies] @@ -1818,13 +1941,13 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio [[package]] name = "ipython" -version = "8.25.0" +version = "8.27.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" files = [ - {file = "ipython-8.25.0-py3-none-any.whl", hash = "sha256:53eee7ad44df903a06655871cbab66d156a051fd86f3ec6750470ac9604ac1ab"}, - {file = "ipython-8.25.0.tar.gz", hash = "sha256:c6ed726a140b6e725b911528f80439c534fac915246af3efc39440a6b0f9d716"}, + {file = "ipython-8.27.0-py3-none-any.whl", hash = "sha256:f68b3cb8bde357a5d7adc9598d57e22a45dfbea19eb6b98286fa3b288c9cd55c"}, + {file = "ipython-8.27.0.tar.gz", hash = "sha256:0b99a2dc9f15fd68692e898e5568725c6d49c527d36a9fb5960ffbdeaa82ff7e"}, ] [package.dependencies] @@ -1851,7 +1974,7 @@ nbformat = ["nbformat"] notebook = ["ipywidgets", "notebook"] parallel = ["ipyparallel"] qtconsole = ["qtconsole"] -test = ["pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] +test = ["packaging", "pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"] [[package]] @@ -1917,13 +2040,13 @@ files = [ [[package]] name = "jsonschema" -version = "4.22.0" +version = "4.23.0" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.22.0-py3-none-any.whl", hash = "sha256:ff4cfd6b1367a40e7bc6411caec72effadd3db0bbe5017de188f2d6108335802"}, - {file = "jsonschema-4.22.0.tar.gz", hash = "sha256:5b22d434a45935119af990552c862e5d6d564e8f6601206b305a61fdf661a2b7"}, + {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, + {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, ] [package.dependencies] @@ -1934,7 +2057,7 @@ rpds-py = ">=0.7.1" [package.extras] format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=24.6.0)"] [[package]] name = "jsonschema-specifications" @@ -2058,115 +2181,125 @@ test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout" [[package]] name = "kiwisolver" -version = "1.4.5" +version = "1.4.7" description = "A fast implementation of the Cassowary constraint solver" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:05703cf211d585109fcd72207a31bb170a0f22144d68298dc5e61b3c946518af"}, - {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:146d14bebb7f1dc4d5fbf74f8a6cb15ac42baadee8912eb84ac0b3b2a3dc6ac3"}, - {file = "kiwisolver-1.4.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ef7afcd2d281494c0a9101d5c571970708ad911d028137cd558f02b851c08b4"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9eaa8b117dc8337728e834b9c6e2611f10c79e38f65157c4c38e9400286f5cb1"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec20916e7b4cbfb1f12380e46486ec4bcbaa91a9c448b97023fde0d5bbf9e4ff"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39b42c68602539407884cf70d6a480a469b93b81b7701378ba5e2328660c847a"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa12042de0171fad672b6c59df69106d20d5596e4f87b5e8f76df757a7c399aa"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a40773c71d7ccdd3798f6489aaac9eee213d566850a9533f8d26332d626b82c"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:19df6e621f6d8b4b9c4d45f40a66839294ff2bb235e64d2178f7522d9170ac5b"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:83d78376d0d4fd884e2c114d0621624b73d2aba4e2788182d286309ebdeed770"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e391b1f0a8a5a10ab3b9bb6afcfd74f2175f24f8975fb87ecae700d1503cdee0"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:852542f9481f4a62dbb5dd99e8ab7aedfeb8fb6342349a181d4036877410f525"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59edc41b24031bc25108e210c0def6f6c2191210492a972d585a06ff246bb79b"}, - {file = "kiwisolver-1.4.5-cp310-cp310-win32.whl", hash = "sha256:a6aa6315319a052b4ee378aa171959c898a6183f15c1e541821c5c59beaa0238"}, - {file = "kiwisolver-1.4.5-cp310-cp310-win_amd64.whl", hash = "sha256:d0ef46024e6a3d79c01ff13801cb19d0cad7fd859b15037aec74315540acc276"}, - {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:11863aa14a51fd6ec28688d76f1735f8f69ab1fabf388851a595d0721af042f5"}, - {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ab3919a9997ab7ef2fbbed0cc99bb28d3c13e6d4b1ad36e97e482558a91be90"}, - {file = "kiwisolver-1.4.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fcc700eadbbccbf6bc1bcb9dbe0786b4b1cb91ca0dcda336eef5c2beed37b797"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dfdd7c0b105af050eb3d64997809dc21da247cf44e63dc73ff0fd20b96be55a9"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76c6a5964640638cdeaa0c359382e5703e9293030fe730018ca06bc2010c4437"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbea0db94288e29afcc4c28afbf3a7ccaf2d7e027489c449cf7e8f83c6346eb9"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ceec1a6bc6cab1d6ff5d06592a91a692f90ec7505d6463a88a52cc0eb58545da"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:040c1aebeda72197ef477a906782b5ab0d387642e93bda547336b8957c61022e"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f91de7223d4c7b793867797bacd1ee53bfe7359bd70d27b7b58a04efbb9436c8"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:faae4860798c31530dd184046a900e652c95513796ef51a12bc086710c2eec4d"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:b0157420efcb803e71d1b28e2c287518b8808b7cf1ab8af36718fd0a2c453eb0"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:06f54715b7737c2fecdbf140d1afb11a33d59508a47bf11bb38ecf21dc9ab79f"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fdb7adb641a0d13bdcd4ef48e062363d8a9ad4a182ac7647ec88f695e719ae9f"}, - {file = "kiwisolver-1.4.5-cp311-cp311-win32.whl", hash = "sha256:bb86433b1cfe686da83ce32a9d3a8dd308e85c76b60896d58f082136f10bffac"}, - {file = "kiwisolver-1.4.5-cp311-cp311-win_amd64.whl", hash = "sha256:6c08e1312a9cf1074d17b17728d3dfce2a5125b2d791527f33ffbe805200a355"}, - {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:32d5cf40c4f7c7b3ca500f8985eb3fb3a7dfc023215e876f207956b5ea26632a"}, - {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f846c260f483d1fd217fe5ed7c173fb109efa6b1fc8381c8b7552c5781756192"}, - {file = "kiwisolver-1.4.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5ff5cf3571589b6d13bfbfd6bcd7a3f659e42f96b5fd1c4830c4cf21d4f5ef45"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7269d9e5f1084a653d575c7ec012ff57f0c042258bf5db0954bf551c158466e7"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da802a19d6e15dffe4b0c24b38b3af68e6c1a68e6e1d8f30148c83864f3881db"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3aba7311af82e335dd1e36ffff68aaca609ca6290c2cb6d821a39aa075d8e3ff"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:763773d53f07244148ccac5b084da5adb90bfaee39c197554f01b286cf869228"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2270953c0d8cdab5d422bee7d2007f043473f9d2999631c86a223c9db56cbd16"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d099e745a512f7e3bbe7249ca835f4d357c586d78d79ae8f1dcd4d8adeb9bda9"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:74db36e14a7d1ce0986fa104f7d5637aea5c82ca6326ed0ec5694280942d1162"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e5bab140c309cb3a6ce373a9e71eb7e4873c70c2dda01df6820474f9889d6d4"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0f114aa76dc1b8f636d077979c0ac22e7cd8f3493abbab152f20eb8d3cda71f3"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:88a2df29d4724b9237fc0c6eaf2a1adae0cdc0b3e9f4d8e7dc54b16812d2d81a"}, - {file = "kiwisolver-1.4.5-cp312-cp312-win32.whl", hash = "sha256:72d40b33e834371fd330fb1472ca19d9b8327acb79a5821d4008391db8e29f20"}, - {file = "kiwisolver-1.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:2c5674c4e74d939b9d91dda0fae10597ac7521768fec9e399c70a1f27e2ea2d9"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3a2b053a0ab7a3960c98725cfb0bf5b48ba82f64ec95fe06f1d06c99b552e130"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cd32d6c13807e5c66a7cbb79f90b553642f296ae4518a60d8d76243b0ad2898"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59ec7b7c7e1a61061850d53aaf8e93db63dce0c936db1fda2658b70e4a1be709"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da4cfb373035def307905d05041c1d06d8936452fe89d464743ae7fb8371078b"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2400873bccc260b6ae184b2b8a4fec0e4082d30648eadb7c3d9a13405d861e89"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1b04139c4236a0f3aff534479b58f6f849a8b351e1314826c2d230849ed48985"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:4e66e81a5779b65ac21764c295087de82235597a2293d18d943f8e9e32746265"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7931d8f1f67c4be9ba1dd9c451fb0eeca1a25b89e4d3f89e828fe12a519b782a"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b3f7e75f3015df442238cca659f8baa5f42ce2a8582727981cbfa15fee0ee205"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:bbf1d63eef84b2e8c89011b7f2235b1e0bf7dacc11cac9431fc6468e99ac77fb"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:4c380469bd3f970ef677bf2bcba2b6b0b4d5c75e7a020fb863ef75084efad66f"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-win32.whl", hash = "sha256:9408acf3270c4b6baad483865191e3e582b638b1654a007c62e3efe96f09a9a3"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-win_amd64.whl", hash = "sha256:5b94529f9b2591b7af5f3e0e730a4e0a41ea174af35a4fd067775f9bdfeee01a"}, - {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:11c7de8f692fc99816e8ac50d1d1aef4f75126eefc33ac79aac02c099fd3db71"}, - {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:53abb58632235cd154176ced1ae8f0d29a6657aa1aa9decf50b899b755bc2b93"}, - {file = "kiwisolver-1.4.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:88b9f257ca61b838b6f8094a62418421f87ac2a1069f7e896c36a7d86b5d4c29"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3195782b26fc03aa9c6913d5bad5aeb864bdc372924c093b0f1cebad603dd712"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc579bf0f502e54926519451b920e875f433aceb4624a3646b3252b5caa9e0b6"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a580c91d686376f0f7c295357595c5a026e6cbc3d77b7c36e290201e7c11ecb"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cfe6ab8da05c01ba6fbea630377b5da2cd9bcbc6338510116b01c1bc939a2c18"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d2e5a98f0ec99beb3c10e13b387f8db39106d53993f498b295f0c914328b1333"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a51a263952b1429e429ff236d2f5a21c5125437861baeed77f5e1cc2d2c7c6da"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3edd2fa14e68c9be82c5b16689e8d63d89fe927e56debd6e1dbce7a26a17f81b"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:74d1b44c6cfc897df648cc9fdaa09bc3e7679926e6f96df05775d4fb3946571c"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:76d9289ed3f7501012e05abb8358bbb129149dbd173f1f57a1bf1c22d19ab7cc"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:92dea1ffe3714fa8eb6a314d2b3c773208d865a0e0d35e713ec54eea08a66250"}, - {file = "kiwisolver-1.4.5-cp38-cp38-win32.whl", hash = "sha256:5c90ae8c8d32e472be041e76f9d2f2dbff4d0b0be8bd4041770eddb18cf49a4e"}, - {file = "kiwisolver-1.4.5-cp38-cp38-win_amd64.whl", hash = "sha256:c7940c1dc63eb37a67721b10d703247552416f719c4188c54e04334321351ced"}, - {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9407b6a5f0d675e8a827ad8742e1d6b49d9c1a1da5d952a67d50ef5f4170b18d"}, - {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15568384086b6df3c65353820a4473575dbad192e35010f622c6ce3eebd57af9"}, - {file = "kiwisolver-1.4.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0dc9db8e79f0036e8173c466d21ef18e1befc02de8bf8aa8dc0813a6dc8a7046"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cdc8a402aaee9a798b50d8b827d7ecf75edc5fb35ea0f91f213ff927c15f4ff0"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6c3bd3cde54cafb87d74d8db50b909705c62b17c2099b8f2e25b461882e544ff"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:955e8513d07a283056b1396e9a57ceddbd272d9252c14f154d450d227606eb54"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:346f5343b9e3f00b8db8ba359350eb124b98c99efd0b408728ac6ebf38173958"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9098e0049e88c6a24ff64545cdfc50807818ba6c1b739cae221bbbcbc58aad3"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:00bd361b903dc4bbf4eb165f24d1acbee754fce22ded24c3d56eec268658a5cf"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7b8b454bac16428b22560d0a1cf0a09875339cab69df61d7805bf48919415901"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f1d072c2eb0ad60d4c183f3fb44ac6f73fb7a8f16a2694a91f988275cbf352f9"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:31a82d498054cac9f6d0b53d02bb85811185bcb477d4b60144f915f3b3126342"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6512cb89e334e4700febbffaaa52761b65b4f5a3cf33f960213d5656cea36a77"}, - {file = "kiwisolver-1.4.5-cp39-cp39-win32.whl", hash = "sha256:9db8ea4c388fdb0f780fe91346fd438657ea602d58348753d9fb265ce1bca67f"}, - {file = "kiwisolver-1.4.5-cp39-cp39-win_amd64.whl", hash = "sha256:59415f46a37f7f2efeec758353dd2eae1b07640d8ca0f0c42548ec4125492635"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5c7b3b3a728dc6faf3fc372ef24f21d1e3cee2ac3e9596691d746e5a536de920"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:620ced262a86244e2be10a676b646f29c34537d0d9cc8eb26c08f53d98013390"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:378a214a1e3bbf5ac4a8708304318b4f890da88c9e6a07699c4ae7174c09a68d"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf7be1207676ac608a50cd08f102f6742dbfc70e8d60c4db1c6897f62f71523"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ba55dce0a9b8ff59495ddd050a0225d58bd0983d09f87cfe2b6aec4f2c1234e4"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fd32ea360bcbb92d28933fc05ed09bffcb1704ba3fc7942e81db0fd4f81a7892"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5e7139af55d1688f8b960ee9ad5adafc4ac17c1c473fe07133ac092310d76544"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dced8146011d2bc2e883f9bd68618b8247387f4bbec46d7392b3c3b032640126"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9bf3325c47b11b2e51bca0824ea217c7cd84491d8ac4eefd1e409705ef092bd"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5794cf59533bc3f1b1c821f7206a3617999db9fbefc345360aafe2e067514929"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e368f200bbc2e4f905b8e71eb38b3c04333bddaa6a2464a6355487b02bb7fb09"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d706eba36b4c4d5bc6c6377bb6568098765e990cfc21ee16d13963fab7b3e7"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85267bd1aa8880a9c88a8cb71e18d3d64d2751a790e6ca6c27b8ccc724bcd5ad"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:210ef2c3a1f03272649aff1ef992df2e724748918c4bc2d5a90352849eb40bea"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:11d011a7574eb3b82bcc9c1a1d35c1d7075677fdd15de527d91b46bd35e935ee"}, - {file = "kiwisolver-1.4.5.tar.gz", hash = "sha256:e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec"}, + {file = "kiwisolver-1.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8a9c83f75223d5e48b0bc9cb1bf2776cf01563e00ade8775ffe13b0b6e1af3a6"}, + {file = "kiwisolver-1.4.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:58370b1ffbd35407444d57057b57da5d6549d2d854fa30249771775c63b5fe17"}, + {file = "kiwisolver-1.4.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aa0abdf853e09aff551db11fce173e2177d00786c688203f52c87ad7fcd91ef9"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8d53103597a252fb3ab8b5845af04c7a26d5e7ea8122303dd7a021176a87e8b9"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:88f17c5ffa8e9462fb79f62746428dd57b46eb931698e42e990ad63103f35e6c"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a9ca9c710d598fd75ee5de59d5bda2684d9db36a9f50b6125eaea3969c2599"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f4d742cb7af1c28303a51b7a27aaee540e71bb8e24f68c736f6f2ffc82f2bf05"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e28c7fea2196bf4c2f8d46a0415c77a1c480cc0724722f23d7410ffe9842c407"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e968b84db54f9d42046cf154e02911e39c0435c9801681e3fc9ce8a3c4130278"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0c18ec74c0472de033e1bebb2911c3c310eef5649133dd0bedf2a169a1b269e5"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8f0ea6da6d393d8b2e187e6a5e3fb81f5862010a40c3945e2c6d12ae45cfb2ad"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:f106407dda69ae456dd1227966bf445b157ccc80ba0dff3802bb63f30b74e895"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84ec80df401cfee1457063732d90022f93951944b5b58975d34ab56bb150dfb3"}, + {file = "kiwisolver-1.4.7-cp310-cp310-win32.whl", hash = "sha256:71bb308552200fb2c195e35ef05de12f0c878c07fc91c270eb3d6e41698c3bcc"}, + {file = "kiwisolver-1.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:44756f9fd339de0fb6ee4f8c1696cfd19b2422e0d70b4cefc1cc7f1f64045a8c"}, + {file = "kiwisolver-1.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:78a42513018c41c2ffd262eb676442315cbfe3c44eed82385c2ed043bc63210a"}, + {file = "kiwisolver-1.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d2b0e12a42fb4e72d509fc994713d099cbb15ebf1103545e8a45f14da2dfca54"}, + {file = "kiwisolver-1.4.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a8781ac3edc42ea4b90bc23e7d37b665d89423818e26eb6df90698aa2287c95"}, + {file = "kiwisolver-1.4.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:46707a10836894b559e04b0fd143e343945c97fd170d69a2d26d640b4e297935"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef97b8df011141c9b0f6caf23b29379f87dd13183c978a30a3c546d2c47314cb"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab58c12a2cd0fc769089e6d38466c46d7f76aced0a1f54c77652446733d2d02"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:803b8e1459341c1bb56d1c5c010406d5edec8a0713a0945851290a7930679b51"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9a9e8a507420fe35992ee9ecb302dab68550dedc0da9e2880dd88071c5fb052"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18077b53dc3bb490e330669a99920c5e6a496889ae8c63b58fbc57c3d7f33a18"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6af936f79086a89b3680a280c47ea90b4df7047b5bdf3aa5c524bbedddb9e545"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3abc5b19d24af4b77d1598a585b8a719beb8569a71568b66f4ebe1fb0449460b"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:933d4de052939d90afbe6e9d5273ae05fb836cc86c15b686edd4b3560cc0ee36"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:65e720d2ab2b53f1f72fb5da5fb477455905ce2c88aaa671ff0a447c2c80e8e3"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3bf1ed55088f214ba6427484c59553123fdd9b218a42bbc8c6496d6754b1e523"}, + {file = "kiwisolver-1.4.7-cp311-cp311-win32.whl", hash = "sha256:4c00336b9dd5ad96d0a558fd18a8b6f711b7449acce4c157e7343ba92dd0cf3d"}, + {file = "kiwisolver-1.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:929e294c1ac1e9f615c62a4e4313ca1823ba37326c164ec720a803287c4c499b"}, + {file = "kiwisolver-1.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:e33e8fbd440c917106b237ef1a2f1449dfbb9b6f6e1ce17c94cd6a1e0d438376"}, + {file = "kiwisolver-1.4.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:5360cc32706dab3931f738d3079652d20982511f7c0ac5711483e6eab08efff2"}, + {file = "kiwisolver-1.4.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:942216596dc64ddb25adb215c3c783215b23626f8d84e8eff8d6d45c3f29f75a"}, + {file = "kiwisolver-1.4.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:48b571ecd8bae15702e4f22d3ff6a0f13e54d3d00cd25216d5e7f658242065ee"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad42ba922c67c5f219097b28fae965e10045ddf145d2928bfac2eb2e17673640"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:612a10bdae23404a72941a0fc8fa2660c6ea1217c4ce0dbcab8a8f6543ea9e7f"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e838bba3a3bac0fe06d849d29772eb1afb9745a59710762e4ba3f4cb8424483"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:22f499f6157236c19f4bbbd472fa55b063db77a16cd74d49afe28992dff8c258"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693902d433cf585133699972b6d7c42a8b9f8f826ebcaf0132ff55200afc599e"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4e77f2126c3e0b0d055f44513ed349038ac180371ed9b52fe96a32aa071a5107"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:657a05857bda581c3656bfc3b20e353c232e9193eb167766ad2dc58b56504948"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4bfa75a048c056a411f9705856abfc872558e33c055d80af6a380e3658766038"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:34ea1de54beef1c104422d210c47c7d2a4999bdecf42c7b5718fbe59a4cac383"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:90da3b5f694b85231cf93586dad5e90e2d71b9428f9aad96952c99055582f520"}, + {file = "kiwisolver-1.4.7-cp312-cp312-win32.whl", hash = "sha256:18e0cca3e008e17fe9b164b55735a325140a5a35faad8de92dd80265cd5eb80b"}, + {file = "kiwisolver-1.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:58cb20602b18f86f83a5c87d3ee1c766a79c0d452f8def86d925e6c60fbf7bfb"}, + {file = "kiwisolver-1.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:f5a8b53bdc0b3961f8b6125e198617c40aeed638b387913bf1ce78afb1b0be2a"}, + {file = "kiwisolver-1.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2e6039dcbe79a8e0f044f1c39db1986a1b8071051efba3ee4d74f5b365f5226e"}, + {file = "kiwisolver-1.4.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a1ecf0ac1c518487d9d23b1cd7139a6a65bc460cd101ab01f1be82ecf09794b6"}, + {file = "kiwisolver-1.4.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7ab9ccab2b5bd5702ab0803676a580fffa2aa178c2badc5557a84cc943fcf750"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f816dd2277f8d63d79f9c8473a79fe54047bc0467754962840782c575522224d"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf8bcc23ceb5a1b624572a1623b9f79d2c3b337c8c455405ef231933a10da379"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dea0bf229319828467d7fca8c7c189780aa9ff679c94539eed7532ebe33ed37c"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c06a4c7cf15ec739ce0e5971b26c93638730090add60e183530d70848ebdd34"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913983ad2deb14e66d83c28b632fd35ba2b825031f2fa4ca29675e665dfecbe1"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5337ec7809bcd0f424c6b705ecf97941c46279cf5ed92311782c7c9c2026f07f"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4c26ed10c4f6fa6ddb329a5120ba3b6db349ca192ae211e882970bfc9d91420b"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c619b101e6de2222c1fcb0531e1b17bbffbe54294bfba43ea0d411d428618c27"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:073a36c8273647592ea332e816e75ef8da5c303236ec0167196793eb1e34657a"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3ce6b2b0231bda412463e152fc18335ba32faf4e8c23a754ad50ffa70e4091ee"}, + {file = "kiwisolver-1.4.7-cp313-cp313-win32.whl", hash = "sha256:f4c9aee212bc89d4e13f58be11a56cc8036cabad119259d12ace14b34476fd07"}, + {file = "kiwisolver-1.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:8a3ec5aa8e38fc4c8af308917ce12c536f1c88452ce554027e55b22cbbfbff76"}, + {file = "kiwisolver-1.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:76c8094ac20ec259471ac53e774623eb62e6e1f56cd8690c67ce6ce4fcb05650"}, + {file = "kiwisolver-1.4.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5d5abf8f8ec1f4e22882273c423e16cae834c36856cac348cfbfa68e01c40f3a"}, + {file = "kiwisolver-1.4.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:aeb3531b196ef6f11776c21674dba836aeea9d5bd1cf630f869e3d90b16cfade"}, + {file = "kiwisolver-1.4.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7d755065e4e866a8086c9bdada157133ff466476a2ad7861828e17b6026e22c"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08471d4d86cbaec61f86b217dd938a83d85e03785f51121e791a6e6689a3be95"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7bbfcb7165ce3d54a3dfbe731e470f65739c4c1f85bb1018ee912bae139e263b"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d34eb8494bea691a1a450141ebb5385e4b69d38bb8403b5146ad279f4b30fa3"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9242795d174daa40105c1d86aba618e8eab7bf96ba8c3ee614da8302a9f95503"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a0f64a48bb81af7450e641e3fe0b0394d7381e342805479178b3d335d60ca7cf"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8e045731a5416357638d1700927529e2b8ab304811671f665b225f8bf8d8f933"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4322872d5772cae7369f8351da1edf255a604ea7087fe295411397d0cfd9655e"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:e1631290ee9271dffe3062d2634c3ecac02c83890ada077d225e081aca8aab89"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:edcfc407e4eb17e037bca59be0e85a2031a2ac87e4fed26d3e9df88b4165f92d"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:4d05d81ecb47d11e7f8932bd8b61b720bf0b41199358f3f5e36d38e28f0532c5"}, + {file = "kiwisolver-1.4.7-cp38-cp38-win32.whl", hash = "sha256:b38ac83d5f04b15e515fd86f312479d950d05ce2368d5413d46c088dda7de90a"}, + {file = "kiwisolver-1.4.7-cp38-cp38-win_amd64.whl", hash = "sha256:d83db7cde68459fc803052a55ace60bea2bae361fc3b7a6d5da07e11954e4b09"}, + {file = "kiwisolver-1.4.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3f9362ecfca44c863569d3d3c033dbe8ba452ff8eed6f6b5806382741a1334bd"}, + {file = "kiwisolver-1.4.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e8df2eb9b2bac43ef8b082e06f750350fbbaf2887534a5be97f6cf07b19d9583"}, + {file = "kiwisolver-1.4.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f32d6edbc638cde7652bd690c3e728b25332acbadd7cad670cc4a02558d9c417"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e2e6c39bd7b9372b0be21456caab138e8e69cc0fc1190a9dfa92bd45a1e6e904"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dda56c24d869b1193fcc763f1284b9126550eaf84b88bbc7256e15028f19188a"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79849239c39b5e1fd906556c474d9b0439ea6792b637511f3fe3a41158d89ca8"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e3bc157fed2a4c02ec468de4ecd12a6e22818d4f09cde2c31ee3226ffbefab2"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3da53da805b71e41053dc670f9a820d1157aae77b6b944e08024d17bcd51ef88"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8705f17dfeb43139a692298cb6637ee2e59c0194538153e83e9ee0c75c2eddde"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:82a5c2f4b87c26bb1a0ef3d16b5c4753434633b83d365cc0ddf2770c93829e3c"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce8be0466f4c0d585cdb6c1e2ed07232221df101a4c6f28821d2aa754ca2d9e2"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:409afdfe1e2e90e6ee7fc896f3df9a7fec8e793e58bfa0d052c8a82f99c37abb"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5b9c3f4ee0b9a439d2415012bd1b1cc2df59e4d6a9939f4d669241d30b414327"}, + {file = "kiwisolver-1.4.7-cp39-cp39-win32.whl", hash = "sha256:a79ae34384df2b615eefca647a2873842ac3b596418032bef9a7283675962644"}, + {file = "kiwisolver-1.4.7-cp39-cp39-win_amd64.whl", hash = "sha256:cf0438b42121a66a3a667de17e779330fc0f20b0d97d59d2f2121e182b0505e4"}, + {file = "kiwisolver-1.4.7-cp39-cp39-win_arm64.whl", hash = "sha256:764202cc7e70f767dab49e8df52c7455e8de0df5d858fa801a11aa0d882ccf3f"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:94252291e3fe68001b1dd747b4c0b3be12582839b95ad4d1b641924d68fd4643"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5b7dfa3b546da08a9f622bb6becdb14b3e24aaa30adba66749d38f3cc7ea9706"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd3de6481f4ed8b734da5df134cd5a6a64fe32124fe83dde1e5b5f29fe30b1e6"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a91b5f9f1205845d488c928e8570dcb62b893372f63b8b6e98b863ebd2368ff2"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fa14dbd66b8b8f470d5fc79c089a66185619d31645f9b0773b88b19f7223c4"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:eb542fe7933aa09d8d8f9d9097ef37532a7df6497819d16efe4359890a2f417a"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bfa1acfa0c54932d5607e19a2c24646fb4c1ae2694437789129cf099789a3b00"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:eee3ea935c3d227d49b4eb85660ff631556841f6e567f0f7bda972df6c2c9935"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f3160309af4396e0ed04db259c3ccbfdc3621b5559b5453075e5de555e1f3a1b"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a17f6a29cf8935e587cc8a4dbfc8368c55edc645283db0ce9801016f83526c2d"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10849fb2c1ecbfae45a693c070e0320a91b35dd4bcf58172c023b994283a124d"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:ac542bf38a8a4be2dc6b15248d36315ccc65f0743f7b1a76688ffb6b5129a5c2"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8b01aac285f91ca889c800042c35ad3b239e704b150cfd3382adfc9dcc780e39"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:48be928f59a1f5c8207154f935334d374e79f2b5d212826307d072595ad76a2e"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f37cfe618a117e50d8c240555331160d73d0411422b59b5ee217843d7b693608"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:599b5c873c63a1f6ed7eead644a8a380cfbdf5db91dcb6f85707aaab213b1674"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:801fa7802e5cfabe3ab0c81a34c323a319b097dfb5004be950482d882f3d7225"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0c6c43471bc764fad4bc99c5c2d6d16a676b1abf844ca7c8702bdae92df01ee0"}, + {file = "kiwisolver-1.4.7.tar.gz", hash = "sha256:9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60"}, ] [[package]] @@ -2180,52 +2313,6 @@ files = [ {file = "latexcodec-3.0.0.tar.gz", hash = "sha256:917dc5fe242762cc19d963e6548b42d63a118028cdd3361d62397e3b638b6bc5"}, ] -[[package]] -name = "lazy-object-proxy" -version = "1.10.0" -description = "A fast and thorough lazy object proxy." -optional = false -python-versions = ">=3.8" -files = [ - {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"}, - {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"}, -] - [[package]] name = "linkify-it-py" version = "2.0.3" @@ -2341,40 +2428,51 @@ files = [ [[package]] name = "matplotlib" -version = "3.9.0" +version = "3.9.2" description = "Python plotting package" optional = false python-versions = ">=3.9" files = [ - {file = "matplotlib-3.9.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2bcee1dffaf60fe7656183ac2190bd630842ff87b3153afb3e384d966b57fe56"}, - {file = "matplotlib-3.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3f988bafb0fa39d1074ddd5bacd958c853e11def40800c5824556eb630f94d3b"}, - {file = "matplotlib-3.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe428e191ea016bb278758c8ee82a8129c51d81d8c4bc0846c09e7e8e9057241"}, - {file = "matplotlib-3.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaf3978060a106fab40c328778b148f590e27f6fa3cd15a19d6892575bce387d"}, - {file = "matplotlib-3.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2e7f03e5cbbfacdd48c8ea394d365d91ee8f3cae7e6ec611409927b5ed997ee4"}, - {file = "matplotlib-3.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:13beb4840317d45ffd4183a778685e215939be7b08616f431c7795276e067463"}, - {file = "matplotlib-3.9.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:063af8587fceeac13b0936c42a2b6c732c2ab1c98d38abc3337e430e1ff75e38"}, - {file = "matplotlib-3.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9a2fa6d899e17ddca6d6526cf6e7ba677738bf2a6a9590d702c277204a7c6152"}, - {file = "matplotlib-3.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:550cdda3adbd596078cca7d13ed50b77879104e2e46392dcd7c75259d8f00e85"}, - {file = "matplotlib-3.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76cce0f31b351e3551d1f3779420cf8f6ec0d4a8cf9c0237a3b549fd28eb4abb"}, - {file = "matplotlib-3.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c53aeb514ccbbcbab55a27f912d79ea30ab21ee0531ee2c09f13800efb272674"}, - {file = "matplotlib-3.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:a5be985db2596d761cdf0c2eaf52396f26e6a64ab46bd8cd810c48972349d1be"}, - {file = "matplotlib-3.9.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:c79f3a585f1368da6049318bdf1f85568d8d04b2e89fc24b7e02cc9b62017382"}, - {file = "matplotlib-3.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bdd1ecbe268eb3e7653e04f451635f0fb0f77f07fd070242b44c076c9106da84"}, - {file = "matplotlib-3.9.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d38e85a1a6d732f645f1403ce5e6727fd9418cd4574521d5803d3d94911038e5"}, - {file = "matplotlib-3.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a490715b3b9984fa609116481b22178348c1a220a4499cda79132000a79b4db"}, - {file = "matplotlib-3.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8146ce83cbc5dc71c223a74a1996d446cd35cfb6a04b683e1446b7e6c73603b7"}, - {file = "matplotlib-3.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:d91a4ffc587bacf5c4ce4ecfe4bcd23a4b675e76315f2866e588686cc97fccdf"}, - {file = "matplotlib-3.9.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:616fabf4981a3b3c5a15cd95eba359c8489c4e20e03717aea42866d8d0465956"}, - {file = "matplotlib-3.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cd53c79fd02f1c1808d2cfc87dd3cf4dbc63c5244a58ee7944497107469c8d8a"}, - {file = "matplotlib-3.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06a478f0d67636554fa78558cfbcd7b9dba85b51f5c3b5a0c9be49010cf5f321"}, - {file = "matplotlib-3.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81c40af649d19c85f8073e25e5806926986806fa6d54be506fbf02aef47d5a89"}, - {file = "matplotlib-3.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52146fc3bd7813cc784562cb93a15788be0b2875c4655e2cc6ea646bfa30344b"}, - {file = "matplotlib-3.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:0fc51eaa5262553868461c083d9adadb11a6017315f3a757fc45ec6ec5f02888"}, - {file = "matplotlib-3.9.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bd4f2831168afac55b881db82a7730992aa41c4f007f1913465fb182d6fb20c0"}, - {file = "matplotlib-3.9.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:290d304e59be2b33ef5c2d768d0237f5bd132986bdcc66f80bc9bcc300066a03"}, - {file = "matplotlib-3.9.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ff2e239c26be4f24bfa45860c20ffccd118d270c5b5d081fa4ea409b5469fcd"}, - {file = "matplotlib-3.9.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:af4001b7cae70f7eaacfb063db605280058246de590fa7874f00f62259f2df7e"}, - {file = "matplotlib-3.9.0.tar.gz", hash = "sha256:e6d29ea6c19e34b30fb7d88b7081f869a03014f66fe06d62cc77d5a6ea88ed7a"}, + {file = "matplotlib-3.9.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:9d78bbc0cbc891ad55b4f39a48c22182e9bdaea7fc0e5dbd364f49f729ca1bbb"}, + {file = "matplotlib-3.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c375cc72229614632c87355366bdf2570c2dac01ac66b8ad048d2dabadf2d0d4"}, + {file = "matplotlib-3.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d94ff717eb2bd0b58fe66380bd8b14ac35f48a98e7c6765117fe67fb7684e64"}, + {file = "matplotlib-3.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab68d50c06938ef28681073327795c5db99bb4666214d2d5f880ed11aeaded66"}, + {file = "matplotlib-3.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:65aacf95b62272d568044531e41de26285d54aec8cb859031f511f84bd8b495a"}, + {file = "matplotlib-3.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:3fd595f34aa8a55b7fc8bf9ebea8aa665a84c82d275190a61118d33fbc82ccae"}, + {file = "matplotlib-3.9.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d8dd059447824eec055e829258ab092b56bb0579fc3164fa09c64f3acd478772"}, + {file = "matplotlib-3.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c797dac8bb9c7a3fd3382b16fe8f215b4cf0f22adccea36f1545a6d7be310b41"}, + {file = "matplotlib-3.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d719465db13267bcef19ea8954a971db03b9f48b4647e3860e4bc8e6ed86610f"}, + {file = "matplotlib-3.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8912ef7c2362f7193b5819d17dae8629b34a95c58603d781329712ada83f9447"}, + {file = "matplotlib-3.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7741f26a58a240f43bee74965c4882b6c93df3e7eb3de160126d8c8f53a6ae6e"}, + {file = "matplotlib-3.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:ae82a14dab96fbfad7965403c643cafe6515e386de723e498cf3eeb1e0b70cc7"}, + {file = "matplotlib-3.9.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ac43031375a65c3196bee99f6001e7fa5bdfb00ddf43379d3c0609bdca042df9"}, + {file = "matplotlib-3.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:be0fc24a5e4531ae4d8e858a1a548c1fe33b176bb13eff7f9d0d38ce5112a27d"}, + {file = "matplotlib-3.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf81de2926c2db243c9b2cbc3917619a0fc85796c6ba4e58f541df814bbf83c7"}, + {file = "matplotlib-3.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6ee45bc4245533111ced13f1f2cace1e7f89d1c793390392a80c139d6cf0e6c"}, + {file = "matplotlib-3.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:306c8dfc73239f0e72ac50e5a9cf19cc4e8e331dd0c54f5e69ca8758550f1e1e"}, + {file = "matplotlib-3.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:5413401594cfaff0052f9d8b1aafc6d305b4bd7c4331dccd18f561ff7e1d3bd3"}, + {file = "matplotlib-3.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:18128cc08f0d3cfff10b76baa2f296fc28c4607368a8402de61bb3f2eb33c7d9"}, + {file = "matplotlib-3.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4876d7d40219e8ae8bb70f9263bcbe5714415acfdf781086601211335e24f8aa"}, + {file = "matplotlib-3.9.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d9f07a80deab4bb0b82858a9e9ad53d1382fd122be8cde11080f4e7dfedb38b"}, + {file = "matplotlib-3.9.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7c0410f181a531ec4e93bbc27692f2c71a15c2da16766f5ba9761e7ae518413"}, + {file = "matplotlib-3.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:909645cce2dc28b735674ce0931a4ac94e12f5b13f6bb0b5a5e65e7cea2c192b"}, + {file = "matplotlib-3.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:f32c7410c7f246838a77d6d1eff0c0f87f3cb0e7c4247aebea71a6d5a68cab49"}, + {file = "matplotlib-3.9.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:37e51dd1c2db16ede9cfd7b5cabdfc818b2c6397c83f8b10e0e797501c963a03"}, + {file = "matplotlib-3.9.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b82c5045cebcecd8496a4d694d43f9cc84aeeb49fe2133e036b207abe73f4d30"}, + {file = "matplotlib-3.9.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f053c40f94bc51bc03832a41b4f153d83f2062d88c72b5e79997072594e97e51"}, + {file = "matplotlib-3.9.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbe196377a8248972f5cede786d4c5508ed5f5ca4a1e09b44bda889958b33f8c"}, + {file = "matplotlib-3.9.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5816b1e1fe8c192cbc013f8f3e3368ac56fbecf02fb41b8f8559303f24c5015e"}, + {file = "matplotlib-3.9.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:cef2a73d06601437be399908cf13aee74e86932a5ccc6ccdf173408ebc5f6bb2"}, + {file = "matplotlib-3.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e0830e188029c14e891fadd99702fd90d317df294c3298aad682739c5533721a"}, + {file = "matplotlib-3.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03ba9c1299c920964e8d3857ba27173b4dbb51ca4bab47ffc2c2ba0eb5e2cbc5"}, + {file = "matplotlib-3.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cd93b91ab47a3616b4d3c42b52f8363b88ca021e340804c6ab2536344fad9ca"}, + {file = "matplotlib-3.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6d1ce5ed2aefcdce11904fc5bbea7d9c21fff3d5f543841edf3dea84451a09ea"}, + {file = "matplotlib-3.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:b2696efdc08648536efd4e1601b5fd491fd47f4db97a5fbfd175549a7365c1b2"}, + {file = "matplotlib-3.9.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:d52a3b618cb1cbb769ce2ee1dcdb333c3ab6e823944e9a2d36e37253815f9556"}, + {file = "matplotlib-3.9.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:039082812cacd6c6bec8e17a9c1e6baca230d4116d522e81e1f63a74d01d2e21"}, + {file = "matplotlib-3.9.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6758baae2ed64f2331d4fd19be38b7b4eae3ecec210049a26b6a4f3ae1c85dcc"}, + {file = "matplotlib-3.9.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:050598c2b29e0b9832cde72bcf97627bf00262adbc4a54e2b856426bb2ef0697"}, + {file = "matplotlib-3.9.2.tar.gz", hash = "sha256:96ab43906269ca64a6366934106fa01534454a69e471b7bf3d79083981aaab92"}, ] [package.dependencies] @@ -2462,13 +2560,13 @@ psutil = {version = ">=4.0.0", markers = "sys_platform != \"cygwin\""} [[package]] name = "moto" -version = "5.0.9" +version = "5.0.14" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "moto-5.0.9-py2.py3-none-any.whl", hash = "sha256:21a13e02f83d6a18cfcd99949c96abb2e889f4bd51c4c6a3ecc8b78765cb854e"}, - {file = "moto-5.0.9.tar.gz", hash = "sha256:eb71f1cba01c70fff1f16086acb24d6d9aeb32830d646d8989f98a29aeae24ba"}, + {file = "moto-5.0.14-py2.py3-none-any.whl", hash = "sha256:c738ffe85d3844ef37b865951736c4faf2e0f3e4f05db87bdad97a6c01b88174"}, + {file = "moto-5.0.14.tar.gz", hash = "sha256:0f849243269fd03372426c302b18cb605302da32620d7f0266be6a40735b2acd"}, ] [package.dependencies] @@ -2483,146 +2581,152 @@ werkzeug = ">=0.5,<2.2.0 || >2.2.0,<2.2.1 || >2.2.1" xmltodict = "*" [package.extras] -all = ["PyYAML (>=5.1)", "antlr4-python3-runtime", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "jsonpath-ng", "multipart", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.5)", "pyparsing (>=3.0.7)", "setuptools"] +all = ["PyYAML (>=5.1)", "antlr4-python3-runtime", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "jsonpath-ng", "multipart", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.6)", "pyparsing (>=3.0.7)", "setuptools"] apigateway = ["PyYAML (>=5.1)", "joserfc (>=0.9.0)", "openapi-spec-validator (>=0.5.0)"] apigatewayv2 = ["PyYAML (>=5.1)", "openapi-spec-validator (>=0.5.0)"] appsync = ["graphql-core"] awslambda = ["docker (>=3.0.0)"] batch = ["docker (>=3.0.0)"] -cloudformation = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.5)", "pyparsing (>=3.0.7)", "setuptools"] +cloudformation = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.6)", "pyparsing (>=3.0.7)", "setuptools"] cognitoidp = ["joserfc (>=0.9.0)"] -dynamodb = ["docker (>=3.0.0)", "py-partiql-parser (==0.5.5)"] -dynamodbstreams = ["docker (>=3.0.0)", "py-partiql-parser (==0.5.5)"] +dynamodb = ["docker (>=3.0.0)", "py-partiql-parser (==0.5.6)"] +dynamodbstreams = ["docker (>=3.0.0)", "py-partiql-parser (==0.5.6)"] +events = ["jsonpath-ng"] glue = ["pyparsing (>=3.0.7)"] iotdata = ["jsondiff (>=1.1.2)"] -proxy = ["PyYAML (>=5.1)", "antlr4-python3-runtime", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=2.5.1)", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "jsonpath-ng", "multipart", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.5)", "pyparsing (>=3.0.7)", "setuptools"] -resourcegroupstaggingapi = ["PyYAML (>=5.1)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.5)", "pyparsing (>=3.0.7)"] -s3 = ["PyYAML (>=5.1)", "py-partiql-parser (==0.5.5)"] -s3crc32c = ["PyYAML (>=5.1)", "crc32c", "py-partiql-parser (==0.5.5)"] -server = ["PyYAML (>=5.1)", "antlr4-python3-runtime", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "flask (!=2.2.0,!=2.2.1)", "flask-cors", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "jsonpath-ng", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.5)", "pyparsing (>=3.0.7)", "setuptools"] +proxy = ["PyYAML (>=5.1)", "antlr4-python3-runtime", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=2.5.1)", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "jsonpath-ng", "multipart", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.6)", "pyparsing (>=3.0.7)", "setuptools"] +resourcegroupstaggingapi = ["PyYAML (>=5.1)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.6)", "pyparsing (>=3.0.7)"] +s3 = ["PyYAML (>=5.1)", "py-partiql-parser (==0.5.6)"] +s3crc32c = ["PyYAML (>=5.1)", "crc32c", "py-partiql-parser (==0.5.6)"] +server = ["PyYAML (>=5.1)", "antlr4-python3-runtime", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "flask (!=2.2.0,!=2.2.1)", "flask-cors", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "jsonpath-ng", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.6)", "pyparsing (>=3.0.7)", "setuptools"] ssm = ["PyYAML (>=5.1)"] stepfunctions = ["antlr4-python3-runtime", "jsonpath-ng"] xray = ["aws-xray-sdk (>=0.93,!=0.96)", "setuptools"] [[package]] name = "multidict" -version = "6.0.5" +version = "6.1.0" description = "multidict implementation" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b644ae063c10e7f324ab1ab6b548bdf6f8b47f3ec234fef1093bc2735e5f9"}, - {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:896ebdcf62683551312c30e20614305f53125750803b614e9e6ce74a96232604"}, - {file = "multidict-6.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:411bf8515f3be9813d06004cac41ccf7d1cd46dfe233705933dd163b60e37600"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d147090048129ce3c453f0292e7697d333db95e52616b3793922945804a433c"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:215ed703caf15f578dca76ee6f6b21b7603791ae090fbf1ef9d865571039ade5"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c6390cf87ff6234643428991b7359b5f59cc15155695deb4eda5c777d2b880f"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fd81c4ebdb4f214161be351eb5bcf385426bf023041da2fd9e60681f3cebae"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cc2ad10255f903656017363cd59436f2111443a76f996584d1077e43ee51182"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6939c95381e003f54cd4c5516740faba40cf5ad3eeff460c3ad1d3e0ea2549bf"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:220dd781e3f7af2c2c1053da9fa96d9cf3072ca58f057f4c5adaaa1cab8fc442"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:766c8f7511df26d9f11cd3a8be623e59cca73d44643abab3f8c8c07620524e4a"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:fe5d7785250541f7f5019ab9cba2c71169dc7d74d0f45253f8313f436458a4ef"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1c1496e73051918fcd4f58ff2e0f2f3066d1c76a0c6aeffd9b45d53243702cc"}, - {file = "multidict-6.0.5-cp310-cp310-win32.whl", hash = "sha256:7afcdd1fc07befad18ec4523a782cde4e93e0a2bf71239894b8d61ee578c1319"}, - {file = "multidict-6.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:99f60d34c048c5c2fabc766108c103612344c46e35d4ed9ae0673d33c8fb26e8"}, - {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f285e862d2f153a70586579c15c44656f888806ed0e5b56b64489afe4a2dbfba"}, - {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e"}, - {file = "multidict-6.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7be7047bd08accdb7487737631d25735c9a04327911de89ff1b26b81745bd4e3"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de170c7b4fe6859beb8926e84f7d7d6c693dfe8e27372ce3b76f01c46e489fcf"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04bde7a7b3de05732a4eb39c94574db1ec99abb56162d6c520ad26f83267de29"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85f67aed7bb647f93e7520633d8f51d3cbc6ab96957c71272b286b2f30dc70ed"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425bf820055005bfc8aa9a0b99ccb52cc2f4070153e34b701acc98d201693733"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d3eb1ceec286eba8220c26f3b0096cf189aea7057b6e7b7a2e60ed36b373b77f"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7901c05ead4b3fb75113fb1dd33eb1253c6d3ee37ce93305acd9d38e0b5f21a4"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e0e79d91e71b9867c73323a3444724d496c037e578a0e1755ae159ba14f4f3d1"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:29bfeb0dff5cb5fdab2023a7a9947b3b4af63e9c47cae2a10ad58394b517fddc"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e030047e85cbcedbfc073f71836d62dd5dadfbe7531cae27789ff66bc551bd5e"}, - {file = "multidict-6.0.5-cp311-cp311-win32.whl", hash = "sha256:2f4848aa3baa109e6ab81fe2006c77ed4d3cd1e0ac2c1fbddb7b1277c168788c"}, - {file = "multidict-6.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:2faa5ae9376faba05f630d7e5e6be05be22913782b927b19d12b8145968a85ea"}, - {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:51d035609b86722963404f711db441cf7134f1889107fb171a970c9701f92e1e"}, - {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cbebcd5bcaf1eaf302617c114aa67569dd3f090dd0ce8ba9e35e9985b41ac35b"}, - {file = "multidict-6.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ffc42c922dbfddb4a4c3b438eb056828719f07608af27d163191cb3e3aa6cc5"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceb3b7e6a0135e092de86110c5a74e46bda4bd4fbfeeb3a3bcec79c0f861e450"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79660376075cfd4b2c80f295528aa6beb2058fd289f4c9252f986751a4cd0496"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4428b29611e989719874670fd152b6625500ad6c686d464e99f5aaeeaca175a"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d84a5c3a5f7ce6db1f999fb9438f686bc2e09d38143f2d93d8406ed2dd6b9226"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76c0de87358b192de7ea9649beb392f107dcad9ad27276324c24c91774ca5271"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:79a6d2ba910adb2cbafc95dad936f8b9386e77c84c35bc0add315b856d7c3abb"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:92d16a3e275e38293623ebf639c471d3e03bb20b8ebb845237e0d3664914caef"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:fb616be3538599e797a2017cccca78e354c767165e8858ab5116813146041a24"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:14c2976aa9038c2629efa2c148022ed5eb4cb939e15ec7aace7ca932f48f9ba6"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:435a0984199d81ca178b9ae2c26ec3d49692d20ee29bc4c11a2a8d4514c67eda"}, - {file = "multidict-6.0.5-cp312-cp312-win32.whl", hash = "sha256:9fe7b0653ba3d9d65cbe7698cca585bf0f8c83dbbcc710db9c90f478e175f2d5"}, - {file = "multidict-6.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:01265f5e40f5a17f8241d52656ed27192be03bfa8764d88e8220141d1e4b3556"}, - {file = "multidict-6.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:19fe01cea168585ba0f678cad6f58133db2aa14eccaf22f88e4a6dccadfad8b3"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf7a982604375a8d49b6cc1b781c1747f243d91b81035a9b43a2126c04766f5"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:107c0cdefe028703fb5dafe640a409cb146d44a6ae201e55b35a4af8e95457dd"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:403c0911cd5d5791605808b942c88a8155c2592e05332d2bf78f18697a5fa15e"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aeaf541ddbad8311a87dd695ed9642401131ea39ad7bc8cf3ef3967fd093b626"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4972624066095e52b569e02b5ca97dbd7a7ddd4294bf4e7247d52635630dd83"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d946b0a9eb8aaa590df1fe082cee553ceab173e6cb5b03239716338629c50c7a"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b55358304d7a73d7bdf5de62494aaf70bd33015831ffd98bc498b433dfe5b10c"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:a3145cb08d8625b2d3fee1b2d596a8766352979c9bffe5d7833e0503d0f0b5e5"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d65f25da8e248202bd47445cec78e0025c0fe7582b23ec69c3b27a640dd7a8e3"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c9bf56195c6bbd293340ea82eafd0071cb3d450c703d2c93afb89f93b8386ccc"}, - {file = "multidict-6.0.5-cp37-cp37m-win32.whl", hash = "sha256:69db76c09796b313331bb7048229e3bee7928eb62bab5e071e9f7fcc4879caee"}, - {file = "multidict-6.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:fce28b3c8a81b6b36dfac9feb1de115bab619b3c13905b419ec71d03a3fc1423"}, - {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76f067f5121dcecf0d63a67f29080b26c43c71a98b10c701b0677e4a065fbd54"}, - {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b82cc8ace10ab5bd93235dfaab2021c70637005e1ac787031f4d1da63d493c1d"}, - {file = "multidict-6.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5cb241881eefd96b46f89b1a056187ea8e9ba14ab88ba632e68d7a2ecb7aadf7"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e94e6912639a02ce173341ff62cc1201232ab86b8a8fcc05572741a5dc7d93"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09a892e4a9fb47331da06948690ae38eaa2426de97b4ccbfafbdcbe5c8f37ff8"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55205d03e8a598cfc688c71ca8ea5f66447164efff8869517f175ea632c7cb7b"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37b15024f864916b4951adb95d3a80c9431299080341ab9544ed148091b53f50"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2a1dee728b52b33eebff5072817176c172050d44d67befd681609b4746e1c2e"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:edd08e6f2f1a390bf137080507e44ccc086353c8e98c657e666c017718561b89"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:60d698e8179a42ec85172d12f50b1668254628425a6bd611aba022257cac1386"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3d25f19500588cbc47dc19081d78131c32637c25804df8414463ec908631e453"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4cc0ef8b962ac7a5e62b9e826bd0cd5040e7d401bc45a6835910ed699037a461"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:eca2e9d0cc5a889850e9bbd68e98314ada174ff6ccd1129500103df7a94a7a44"}, - {file = "multidict-6.0.5-cp38-cp38-win32.whl", hash = "sha256:4a6a4f196f08c58c59e0b8ef8ec441d12aee4125a7d4f4fef000ccb22f8d7241"}, - {file = "multidict-6.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:0275e35209c27a3f7951e1ce7aaf93ce0d163b28948444bec61dd7badc6d3f8c"}, - {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e7be68734bd8c9a513f2b0cfd508802d6609da068f40dc57d4e3494cefc92929"}, - {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1d9ea7a7e779d7a3561aade7d596649fbecfa5c08a7674b11b423783217933f9"}, - {file = "multidict-6.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ea1456df2a27c73ce51120fa2f519f1bea2f4a03a917f4a43c8707cf4cbbae1a"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf590b134eb70629e350691ecca88eac3e3b8b3c86992042fb82e3cb1830d5e1"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c0631926c4f58e9a5ccce555ad7747d9a9f8b10619621f22f9635f069f6233e"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dce1c6912ab9ff5f179eaf6efe7365c1f425ed690b03341911bf4939ef2f3046"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0868d64af83169e4d4152ec612637a543f7a336e4a307b119e98042e852ad9c"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:141b43360bfd3bdd75f15ed811850763555a251e38b2405967f8e25fb43f7d40"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7df704ca8cf4a073334e0427ae2345323613e4df18cc224f647f251e5e75a527"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6214c5a5571802c33f80e6c84713b2c79e024995b9c5897f794b43e714daeec9"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:cd6c8fca38178e12c00418de737aef1261576bd1b6e8c6134d3e729a4e858b38"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e02021f87a5b6932fa6ce916ca004c4d441509d33bbdbeca70d05dff5e9d2479"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ebd8d160f91a764652d3e51ce0d2956b38efe37c9231cd82cfc0bed2e40b581c"}, - {file = "multidict-6.0.5-cp39-cp39-win32.whl", hash = "sha256:04da1bb8c8dbadf2a18a452639771951c662c5ad03aefe4884775454be322c9b"}, - {file = "multidict-6.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:d6f6d4f185481c9669b9447bf9d9cf3b95a0e9df9d169bbc17e363b7d5487755"}, - {file = "multidict-6.0.5-py3-none-any.whl", hash = "sha256:0d63c74e3d7ab26de115c49bffc92cc77ed23395303d496eae515d4204a625e7"}, - {file = "multidict-6.0.5.tar.gz", hash = "sha256:f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7"}, + {file = "multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0"}, + {file = "multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753"}, + {file = "multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80"}, + {file = "multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3"}, + {file = "multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133"}, + {file = "multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6"}, + {file = "multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81"}, + {file = "multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd"}, + {file = "multidict-6.1.0-cp38-cp38-win32.whl", hash = "sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167"}, + {file = "multidict-6.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43"}, + {file = "multidict-6.1.0-cp39-cp39-win32.whl", hash = "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada"}, + {file = "multidict-6.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a"}, + {file = "multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506"}, + {file = "multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a"}, ] +[package.dependencies] +typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} + [[package]] name = "multimethod" -version = "1.11.2" +version = "1.12" description = "Multiple argument dispatching." optional = false python-versions = ">=3.9" files = [ - {file = "multimethod-1.11.2-py3-none-any.whl", hash = "sha256:cb338f09395c0ee87d36c7691cdd794d13d8864358082cf1205f812edd5ce05a"}, - {file = "multimethod-1.11.2.tar.gz", hash = "sha256:7f2a4863967142e6db68632fef9cd79053c09670ba0c5f113301e245140bba5c"}, + {file = "multimethod-1.12-py3-none-any.whl", hash = "sha256:fd0c473c43558908d97cc06e4d68e8f69202f167db46f7b4e4058893e7dbdf60"}, + {file = "multimethod-1.12.tar.gz", hash = "sha256:8db8ef2a8d2a247e3570cc23317680892fdf903d84c8c1053667c8e8f7671a67"}, ] [[package]] name = "mypy-boto3-dynamodb" -version = "1.34.114" -description = "Type annotations for boto3.DynamoDB 1.34.114 service generated with mypy-boto3-builder 7.24.0" +version = "1.35.15" +description = "Type annotations for boto3.DynamoDB 1.35.15 service generated with mypy-boto3-builder 8.0.1" optional = false python-versions = ">=3.8" files = [ - {file = "mypy_boto3_dynamodb-1.34.114-py3-none-any.whl", hash = "sha256:64be1fcd36db0daa354a78a2affdaef048653e4c5116da98f71446eee5db7638"}, - {file = "mypy_boto3_dynamodb-1.34.114.tar.gz", hash = "sha256:2a1a131587dbf857e5bec56ae84d8f9fb9618966e7a6120fb6c7da12cb73a82c"}, + {file = "mypy_boto3_dynamodb-1.35.15-py3-none-any.whl", hash = "sha256:ac7daacc874e00a5ece33d582916c180a5fac5b293abcc5def5336749769e9cf"}, + {file = "mypy_boto3_dynamodb-1.35.15.tar.gz", hash = "sha256:7a913873e54289c5d392e18626ef379711530d406eda7766cb7e8d0114c2cbc1"}, ] [package.dependencies] @@ -2738,56 +2842,64 @@ files = [ [[package]] name = "numpy" -version = "2.0.0" +version = "2.1.1" description = "Fundamental package for array computing in Python" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" files = [ - {file = "numpy-2.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:04494f6ec467ccb5369d1808570ae55f6ed9b5809d7f035059000a37b8d7e86f"}, - {file = "numpy-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2635dbd200c2d6faf2ef9a0d04f0ecc6b13b3cad54f7c67c61155138835515d2"}, - {file = "numpy-2.0.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:0a43f0974d501842866cc83471bdb0116ba0dffdbaac33ec05e6afed5b615238"}, - {file = "numpy-2.0.0-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:8d83bb187fb647643bd56e1ae43f273c7f4dbcdf94550d7938cfc32566756514"}, - {file = "numpy-2.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79e843d186c8fb1b102bef3e2bc35ef81160ffef3194646a7fdd6a73c6b97196"}, - {file = "numpy-2.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d7696c615765091cc5093f76fd1fa069870304beaccfd58b5dcc69e55ef49c1"}, - {file = "numpy-2.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b4c76e3d4c56f145d41b7b6751255feefae92edbc9a61e1758a98204200f30fc"}, - {file = "numpy-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:acd3a644e4807e73b4e1867b769fbf1ce8c5d80e7caaef0d90dcdc640dfc9787"}, - {file = "numpy-2.0.0-cp310-cp310-win32.whl", hash = "sha256:cee6cc0584f71adefe2c908856ccc98702baf95ff80092e4ca46061538a2ba98"}, - {file = "numpy-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:ed08d2703b5972ec736451b818c2eb9da80d66c3e84aed1deeb0c345fefe461b"}, - {file = "numpy-2.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad0c86f3455fbd0de6c31a3056eb822fc939f81b1618f10ff3406971893b62a5"}, - {file = "numpy-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7f387600d424f91576af20518334df3d97bc76a300a755f9a8d6e4f5cadd289"}, - {file = "numpy-2.0.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:34f003cb88b1ba38cb9a9a4a3161c1604973d7f9d5552c38bc2f04f829536609"}, - {file = "numpy-2.0.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b6f6a8f45d0313db07d6d1d37bd0b112f887e1369758a5419c0370ba915b3871"}, - {file = "numpy-2.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f64641b42b2429f56ee08b4f427a4d2daf916ec59686061de751a55aafa22e4"}, - {file = "numpy-2.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7039a136017eaa92c1848152827e1424701532ca8e8967fe480fe1569dae581"}, - {file = "numpy-2.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46e161722e0f619749d1cd892167039015b2c2817296104487cd03ed4a955995"}, - {file = "numpy-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0e50842b2295ba8414c8c1d9d957083d5dfe9e16828b37de883f51fc53c4016f"}, - {file = "numpy-2.0.0-cp311-cp311-win32.whl", hash = "sha256:2ce46fd0b8a0c947ae047d222f7136fc4d55538741373107574271bc00e20e8f"}, - {file = "numpy-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbd6acc766814ea6443628f4e6751d0da6593dae29c08c0b2606164db026970c"}, - {file = "numpy-2.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:354f373279768fa5a584bac997de6a6c9bc535c482592d7a813bb0c09be6c76f"}, - {file = "numpy-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4d2f62e55a4cd9c58c1d9a1c9edaedcd857a73cb6fda875bf79093f9d9086f85"}, - {file = "numpy-2.0.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:1e72728e7501a450288fc8e1f9ebc73d90cfd4671ebbd631f3e7857c39bd16f2"}, - {file = "numpy-2.0.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:84554fc53daa8f6abf8e8a66e076aff6ece62de68523d9f665f32d2fc50fd66e"}, - {file = "numpy-2.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c73aafd1afca80afecb22718f8700b40ac7cab927b8abab3c3e337d70e10e5a2"}, - {file = "numpy-2.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49d9f7d256fbc804391a7f72d4a617302b1afac1112fac19b6c6cec63fe7fe8a"}, - {file = "numpy-2.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0ec84b9ba0654f3b962802edc91424331f423dcf5d5f926676e0150789cb3d95"}, - {file = "numpy-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:feff59f27338135776f6d4e2ec7aeeac5d5f7a08a83e80869121ef8164b74af9"}, - {file = "numpy-2.0.0-cp312-cp312-win32.whl", hash = "sha256:c5a59996dc61835133b56a32ebe4ef3740ea5bc19b3983ac60cc32be5a665d54"}, - {file = "numpy-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:a356364941fb0593bb899a1076b92dfa2029f6f5b8ba88a14fd0984aaf76d0df"}, - {file = "numpy-2.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e61155fae27570692ad1d327e81c6cf27d535a5d7ef97648a17d922224b216de"}, - {file = "numpy-2.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4554eb96f0fd263041baf16cf0881b3f5dafae7a59b1049acb9540c4d57bc8cb"}, - {file = "numpy-2.0.0-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:903703372d46bce88b6920a0cd86c3ad82dae2dbef157b5fc01b70ea1cfc430f"}, - {file = "numpy-2.0.0-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:3e8e01233d57639b2e30966c63d36fcea099d17c53bf424d77f088b0f4babd86"}, - {file = "numpy-2.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cde1753efe513705a0c6d28f5884e22bdc30438bf0085c5c486cdaff40cd67a"}, - {file = "numpy-2.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:821eedb7165ead9eebdb569986968b541f9908979c2da8a4967ecac4439bae3d"}, - {file = "numpy-2.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a1712c015831da583b21c5bfe15e8684137097969c6d22e8316ba66b5baabe4"}, - {file = "numpy-2.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9c27f0946a3536403efb0e1c28def1ae6730a72cd0d5878db38824855e3afc44"}, - {file = "numpy-2.0.0-cp39-cp39-win32.whl", hash = "sha256:63b92c512d9dbcc37f9d81b123dec99fdb318ba38c8059afc78086fe73820275"}, - {file = "numpy-2.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:3f6bed7f840d44c08ebdb73b1825282b801799e325bcbdfa6bc5c370e5aecc65"}, - {file = "numpy-2.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9416a5c2e92ace094e9f0082c5fd473502c91651fb896bc17690d6fc475128d6"}, - {file = "numpy-2.0.0-pp39-pypy39_pp73-macosx_14_0_x86_64.whl", hash = "sha256:17067d097ed036636fa79f6a869ac26df7db1ba22039d962422506640314933a"}, - {file = "numpy-2.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ecb5b0582cd125f67a629072fed6f83562d9dd04d7e03256c9829bdec027ad"}, - {file = "numpy-2.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cef04d068f5fb0518a77857953193b6bb94809a806bd0a14983a8f12ada060c9"}, - {file = "numpy-2.0.0.tar.gz", hash = "sha256:cf5d1c9e6837f8af9f92b6bd3e86d513cdc11f60fd62185cc49ec7d1aba34864"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8a0e34993b510fc19b9a2ce7f31cb8e94ecf6e924a40c0c9dd4f62d0aac47d9"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7dd86dfaf7c900c0bbdcb8b16e2f6ddf1eb1fe39c6c8cca6e94844ed3152a8fd"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:5889dd24f03ca5a5b1e8a90a33b5a0846d8977565e4ae003a63d22ecddf6782f"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:59ca673ad11d4b84ceb385290ed0ebe60266e356641428c845b39cd9df6713ab"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13ce49a34c44b6de5241f0b38b07e44c1b2dcacd9e36c30f9c2fcb1bb5135db7"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913cc1d311060b1d409e609947fa1b9753701dac96e6581b58afc36b7ee35af6"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:caf5d284ddea7462c32b8d4a6b8af030b6c9fd5332afb70e7414d7fdded4bfd0"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:57eb525e7c2a8fdee02d731f647146ff54ea8c973364f3b850069ffb42799647"}, + {file = "numpy-2.1.1-cp310-cp310-win32.whl", hash = "sha256:9a8e06c7a980869ea67bbf551283bbed2856915f0a792dc32dd0f9dd2fb56728"}, + {file = "numpy-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:d10c39947a2d351d6d466b4ae83dad4c37cd6c3cdd6d5d0fa797da56f710a6ae"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0d07841fd284718feffe7dd17a63a2e6c78679b2d386d3e82f44f0108c905550"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b5613cfeb1adfe791e8e681128f5f49f22f3fcaa942255a6124d58ca59d9528f"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0b8cc2715a84b7c3b161f9ebbd942740aaed913584cae9cdc7f8ad5ad41943d0"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b49742cdb85f1f81e4dc1b39dcf328244f4d8d1ded95dea725b316bd2cf18c95"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d5f8a8e3bc87334f025194c6193e408903d21ebaeb10952264943a985066ca"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d51fc141ddbe3f919e91a096ec739f49d686df8af254b2053ba21a910ae518bf"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:98ce7fb5b8063cfdd86596b9c762bf2b5e35a2cdd7e967494ab78a1fa7f8b86e"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:24c2ad697bd8593887b019817ddd9974a7f429c14a5469d7fad413f28340a6d2"}, + {file = "numpy-2.1.1-cp311-cp311-win32.whl", hash = "sha256:397bc5ce62d3fb73f304bec332171535c187e0643e176a6e9421a6e3eacef06d"}, + {file = "numpy-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:ae8ce252404cdd4de56dcfce8b11eac3c594a9c16c231d081fb705cf23bd4d9e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c803b7934a7f59563db459292e6aa078bb38b7ab1446ca38dd138646a38203e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6435c48250c12f001920f0751fe50c0348f5f240852cfddc5e2f97e007544cbe"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3269c9eb8745e8d975980b3a7411a98976824e1fdef11f0aacf76147f662b15f"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:fac6e277a41163d27dfab5f4ec1f7a83fac94e170665a4a50191b545721c6521"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcd8f556cdc8cfe35e70efb92463082b7f43dd7e547eb071ffc36abc0ca4699b"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b9cd92c8f8e7b313b80e93cedc12c0112088541dcedd9197b5dee3738c1201"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:afd9c680df4de71cd58582b51e88a61feed4abcc7530bcd3d48483f20fc76f2a"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8661c94e3aad18e1ea17a11f60f843a4933ccaf1a25a7c6a9182af70610b2313"}, + {file = "numpy-2.1.1-cp312-cp312-win32.whl", hash = "sha256:950802d17a33c07cba7fd7c3dcfa7d64705509206be1606f196d179e539111ed"}, + {file = "numpy-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:3fc5eabfc720db95d68e6646e88f8b399bfedd235994016351b1d9e062c4b270"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:046356b19d7ad1890c751b99acad5e82dc4a02232013bd9a9a712fddf8eb60f5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6e5a9cb2be39350ae6c8f79410744e80154df658d5bea06e06e0ac5bb75480d5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:d4c57b68c8ef5e1ebf47238e99bf27657511ec3f071c465f6b1bccbef12d4136"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:8ae0fd135e0b157365ac7cc31fff27f07a5572bdfc38f9c2d43b2aff416cc8b0"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981707f6b31b59c0c24bcda52e5605f9701cb46da4b86c2e8023656ad3e833cb"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca4b53e1e0b279142113b8c5eb7d7a877e967c306edc34f3b58e9be12fda8df"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e097507396c0be4e547ff15b13dc3866f45f3680f789c1a1301b07dadd3fbc78"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7506387e191fe8cdb267f912469a3cccc538ab108471291636a96a54e599556"}, + {file = "numpy-2.1.1-cp313-cp313-win32.whl", hash = "sha256:251105b7c42abe40e3a689881e1793370cc9724ad50d64b30b358bbb3a97553b"}, + {file = "numpy-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:f212d4f46b67ff604d11fff7cc62d36b3e8714edf68e44e9760e19be38c03eb0"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:920b0911bb2e4414c50e55bd658baeb78281a47feeb064ab40c2b66ecba85553"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:bab7c09454460a487e631ffc0c42057e3d8f2a9ddccd1e60c7bb8ed774992480"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:cea427d1350f3fd0d2818ce7350095c1a2ee33e30961d2f0fef48576ddbbe90f"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:e30356d530528a42eeba51420ae8bf6c6c09559051887196599d96ee5f536468"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8dfa9e94fc127c40979c3eacbae1e61fda4fe71d84869cc129e2721973231ef"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910b47a6d0635ec1bd53b88f86120a52bf56dcc27b51f18c7b4a2e2224c29f0f"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:13cc11c00000848702322af4de0147ced365c81d66053a67c2e962a485b3717c"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53e27293b3a2b661c03f79aa51c3987492bd4641ef933e366e0f9f6c9bf257ec"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7be6a07520b88214ea85d8ac8b7d6d8a1839b0b5cb87412ac9f49fa934eb15d5"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:52ac2e48f5ad847cd43c4755520a2317f3380213493b9d8a4c5e37f3b87df504"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50a95ca3560a6058d6ea91d4629a83a897ee27c00630aed9d933dff191f170cd"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:99f4a9ee60eed1385a86e82288971a51e71df052ed0b2900ed30bc840c0f2e39"}, + {file = "numpy-2.1.1.tar.gz", hash = "sha256:d0cf7d55b1051387807405b3898efafa862997b4cba8aa5dbe657be794afeafd"}, ] [[package]] @@ -2842,8 +2954,8 @@ files = [ [package.dependencies] numpy = [ {version = ">=1.22.4", markers = "python_version < \"3.11\""}, - {version = ">=1.23.2", markers = "python_version == \"3.11\""}, {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -2905,84 +3017,95 @@ ptyprocess = ">=0.5" [[package]] name = "pillow" -version = "10.3.0" +version = "10.4.0" description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.8" files = [ - {file = "pillow-10.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45"}, - {file = "pillow-10.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf"}, - {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3"}, - {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5"}, - {file = "pillow-10.3.0-cp310-cp310-win32.whl", hash = "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2"}, - {file = "pillow-10.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f"}, - {file = "pillow-10.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b"}, - {file = "pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795"}, - {file = "pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd"}, - {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad"}, - {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c"}, - {file = "pillow-10.3.0-cp311-cp311-win32.whl", hash = "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09"}, - {file = "pillow-10.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d"}, - {file = "pillow-10.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f"}, - {file = "pillow-10.3.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84"}, - {file = "pillow-10.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a"}, - {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef"}, - {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3"}, - {file = "pillow-10.3.0-cp312-cp312-win32.whl", hash = "sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d"}, - {file = "pillow-10.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b"}, - {file = "pillow-10.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a"}, - {file = "pillow-10.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b"}, - {file = "pillow-10.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd"}, - {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d"}, - {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3"}, - {file = "pillow-10.3.0-cp38-cp38-win32.whl", hash = "sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b"}, - {file = "pillow-10.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999"}, - {file = "pillow-10.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936"}, - {file = "pillow-10.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8"}, - {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9"}, - {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb"}, - {file = "pillow-10.3.0-cp39-cp39-win32.whl", hash = "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572"}, - {file = "pillow-10.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb"}, - {file = "pillow-10.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591"}, - {file = "pillow-10.3.0.tar.gz", hash = "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d"}, + {file = "pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e"}, + {file = "pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc"}, + {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e"}, + {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46"}, + {file = "pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984"}, + {file = "pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141"}, + {file = "pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1"}, + {file = "pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c"}, + {file = "pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319"}, + {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d"}, + {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696"}, + {file = "pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496"}, + {file = "pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91"}, + {file = "pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22"}, + {file = "pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94"}, + {file = "pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a"}, + {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b"}, + {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9"}, + {file = "pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42"}, + {file = "pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a"}, + {file = "pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9"}, + {file = "pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3"}, + {file = "pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc"}, + {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a"}, + {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309"}, + {file = "pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060"}, + {file = "pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea"}, + {file = "pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d"}, + {file = "pillow-10.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736"}, + {file = "pillow-10.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd"}, + {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84"}, + {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0"}, + {file = "pillow-10.4.0-cp38-cp38-win32.whl", hash = "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e"}, + {file = "pillow-10.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab"}, + {file = "pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d"}, + {file = "pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c"}, + {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1"}, + {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df"}, + {file = "pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef"}, + {file = "pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5"}, + {file = "pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3"}, + {file = "pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06"}, ] [package.extras] -docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +docs = ["furo", "olefile", "sphinx (>=7.3)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"] fpx = ["olefile"] mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] @@ -2991,19 +3114,19 @@ xmp = ["defusedxml"] [[package]] name = "platformdirs" -version = "4.2.2" +version = "4.3.2" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, - {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, + {file = "platformdirs-4.3.2-py3-none-any.whl", hash = "sha256:eb1c8582560b34ed4ba105009a4badf7f6f85768b30126f351328507b2beb617"}, + {file = "platformdirs-4.3.2.tar.gz", hash = "sha256:9e5e27a08aa095dd127b9f2e764d74254f482fef22b0970773bfba79d091ab8c"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] -type = ["mypy (>=1.8)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "pluggy" @@ -3022,13 +3145,13 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "port-for" -version = "0.7.2" +version = "0.7.3" description = "Utility that helps with local TCP ports management. It can find an unused TCP localhost port and remember the association." optional = false python-versions = ">=3.8" files = [ - {file = "port-for-0.7.2.tar.gz", hash = "sha256:074f29335130578aa42fef3726985e57d01c15189e509633a8a1b0b7f9226349"}, - {file = "port_for-0.7.2-py3-none-any.whl", hash = "sha256:16b279ab4f210bad33515c45bd9af0c6e048ab24c3b6bbd9cfc7e451782617df"}, + {file = "port_for-0.7.3-py3-none-any.whl", hash = "sha256:786fa1171cee23093a475d65228b4a9877d249827ceb7cd2362cb7b80d0c69d4"}, + {file = "port_for-0.7.3.tar.gz", hash = "sha256:2d597e5854a1b323b17eba8ae0630784c779857abde5e22444c88d233a60f953"}, ] [[package]] @@ -3063,27 +3186,28 @@ wcwidth = "*" [[package]] name = "psutil" -version = "5.9.8" +version = "6.0.0" description = "Cross-platform lib for process and system monitoring in Python." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"}, - {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"}, - {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7"}, - {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36"}, - {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d"}, - {file = "psutil-5.9.8-cp27-none-win32.whl", hash = "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e"}, - {file = "psutil-5.9.8-cp27-none-win_amd64.whl", hash = "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631"}, - {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"}, - {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"}, - {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"}, - {file = "psutil-5.9.8-cp36-cp36m-win32.whl", hash = "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee"}, - {file = "psutil-5.9.8-cp36-cp36m-win_amd64.whl", hash = "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2"}, - {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"}, - {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"}, - {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"}, - {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"}, +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "psutil-6.0.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a021da3e881cd935e64a3d0a20983bda0bb4cf80e4f74fa9bfcb1bc5785360c6"}, + {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:1287c2b95f1c0a364d23bc6f2ea2365a8d4d9b726a3be7294296ff7ba97c17f0"}, + {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:a9a3dbfb4de4f18174528d87cc352d1f788b7496991cca33c6996f40c9e3c92c"}, + {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:6ec7588fb3ddaec7344a825afe298db83fe01bfaaab39155fa84cf1c0d6b13c3"}, + {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:1e7c870afcb7d91fdea2b37c24aeb08f98b6d67257a5cb0a8bc3ac68d0f1a68c"}, + {file = "psutil-6.0.0-cp27-none-win32.whl", hash = "sha256:02b69001f44cc73c1c5279d02b30a817e339ceb258ad75997325e0e6169d8b35"}, + {file = "psutil-6.0.0-cp27-none-win_amd64.whl", hash = "sha256:21f1fb635deccd510f69f485b87433460a603919b45e2a324ad65b0cc74f8fb1"}, + {file = "psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c588a7e9b1173b6e866756dde596fd4cad94f9399daf99ad8c3258b3cb2b47a0"}, + {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ed2440ada7ef7d0d608f20ad89a04ec47d2d3ab7190896cd62ca5fc4fe08bf0"}, + {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd9a97c8e94059b0ef54a7d4baf13b405011176c3b6ff257c247cae0d560ecd"}, + {file = "psutil-6.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e8d0054fc88153ca0544f5c4d554d42e33df2e009c4ff42284ac9ebdef4132"}, + {file = "psutil-6.0.0-cp36-cp36m-win32.whl", hash = "sha256:fc8c9510cde0146432bbdb433322861ee8c3efbf8589865c8bf8d21cb30c4d14"}, + {file = "psutil-6.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:34859b8d8f423b86e4385ff3665d3f4d94be3cdf48221fbe476e883514fdb71c"}, + {file = "psutil-6.0.0-cp37-abi3-win32.whl", hash = "sha256:a495580d6bae27291324fe60cea0b5a7c23fa36a7cd35035a16d93bdcf076b9d"}, + {file = "psutil-6.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:33ea5e1c975250a720b3a6609c490db40dae5d83a4eb315170c4fe0d8b1f34b3"}, + {file = "psutil-6.0.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:ffe7fc9b6b36beadc8c322f84e1caff51e8703b88eee1da46d1e3a6ae11b4fd0"}, + {file = "psutil-6.0.0.tar.gz", hash = "sha256:8faae4f310b6d969fa26ca0545338b21f73c6b15db7c4a8d934a5482faa818f2"}, ] [package.extras] @@ -3102,13 +3226,13 @@ files = [ [[package]] name = "pure-eval" -version = "0.2.2" +version = "0.2.3" description = "Safely evaluate AST nodes without side effects" optional = false python-versions = "*" files = [ - {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"}, - {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"}, + {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, + {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, ] [package.extras] @@ -3150,13 +3274,13 @@ pybtex = ">=0.16" [[package]] name = "pycodestyle" -version = "2.11.1" +version = "2.12.1" description = "Python style guide checker" optional = false python-versions = ">=3.8" files = [ - {file = "pycodestyle-2.11.1-py2.py3-none-any.whl", hash = "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67"}, - {file = "pycodestyle-2.11.1.tar.gz", hash = "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f"}, + {file = "pycodestyle-2.12.1-py2.py3-none-any.whl", hash = "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3"}, + {file = "pycodestyle-2.12.1.tar.gz", hash = "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"}, ] [[package]] @@ -3172,13 +3296,13 @@ files = [ [[package]] name = "pydata-sphinx-theme" -version = "0.15.3" +version = "0.15.4" description = "Bootstrap-based Sphinx theme from the PyData community" optional = false python-versions = ">=3.9" files = [ - {file = "pydata_sphinx_theme-0.15.3-py3-none-any.whl", hash = "sha256:a48ee049dc9b0f7064dbb8f7064b1cf3ae48aa193faafe14abd403a1b7102810"}, - {file = "pydata_sphinx_theme-0.15.3.tar.gz", hash = "sha256:f26ed9b676f61d1b2ae9289f3d7e496e8678dd56f2568b27a66fa4ad1f164efd"}, + {file = "pydata_sphinx_theme-0.15.4-py3-none-any.whl", hash = "sha256:2136ad0e9500d0949f96167e63f3e298620040aea8f9c74621959eda5d4cf8e6"}, + {file = "pydata_sphinx_theme-0.15.4.tar.gz", hash = "sha256:7762ec0ac59df3acecf49fd2f889e1b4565dbce8b88b2e29ee06fdd90645a06d"}, ] [package.dependencies] @@ -3194,19 +3318,19 @@ typing-extensions = "*" [package.extras] a11y = ["pytest-playwright"] dev = ["pandoc", "pre-commit", "pydata-sphinx-theme[doc,test]", "pyyaml", "sphinx-theme-builder[cli]", "tox"] -doc = ["ablog (>=0.11.8)", "colorama", "ipykernel", "ipyleaflet", "ipywidgets", "jupyter_sphinx", "jupyterlite-sphinx", "linkify-it-py", "matplotlib", "myst-parser", "nbsphinx", "numpy", "numpydoc", "pandas", "plotly", "rich", "sphinx-autoapi (>=3.0.0)", "sphinx-copybutton", "sphinx-design", "sphinx-favicon (>=1.0.1)", "sphinx-sitemap", "sphinx-togglebutton", "sphinxcontrib-youtube (<1.4)", "sphinxext-rediraffe", "xarray"] +doc = ["ablog (>=0.11.8)", "colorama", "graphviz", "ipykernel", "ipyleaflet", "ipywidgets", "jupyter_sphinx", "jupyterlite-sphinx", "linkify-it-py", "matplotlib", "myst-parser", "nbsphinx", "numpy", "numpydoc", "pandas", "plotly", "rich", "sphinx-autoapi (>=3.0.0)", "sphinx-copybutton", "sphinx-design", "sphinx-favicon (>=1.0.1)", "sphinx-sitemap", "sphinx-togglebutton", "sphinxcontrib-youtube (>=1.4.1)", "sphinxext-rediraffe", "xarray"] i18n = ["Babel", "jinja2"] test = ["pytest", "pytest-cov", "pytest-regressions", "sphinx[test]"] [[package]] name = "pyflakes" -version = "3.1.0" +version = "3.2.0" description = "passive checker of Python programs" optional = false python-versions = ">=3.8" files = [ - {file = "pyflakes-3.1.0-py2.py3-none-any.whl", hash = "sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774"}, - {file = "pyflakes-3.1.0.tar.gz", hash = "sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc"}, + {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"}, + {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"}, ] [[package]] @@ -3225,23 +3349,24 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pylint" -version = "2.17.7" +version = "3.2.7" description = "python code static checker" optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.8.0" files = [ - {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"}, - {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"}, + {file = "pylint-3.2.7-py3-none-any.whl", hash = "sha256:02f4aedeac91be69fb3b4bea997ce580a4ac68ce58b89eaefeaf06749df73f4b"}, + {file = "pylint-3.2.7.tar.gz", hash = "sha256:1b7a721b575eaeaa7d39db076b6e7743c993ea44f57979127c517c6c572c803e"}, ] [package.dependencies] -astroid = ">=2.15.8,<=2.17.0-dev0" +astroid = ">=3.2.4,<=3.3.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = [ {version = ">=0.2", markers = "python_version < \"3.11\""}, - {version = ">=0.3.6", markers = "python_version >= \"3.11\""}, + {version = ">=0.3.7", markers = "python_version >= \"3.12\""}, + {version = ">=0.3.6", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, ] -isort = ">=4.2.5,<6" +isort = ">=4.2.5,<5.13.0 || >5.13.0,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} @@ -3268,13 +3393,13 @@ rsa = ["cryptography"] [[package]] name = "pyparsing" -version = "3.1.2" +version = "3.1.4" description = "pyparsing module - Classes and methods to define and execute parsing grammars" optional = false python-versions = ">=3.6.8" files = [ - {file = "pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"}, - {file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"}, + {file = "pyparsing-3.1.4-py3-none-any.whl", hash = "sha256:a6a7ee4235a3f944aa1fa2249307708f893fe5717dc603503c6c7969c070fb7c"}, + {file = "pyparsing-3.1.4.tar.gz", hash = "sha256:f86ec8d1a83f11977c9a6ea7598e8c27fc5cddfa5b07ea2241edbbde1d7bc032"}, ] [package.extras] @@ -3379,13 +3504,13 @@ pytest = "*" [[package]] name = "python-cmr" -version = "0.11.0" +version = "0.12.0" description = "Python wrapper to the NASA Common Metadata Repository (CMR) API." optional = false python-versions = "<4.0.0,>=3.8.1" files = [ - {file = "python_cmr-0.11.0-py3-none-any.whl", hash = "sha256:793b19f555b5d37034ec918a02c1a4a0b0aeaa168a9f6a84c3568f3ce595cccc"}, - {file = "python_cmr-0.11.0.tar.gz", hash = "sha256:d2e6ba3a7dadf5f3085b68bb64e84cca89e5f24109d386bd6fd98daae2d5995d"}, + {file = "python_cmr-0.12.0-py3-none-any.whl", hash = "sha256:022cf7e393e245c27b722f181d5e2bedce61fa4b60267baa88421e1f079832cf"}, + {file = "python_cmr-0.12.0.tar.gz", hash = "sha256:16d61f7fa1ac24c3cbf484723244482934b71e04434093b4bb5663ae934a19c6"}, ] [package.dependencies] @@ -3423,13 +3548,13 @@ cli = ["click (>=5.0)"] [[package]] name = "pytz" -version = "2024.1" +version = "2024.2" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, + {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, + {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, ] [[package]] @@ -3457,159 +3582,182 @@ files = [ [[package]] name = "pyyaml" -version = "6.0.1" +version = "6.0.2" description = "YAML parser and emitter for Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, - {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, - {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, - {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, - {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, - {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, - {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, - {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, - {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, - {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, - {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, - {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, - {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, - {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] [[package]] name = "pyzmq" -version = "26.0.3" +version = "26.2.0" description = "Python bindings for 0MQ" optional = false python-versions = ">=3.7" files = [ - {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:44dd6fc3034f1eaa72ece33588867df9e006a7303725a12d64c3dff92330f625"}, - {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:acb704195a71ac5ea5ecf2811c9ee19ecdc62b91878528302dd0be1b9451cc90"}, - {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dbb9c997932473a27afa93954bb77a9f9b786b4ccf718d903f35da3232317de"}, - {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6bcb34f869d431799c3ee7d516554797f7760cb2198ecaa89c3f176f72d062be"}, - {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ece17ec5f20d7d9b442e5174ae9f020365d01ba7c112205a4d59cf19dc38ee"}, - {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ba6e5e6588e49139a0979d03a7deb9c734bde647b9a8808f26acf9c547cab1bf"}, - {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3bf8b000a4e2967e6dfdd8656cd0757d18c7e5ce3d16339e550bd462f4857e59"}, - {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2136f64fbb86451dbbf70223635a468272dd20075f988a102bf8a3f194a411dc"}, - {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e8918973fbd34e7814f59143c5f600ecd38b8038161239fd1a3d33d5817a38b8"}, - {file = "pyzmq-26.0.3-cp310-cp310-win32.whl", hash = "sha256:0aaf982e68a7ac284377d051c742610220fd06d330dcd4c4dbb4cdd77c22a537"}, - {file = "pyzmq-26.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:f1a9b7d00fdf60b4039f4455afd031fe85ee8305b019334b72dcf73c567edc47"}, - {file = "pyzmq-26.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:80b12f25d805a919d53efc0a5ad7c0c0326f13b4eae981a5d7b7cc343318ebb7"}, - {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:a72a84570f84c374b4c287183debc776dc319d3e8ce6b6a0041ce2e400de3f32"}, - {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ca684ee649b55fd8f378127ac8462fb6c85f251c2fb027eb3c887e8ee347bcd"}, - {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e222562dc0f38571c8b1ffdae9d7adb866363134299264a1958d077800b193b7"}, - {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f17cde1db0754c35a91ac00b22b25c11da6eec5746431d6e5092f0cd31a3fea9"}, - {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b7c0c0b3244bb2275abe255d4a30c050d541c6cb18b870975553f1fb6f37527"}, - {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ac97a21de3712afe6a6c071abfad40a6224fd14fa6ff0ff8d0c6e6cd4e2f807a"}, - {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:88b88282e55fa39dd556d7fc04160bcf39dea015f78e0cecec8ff4f06c1fc2b5"}, - {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:72b67f966b57dbd18dcc7efbc1c7fc9f5f983e572db1877081f075004614fcdd"}, - {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4b6cecbbf3b7380f3b61de3a7b93cb721125dc125c854c14ddc91225ba52f83"}, - {file = "pyzmq-26.0.3-cp311-cp311-win32.whl", hash = "sha256:eed56b6a39216d31ff8cd2f1d048b5bf1700e4b32a01b14379c3b6dde9ce3aa3"}, - {file = "pyzmq-26.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:3191d312c73e3cfd0f0afdf51df8405aafeb0bad71e7ed8f68b24b63c4f36500"}, - {file = "pyzmq-26.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:b6907da3017ef55139cf0e417c5123a84c7332520e73a6902ff1f79046cd3b94"}, - {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:068ca17214038ae986d68f4a7021f97e187ed278ab6dccb79f837d765a54d753"}, - {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7821d44fe07335bea256b9f1f41474a642ca55fa671dfd9f00af8d68a920c2d4"}, - {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eeb438a26d87c123bb318e5f2b3d86a36060b01f22fbdffd8cf247d52f7c9a2b"}, - {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:69ea9d6d9baa25a4dc9cef5e2b77b8537827b122214f210dd925132e34ae9b12"}, - {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7daa3e1369355766dea11f1d8ef829905c3b9da886ea3152788dc25ee6079e02"}, - {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6ca7a9a06b52d0e38ccf6bca1aeff7be178917893f3883f37b75589d42c4ac20"}, - {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1b7d0e124948daa4d9686d421ef5087c0516bc6179fdcf8828b8444f8e461a77"}, - {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e746524418b70f38550f2190eeee834db8850088c834d4c8406fbb9bc1ae10b2"}, - {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:6b3146f9ae6af82c47a5282ac8803523d381b3b21caeae0327ed2f7ecb718798"}, - {file = "pyzmq-26.0.3-cp312-cp312-win32.whl", hash = "sha256:2b291d1230845871c00c8462c50565a9cd6026fe1228e77ca934470bb7d70ea0"}, - {file = "pyzmq-26.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:926838a535c2c1ea21c903f909a9a54e675c2126728c21381a94ddf37c3cbddf"}, - {file = "pyzmq-26.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:5bf6c237f8c681dfb91b17f8435b2735951f0d1fad10cc5dfd96db110243370b"}, - {file = "pyzmq-26.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c0991f5a96a8e620f7691e61178cd8f457b49e17b7d9cfa2067e2a0a89fc1d5"}, - {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dbf012d8fcb9f2cf0643b65df3b355fdd74fc0035d70bb5c845e9e30a3a4654b"}, - {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:01fbfbeb8249a68d257f601deb50c70c929dc2dfe683b754659569e502fbd3aa"}, - {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c8eb19abe87029c18f226d42b8a2c9efdd139d08f8bf6e085dd9075446db450"}, - {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5344b896e79800af86ad643408ca9aa303a017f6ebff8cee5a3163c1e9aec987"}, - {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:204e0f176fd1d067671157d049466869b3ae1fc51e354708b0dc41cf94e23a3a"}, - {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a42db008d58530efa3b881eeee4991146de0b790e095f7ae43ba5cc612decbc5"}, - {file = "pyzmq-26.0.3-cp37-cp37m-win32.whl", hash = "sha256:8d7a498671ca87e32b54cb47c82a92b40130a26c5197d392720a1bce1b3c77cf"}, - {file = "pyzmq-26.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:3b4032a96410bdc760061b14ed6a33613ffb7f702181ba999df5d16fb96ba16a"}, - {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2cc4e280098c1b192c42a849de8de2c8e0f3a84086a76ec5b07bfee29bda7d18"}, - {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5bde86a2ed3ce587fa2b207424ce15b9a83a9fa14422dcc1c5356a13aed3df9d"}, - {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:34106f68e20e6ff253c9f596ea50397dbd8699828d55e8fa18bd4323d8d966e6"}, - {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ebbbd0e728af5db9b04e56389e2299a57ea8b9dd15c9759153ee2455b32be6ad"}, - {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6b1d1c631e5940cac5a0b22c5379c86e8df6a4ec277c7a856b714021ab6cfad"}, - {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e891ce81edd463b3b4c3b885c5603c00141151dd9c6936d98a680c8c72fe5c67"}, - {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9b273ecfbc590a1b98f014ae41e5cf723932f3b53ba9367cfb676f838038b32c"}, - {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b32bff85fb02a75ea0b68f21e2412255b5731f3f389ed9aecc13a6752f58ac97"}, - {file = "pyzmq-26.0.3-cp38-cp38-win32.whl", hash = "sha256:f6c21c00478a7bea93caaaef9e7629145d4153b15a8653e8bb4609d4bc70dbfc"}, - {file = "pyzmq-26.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:3401613148d93ef0fd9aabdbddb212de3db7a4475367f49f590c837355343972"}, - {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:2ed8357f4c6e0daa4f3baf31832df8a33334e0fe5b020a61bc8b345a3db7a606"}, - {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c1c8f2a2ca45292084c75bb6d3a25545cff0ed931ed228d3a1810ae3758f975f"}, - {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b63731993cdddcc8e087c64e9cf003f909262b359110070183d7f3025d1c56b5"}, - {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3cd31f859b662ac5d7f4226ec7d8bd60384fa037fc02aee6ff0b53ba29a3ba8"}, - {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:115f8359402fa527cf47708d6f8a0f8234f0e9ca0cab7c18c9c189c194dbf620"}, - {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:715bdf952b9533ba13dfcf1f431a8f49e63cecc31d91d007bc1deb914f47d0e4"}, - {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e1258c639e00bf5e8a522fec6c3eaa3e30cf1c23a2f21a586be7e04d50c9acab"}, - {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:15c59e780be8f30a60816a9adab900c12a58d79c1ac742b4a8df044ab2a6d920"}, - {file = "pyzmq-26.0.3-cp39-cp39-win32.whl", hash = "sha256:d0cdde3c78d8ab5b46595054e5def32a755fc028685add5ddc7403e9f6de9879"}, - {file = "pyzmq-26.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:ce828058d482ef860746bf532822842e0ff484e27f540ef5c813d516dd8896d2"}, - {file = "pyzmq-26.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:788f15721c64109cf720791714dc14afd0f449d63f3a5487724f024345067381"}, - {file = "pyzmq-26.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2c18645ef6294d99b256806e34653e86236eb266278c8ec8112622b61db255de"}, - {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e6bc96ebe49604df3ec2c6389cc3876cabe475e6bfc84ced1bf4e630662cb35"}, - {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:971e8990c5cc4ddcff26e149398fc7b0f6a042306e82500f5e8db3b10ce69f84"}, - {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8416c23161abd94cc7da80c734ad7c9f5dbebdadfdaa77dad78244457448223"}, - {file = "pyzmq-26.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:082a2988364b60bb5de809373098361cf1dbb239623e39e46cb18bc035ed9c0c"}, - {file = "pyzmq-26.0.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d57dfbf9737763b3a60d26e6800e02e04284926329aee8fb01049635e957fe81"}, - {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:77a85dca4c2430ac04dc2a2185c2deb3858a34fe7f403d0a946fa56970cf60a1"}, - {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4c82a6d952a1d555bf4be42b6532927d2a5686dd3c3e280e5f63225ab47ac1f5"}, - {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4496b1282c70c442809fc1b151977c3d967bfb33e4e17cedbf226d97de18f709"}, - {file = "pyzmq-26.0.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:e4946d6bdb7ba972dfda282f9127e5756d4f299028b1566d1245fa0d438847e6"}, - {file = "pyzmq-26.0.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:03c0ae165e700364b266876d712acb1ac02693acd920afa67da2ebb91a0b3c09"}, - {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3e3070e680f79887d60feeda051a58d0ac36622e1759f305a41059eff62c6da7"}, - {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6ca08b840fe95d1c2bd9ab92dac5685f949fc6f9ae820ec16193e5ddf603c3b2"}, - {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e76654e9dbfb835b3518f9938e565c7806976c07b37c33526b574cc1a1050480"}, - {file = "pyzmq-26.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:871587bdadd1075b112e697173e946a07d722459d20716ceb3d1bd6c64bd08ce"}, - {file = "pyzmq-26.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d0a2d1bd63a4ad79483049b26514e70fa618ce6115220da9efdff63688808b17"}, - {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0270b49b6847f0d106d64b5086e9ad5dc8a902413b5dbbb15d12b60f9c1747a4"}, - {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:703c60b9910488d3d0954ca585c34f541e506a091a41930e663a098d3b794c67"}, - {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74423631b6be371edfbf7eabb02ab995c2563fee60a80a30829176842e71722a"}, - {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4adfbb5451196842a88fda3612e2c0414134874bffb1c2ce83ab4242ec9e027d"}, - {file = "pyzmq-26.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3516119f4f9b8671083a70b6afaa0a070f5683e431ab3dc26e9215620d7ca1ad"}, - {file = "pyzmq-26.0.3.tar.gz", hash = "sha256:dba7d9f2e047dfa2bca3b01f4f84aa5246725203d6284e3790f2ca15fba6b40a"}, + {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ddf33d97d2f52d89f6e6e7ae66ee35a4d9ca6f36eda89c24591b0c40205a3629"}, + {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dacd995031a01d16eec825bf30802fceb2c3791ef24bcce48fa98ce40918c27b"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89289a5ee32ef6c439086184529ae060c741334b8970a6855ec0b6ad3ff28764"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5506f06d7dc6ecf1efacb4a013b1f05071bb24b76350832c96449f4a2d95091c"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ea039387c10202ce304af74def5021e9adc6297067f3441d348d2b633e8166a"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a2224fa4a4c2ee872886ed00a571f5e967c85e078e8e8c2530a2fb01b3309b88"}, + {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:28ad5233e9c3b52d76196c696e362508959741e1a005fb8fa03b51aea156088f"}, + {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1c17211bc037c7d88e85ed8b7d8f7e52db6dc8eca5590d162717c654550f7282"}, + {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b8f86dd868d41bea9a5f873ee13bf5551c94cf6bc51baebc6f85075971fe6eea"}, + {file = "pyzmq-26.2.0-cp310-cp310-win32.whl", hash = "sha256:46a446c212e58456b23af260f3d9fb785054f3e3653dbf7279d8f2b5546b21c2"}, + {file = "pyzmq-26.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:49d34ab71db5a9c292a7644ce74190b1dd5a3475612eefb1f8be1d6961441971"}, + {file = "pyzmq-26.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:bfa832bfa540e5b5c27dcf5de5d82ebc431b82c453a43d141afb1e5d2de025fa"}, + {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:8f7e66c7113c684c2b3f1c83cdd3376103ee0ce4c49ff80a648643e57fb22218"}, + {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3a495b30fc91db2db25120df5847d9833af237546fd59170701acd816ccc01c4"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77eb0968da535cba0470a5165468b2cac7772cfb569977cff92e240f57e31bef"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ace4f71f1900a548f48407fc9be59c6ba9d9aaf658c2eea6cf2779e72f9f317"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92a78853d7280bffb93df0a4a6a2498cba10ee793cc8076ef797ef2f74d107cf"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:689c5d781014956a4a6de61d74ba97b23547e431e9e7d64f27d4922ba96e9d6e"}, + {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0aca98bc423eb7d153214b2df397c6421ba6373d3397b26c057af3c904452e37"}, + {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f3496d76b89d9429a656293744ceca4d2ac2a10ae59b84c1da9b5165f429ad3"}, + {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5c2b3bfd4b9689919db068ac6c9911f3fcb231c39f7dd30e3138be94896d18e6"}, + {file = "pyzmq-26.2.0-cp311-cp311-win32.whl", hash = "sha256:eac5174677da084abf378739dbf4ad245661635f1600edd1221f150b165343f4"}, + {file = "pyzmq-26.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:5a509df7d0a83a4b178d0f937ef14286659225ef4e8812e05580776c70e155d5"}, + {file = "pyzmq-26.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0e6091b157d48cbe37bd67233318dbb53e1e6327d6fc3bb284afd585d141003"}, + {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:ded0fc7d90fe93ae0b18059930086c51e640cdd3baebdc783a695c77f123dcd9"}, + {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17bf5a931c7f6618023cdacc7081f3f266aecb68ca692adac015c383a134ca52"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55cf66647e49d4621a7e20c8d13511ef1fe1efbbccf670811864452487007e08"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4661c88db4a9e0f958c8abc2b97472e23061f0bc737f6f6179d7a27024e1faa5"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea7f69de383cb47522c9c208aec6dd17697db7875a4674c4af3f8cfdac0bdeae"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7f98f6dfa8b8ccaf39163ce872bddacca38f6a67289116c8937a02e30bbe9711"}, + {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e3e0210287329272539eea617830a6a28161fbbd8a3271bf4150ae3e58c5d0e6"}, + {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6b274e0762c33c7471f1a7471d1a2085b1a35eba5cdc48d2ae319f28b6fc4de3"}, + {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:29c6a4635eef69d68a00321e12a7d2559fe2dfccfa8efae3ffb8e91cd0b36a8b"}, + {file = "pyzmq-26.2.0-cp312-cp312-win32.whl", hash = "sha256:989d842dc06dc59feea09e58c74ca3e1678c812a4a8a2a419046d711031f69c7"}, + {file = "pyzmq-26.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a50625acdc7801bc6f74698c5c583a491c61d73c6b7ea4dee3901bb99adb27a"}, + {file = "pyzmq-26.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d29ab8592b6ad12ebbf92ac2ed2bedcfd1cec192d8e559e2e099f648570e19b"}, + {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9dd8cd1aeb00775f527ec60022004d030ddc51d783d056e3e23e74e623e33726"}, + {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:28c812d9757fe8acecc910c9ac9dafd2ce968c00f9e619db09e9f8f54c3a68a3"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d80b1dd99c1942f74ed608ddb38b181b87476c6a966a88a950c7dee118fdf50"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c997098cc65e3208eca09303630e84d42718620e83b733d0fd69543a9cab9cb"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ad1bc8d1b7a18497dda9600b12dc193c577beb391beae5cd2349184db40f187"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bea2acdd8ea4275e1278350ced63da0b166421928276c7c8e3f9729d7402a57b"}, + {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:23f4aad749d13698f3f7b64aad34f5fc02d6f20f05999eebc96b89b01262fb18"}, + {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a4f96f0d88accc3dbe4a9025f785ba830f968e21e3e2c6321ccdfc9aef755115"}, + {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ced65e5a985398827cc9276b93ef6dfabe0273c23de8c7931339d7e141c2818e"}, + {file = "pyzmq-26.2.0-cp313-cp313-win32.whl", hash = "sha256:31507f7b47cc1ead1f6e86927f8ebb196a0bab043f6345ce070f412a59bf87b5"}, + {file = "pyzmq-26.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:70fc7fcf0410d16ebdda9b26cbd8bf8d803d220a7f3522e060a69a9c87bf7bad"}, + {file = "pyzmq-26.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c3789bd5768ab5618ebf09cef6ec2b35fed88709b104351748a63045f0ff9797"}, + {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:034da5fc55d9f8da09015d368f519478a52675e558c989bfcb5cf6d4e16a7d2a"}, + {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c92d73464b886931308ccc45b2744e5968cbaade0b1d6aeb40d8ab537765f5bc"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:794a4562dcb374f7dbbfb3f51d28fb40123b5a2abadee7b4091f93054909add5"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aee22939bb6075e7afededabad1a56a905da0b3c4e3e0c45e75810ebe3a52672"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae90ff9dad33a1cfe947d2c40cb9cb5e600d759ac4f0fd22616ce6540f72797"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:43a47408ac52647dfabbc66a25b05b6a61700b5165807e3fbd40063fcaf46386"}, + {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:25bf2374a2a8433633c65ccb9553350d5e17e60c8eb4de4d92cc6bd60f01d306"}, + {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6"}, + {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0"}, + {file = "pyzmq-26.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3b55a4229ce5da9497dd0452b914556ae58e96a4381bb6f59f1305dfd7e53fc8"}, + {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9cb3a6460cdea8fe8194a76de8895707e61ded10ad0be97188cc8463ffa7e3a8"}, + {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8ab5cad923cc95c87bffee098a27856c859bd5d0af31bd346035aa816b081fe1"}, + {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ed69074a610fad1c2fda66180e7b2edd4d31c53f2d1872bc2d1211563904cd9"}, + {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cccba051221b916a4f5e538997c45d7d136a5646442b1231b916d0164067ea27"}, + {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:0eaa83fc4c1e271c24eaf8fb083cbccef8fde77ec8cd45f3c35a9a123e6da097"}, + {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9edda2df81daa129b25a39b86cb57dfdfe16f7ec15b42b19bfac503360d27a93"}, + {file = "pyzmq-26.2.0-cp37-cp37m-win32.whl", hash = "sha256:ea0eb6af8a17fa272f7b98d7bebfab7836a0d62738e16ba380f440fceca2d951"}, + {file = "pyzmq-26.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4ff9dc6bc1664bb9eec25cd17506ef6672d506115095411e237d571e92a58231"}, + {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2eb7735ee73ca1b0d71e0e67c3739c689067f055c764f73aac4cc8ecf958ee3f"}, + {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a534f43bc738181aa7cbbaf48e3eca62c76453a40a746ab95d4b27b1111a7d2"}, + {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:aedd5dd8692635813368e558a05266b995d3d020b23e49581ddd5bbe197a8ab6"}, + {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8be4700cd8bb02cc454f630dcdf7cfa99de96788b80c51b60fe2fe1dac480289"}, + {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fcc03fa4997c447dce58264e93b5aa2d57714fbe0f06c07b7785ae131512732"}, + {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:402b190912935d3db15b03e8f7485812db350d271b284ded2b80d2e5704be780"}, + {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8685fa9c25ff00f550c1fec650430c4b71e4e48e8d852f7ddcf2e48308038640"}, + {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:76589c020680778f06b7e0b193f4b6dd66d470234a16e1df90329f5e14a171cd"}, + {file = "pyzmq-26.2.0-cp38-cp38-win32.whl", hash = "sha256:8423c1877d72c041f2c263b1ec6e34360448decfb323fa8b94e85883043ef988"}, + {file = "pyzmq-26.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:76589f2cd6b77b5bdea4fca5992dc1c23389d68b18ccc26a53680ba2dc80ff2f"}, + {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:b1d464cb8d72bfc1a3adc53305a63a8e0cac6bc8c5a07e8ca190ab8d3faa43c2"}, + {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4da04c48873a6abdd71811c5e163bd656ee1b957971db7f35140a2d573f6949c"}, + {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d049df610ac811dcffdc147153b414147428567fbbc8be43bb8885f04db39d98"}, + {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05590cdbc6b902101d0e65d6a4780af14dc22914cc6ab995d99b85af45362cc9"}, + {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c811cfcd6a9bf680236c40c6f617187515269ab2912f3d7e8c0174898e2519db"}, + {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6835dd60355593de10350394242b5757fbbd88b25287314316f266e24c61d073"}, + {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc6bee759a6bddea5db78d7dcd609397449cb2d2d6587f48f3ca613b19410cfc"}, + {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c530e1eecd036ecc83c3407f77bb86feb79916d4a33d11394b8234f3bd35b940"}, + {file = "pyzmq-26.2.0-cp39-cp39-win32.whl", hash = "sha256:367b4f689786fca726ef7a6c5ba606958b145b9340a5e4808132cc65759abd44"}, + {file = "pyzmq-26.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:e6fa2e3e683f34aea77de8112f6483803c96a44fd726d7358b9888ae5bb394ec"}, + {file = "pyzmq-26.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:7445be39143a8aa4faec43b076e06944b8f9d0701b669df4af200531b21e40bb"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:706e794564bec25819d21a41c31d4df2d48e1cc4b061e8d345d7fb4dd3e94072"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b435f2753621cd36e7c1762156815e21c985c72b19135dac43a7f4f31d28dd1"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:160c7e0a5eb178011e72892f99f918c04a131f36056d10d9c1afb223fc952c2d"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c4a71d5d6e7b28a47a394c0471b7e77a0661e2d651e7ae91e0cab0a587859ca"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:90412f2db8c02a3864cbfc67db0e3dcdbda336acf1c469526d3e869394fe001c"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2ea4ad4e6a12e454de05f2949d4beddb52460f3de7c8b9d5c46fbb7d7222e02c"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fc4f7a173a5609631bb0c42c23d12c49df3966f89f496a51d3eb0ec81f4519d6"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:878206a45202247781472a2d99df12a176fef806ca175799e1c6ad263510d57c"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17c412bad2eb9468e876f556eb4ee910e62d721d2c7a53c7fa31e643d35352e6"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:0d987a3ae5a71c6226b203cfd298720e0086c7fe7c74f35fa8edddfbd6597eed"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:39887ac397ff35b7b775db7201095fc6310a35fdbae85bac4523f7eb3b840e20"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fdb5b3e311d4d4b0eb8b3e8b4d1b0a512713ad7e6a68791d0923d1aec433d919"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:226af7dcb51fdb0109f0016449b357e182ea0ceb6b47dfb5999d569e5db161d5"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bed0e799e6120b9c32756203fb9dfe8ca2fb8467fed830c34c877e25638c3fc"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:29c7947c594e105cb9e6c466bace8532dc1ca02d498684128b339799f5248277"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cdeabcff45d1c219636ee2e54d852262e5c2e085d6cb476d938aee8d921356b3"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35cffef589bcdc587d06f9149f8d5e9e8859920a071df5a2671de2213bef592a"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18c8dc3b7468d8b4bdf60ce9d7141897da103c7a4690157b32b60acb45e333e6"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7133d0a1677aec369d67dd78520d3fa96dd7f3dcec99d66c1762870e5ea1a50a"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6a96179a24b14fa6428cbfc08641c779a53f8fcec43644030328f44034c7f1f4"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4f78c88905461a9203eac9faac157a2a0dbba84a0fd09fd29315db27be40af9f"}, + {file = "pyzmq-26.2.0.tar.gz", hash = "sha256:070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f"}, ] [package.dependencies] @@ -3672,127 +3820,131 @@ tests = ["coverage (>=6.0.0)", "flake8", "mypy", "pytest (>=7.0.0)", "pytest-asy [[package]] name = "rpds-py" -version = "0.18.1" +version = "0.20.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.18.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:d31dea506d718693b6b2cffc0648a8929bdc51c70a311b2770f09611caa10d53"}, - {file = "rpds_py-0.18.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:732672fbc449bab754e0b15356c077cc31566df874964d4801ab14f71951ea80"}, - {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a98a1f0552b5f227a3d6422dbd61bc6f30db170939bd87ed14f3c339aa6c7c9"}, - {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f1944ce16401aad1e3f7d312247b3d5de7981f634dc9dfe90da72b87d37887d"}, - {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38e14fb4e370885c4ecd734f093a2225ee52dc384b86fa55fe3f74638b2cfb09"}, - {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08d74b184f9ab6289b87b19fe6a6d1a97fbfea84b8a3e745e87a5de3029bf944"}, - {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d70129cef4a8d979caa37e7fe957202e7eee8ea02c5e16455bc9808a59c6b2f0"}, - {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ce0bb20e3a11bd04461324a6a798af34d503f8d6f1aa3d2aa8901ceaf039176d"}, - {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81c5196a790032e0fc2464c0b4ab95f8610f96f1f2fa3d4deacce6a79852da60"}, - {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f3027be483868c99b4985fda802a57a67fdf30c5d9a50338d9db646d590198da"}, - {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d44607f98caa2961bab4fa3c4309724b185b464cdc3ba6f3d7340bac3ec97cc1"}, - {file = "rpds_py-0.18.1-cp310-none-win32.whl", hash = "sha256:c273e795e7a0f1fddd46e1e3cb8be15634c29ae8ff31c196debb620e1edb9333"}, - {file = "rpds_py-0.18.1-cp310-none-win_amd64.whl", hash = "sha256:8352f48d511de5f973e4f2f9412736d7dea76c69faa6d36bcf885b50c758ab9a"}, - {file = "rpds_py-0.18.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6b5ff7e1d63a8281654b5e2896d7f08799378e594f09cf3674e832ecaf396ce8"}, - {file = "rpds_py-0.18.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8927638a4d4137a289e41d0fd631551e89fa346d6dbcfc31ad627557d03ceb6d"}, - {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:154bf5c93d79558b44e5b50cc354aa0459e518e83677791e6adb0b039b7aa6a7"}, - {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07f2139741e5deb2c5154a7b9629bc5aa48c766b643c1a6750d16f865a82c5fc"}, - {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c7672e9fba7425f79019db9945b16e308ed8bc89348c23d955c8c0540da0a07"}, - {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:489bdfe1abd0406eba6b3bb4fdc87c7fa40f1031de073d0cfb744634cc8fa261"}, - {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c20f05e8e3d4fc76875fc9cb8cf24b90a63f5a1b4c5b9273f0e8225e169b100"}, - {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:967342e045564cef76dfcf1edb700b1e20838d83b1aa02ab313e6a497cf923b8"}, - {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2cc7c1a47f3a63282ab0f422d90ddac4aa3034e39fc66a559ab93041e6505da7"}, - {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f7afbfee1157e0f9376c00bb232e80a60e59ed716e3211a80cb8506550671e6e"}, - {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9e6934d70dc50f9f8ea47081ceafdec09245fd9f6032669c3b45705dea096b88"}, - {file = "rpds_py-0.18.1-cp311-none-win32.whl", hash = "sha256:c69882964516dc143083d3795cb508e806b09fc3800fd0d4cddc1df6c36e76bb"}, - {file = "rpds_py-0.18.1-cp311-none-win_amd64.whl", hash = "sha256:70a838f7754483bcdc830444952fd89645569e7452e3226de4a613a4c1793fb2"}, - {file = "rpds_py-0.18.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3dd3cd86e1db5aadd334e011eba4e29d37a104b403e8ca24dcd6703c68ca55b3"}, - {file = "rpds_py-0.18.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:05f3d615099bd9b13ecf2fc9cf2d839ad3f20239c678f461c753e93755d629ee"}, - {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35b2b771b13eee8729a5049c976197ff58a27a3829c018a04341bcf1ae409b2b"}, - {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ee17cd26b97d537af8f33635ef38be873073d516fd425e80559f4585a7b90c43"}, - {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b646bf655b135ccf4522ed43d6902af37d3f5dbcf0da66c769a2b3938b9d8184"}, - {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19ba472b9606c36716062c023afa2484d1e4220548751bda14f725a7de17b4f6"}, - {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e30ac5e329098903262dc5bdd7e2086e0256aa762cc8b744f9e7bf2a427d3f8"}, - {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d58ad6317d188c43750cb76e9deacf6051d0f884d87dc6518e0280438648a9ac"}, - {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e1735502458621921cee039c47318cb90b51d532c2766593be6207eec53e5c4c"}, - {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f5bab211605d91db0e2995a17b5c6ee5edec1270e46223e513eaa20da20076ac"}, - {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2fc24a329a717f9e2448f8cd1f960f9dac4e45b6224d60734edeb67499bab03a"}, - {file = "rpds_py-0.18.1-cp312-none-win32.whl", hash = "sha256:1805d5901779662d599d0e2e4159d8a82c0b05faa86ef9222bf974572286b2b6"}, - {file = "rpds_py-0.18.1-cp312-none-win_amd64.whl", hash = "sha256:720edcb916df872d80f80a1cc5ea9058300b97721efda8651efcd938a9c70a72"}, - {file = "rpds_py-0.18.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:c827576e2fa017a081346dce87d532a5310241648eb3700af9a571a6e9fc7e74"}, - {file = "rpds_py-0.18.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aa3679e751408d75a0b4d8d26d6647b6d9326f5e35c00a7ccd82b78ef64f65f8"}, - {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0abeee75434e2ee2d142d650d1e54ac1f8b01e6e6abdde8ffd6eeac6e9c38e20"}, - {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed402d6153c5d519a0faf1bb69898e97fb31613b49da27a84a13935ea9164dfc"}, - {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:338dee44b0cef8b70fd2ef54b4e09bb1b97fc6c3a58fea5db6cc083fd9fc2724"}, - {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7750569d9526199c5b97e5a9f8d96a13300950d910cf04a861d96f4273d5b104"}, - {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:607345bd5912aacc0c5a63d45a1f73fef29e697884f7e861094e443187c02be5"}, - {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:207c82978115baa1fd8d706d720b4a4d2b0913df1c78c85ba73fe6c5804505f0"}, - {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6d1e42d2735d437e7e80bab4d78eb2e459af48c0a46e686ea35f690b93db792d"}, - {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:5463c47c08630007dc0fe99fb480ea4f34a89712410592380425a9b4e1611d8e"}, - {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:06d218939e1bf2ca50e6b0ec700ffe755e5216a8230ab3e87c059ebb4ea06afc"}, - {file = "rpds_py-0.18.1-cp38-none-win32.whl", hash = "sha256:312fe69b4fe1ffbe76520a7676b1e5ac06ddf7826d764cc10265c3b53f96dbe9"}, - {file = "rpds_py-0.18.1-cp38-none-win_amd64.whl", hash = "sha256:9437ca26784120a279f3137ee080b0e717012c42921eb07861b412340f85bae2"}, - {file = "rpds_py-0.18.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:19e515b78c3fc1039dd7da0a33c28c3154458f947f4dc198d3c72db2b6b5dc93"}, - {file = "rpds_py-0.18.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a7b28c5b066bca9a4eb4e2f2663012debe680f097979d880657f00e1c30875a0"}, - {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:673fdbbf668dd958eff750e500495ef3f611e2ecc209464f661bc82e9838991e"}, - {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d960de62227635d2e61068f42a6cb6aae91a7fe00fca0e3aeed17667c8a34611"}, - {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:352a88dc7892f1da66b6027af06a2e7e5d53fe05924cc2cfc56495b586a10b72"}, - {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e0ee01ad8260184db21468a6e1c37afa0529acc12c3a697ee498d3c2c4dcaf3"}, - {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4c39ad2f512b4041343ea3c7894339e4ca7839ac38ca83d68a832fc8b3748ab"}, - {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aaa71ee43a703c321906813bb252f69524f02aa05bf4eec85f0c41d5d62d0f4c"}, - {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6cd8098517c64a85e790657e7b1e509b9fe07487fd358e19431cb120f7d96338"}, - {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:4adec039b8e2928983f885c53b7cc4cda8965b62b6596501a0308d2703f8af1b"}, - {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:32b7daaa3e9389db3695964ce8e566e3413b0c43e3394c05e4b243a4cd7bef26"}, - {file = "rpds_py-0.18.1-cp39-none-win32.whl", hash = "sha256:2625f03b105328729f9450c8badda34d5243231eef6535f80064d57035738360"}, - {file = "rpds_py-0.18.1-cp39-none-win_amd64.whl", hash = "sha256:bf18932d0003c8c4d51a39f244231986ab23ee057d235a12b2684ea26a353590"}, - {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cbfbea39ba64f5e53ae2915de36f130588bba71245b418060ec3330ebf85678e"}, - {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a3d456ff2a6a4d2adcdf3c1c960a36f4fd2fec6e3b4902a42a384d17cf4e7a65"}, - {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7700936ef9d006b7ef605dc53aa364da2de5a3aa65516a1f3ce73bf82ecfc7ae"}, - {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:51584acc5916212e1bf45edd17f3a6b05fe0cbb40482d25e619f824dccb679de"}, - {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:942695a206a58d2575033ff1e42b12b2aece98d6003c6bc739fbf33d1773b12f"}, - {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b906b5f58892813e5ba5c6056d6a5ad08f358ba49f046d910ad992196ea61397"}, - {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6f8e3fecca256fefc91bb6765a693d96692459d7d4c644660a9fff32e517843"}, - {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7732770412bab81c5a9f6d20aeb60ae943a9b36dcd990d876a773526468e7163"}, - {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:bd1105b50ede37461c1d51b9698c4f4be6e13e69a908ab7751e3807985fc0346"}, - {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:618916f5535784960f3ecf8111581f4ad31d347c3de66d02e728de460a46303c"}, - {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:17c6d2155e2423f7e79e3bb18151c686d40db42d8645e7977442170c360194d4"}, - {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c4c4c3f878df21faf5fac86eda32671c27889e13570645a9eea0a1abdd50922"}, - {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:fab6ce90574645a0d6c58890e9bcaac8d94dff54fb51c69e5522a7358b80ab64"}, - {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:531796fb842b53f2695e94dc338929e9f9dbf473b64710c28af5a160b2a8927d"}, - {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:740884bc62a5e2bbb31e584f5d23b32320fd75d79f916f15a788d527a5e83644"}, - {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:998125738de0158f088aef3cb264a34251908dd2e5d9966774fdab7402edfab7"}, - {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2be6e9dd4111d5b31ba3b74d17da54a8319d8168890fbaea4b9e5c3de630ae5"}, - {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0cee71bc618cd93716f3c1bf56653740d2d13ddbd47673efa8bf41435a60daa"}, - {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c3caec4ec5cd1d18e5dd6ae5194d24ed12785212a90b37f5f7f06b8bedd7139"}, - {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:27bba383e8c5231cd559affe169ca0b96ec78d39909ffd817f28b166d7ddd4d8"}, - {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:a888e8bdb45916234b99da2d859566f1e8a1d2275a801bb8e4a9644e3c7e7909"}, - {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6031b25fb1b06327b43d841f33842b383beba399884f8228a6bb3df3088485ff"}, - {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48c2faaa8adfacefcbfdb5f2e2e7bdad081e5ace8d182e5f4ade971f128e6bb3"}, - {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d85164315bd68c0806768dc6bb0429c6f95c354f87485ee3593c4f6b14def2bd"}, - {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6afd80f6c79893cfc0574956f78a0add8c76e3696f2d6a15bca2c66c415cf2d4"}, - {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa242ac1ff583e4ec7771141606aafc92b361cd90a05c30d93e343a0c2d82a89"}, - {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21be4770ff4e08698e1e8e0bce06edb6ea0626e7c8f560bc08222880aca6a6f"}, - {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c45a639e93a0c5d4b788b2613bd637468edd62f8f95ebc6fcc303d58ab3f0a8"}, - {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910e71711d1055b2768181efa0a17537b2622afeb0424116619817007f8a2b10"}, - {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b9bb1f182a97880f6078283b3505a707057c42bf55d8fca604f70dedfdc0772a"}, - {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d54f74f40b1f7aaa595a02ff42ef38ca654b1469bef7d52867da474243cc633"}, - {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:8d2e182c9ee01135e11e9676e9a62dfad791a7a467738f06726872374a83db49"}, - {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:636a15acc588f70fda1661234761f9ed9ad79ebed3f2125d44be0862708b666e"}, - {file = "rpds_py-0.18.1.tar.gz", hash = "sha256:dc48b479d540770c811fbd1eb9ba2bb66951863e448efec2e2c102625328e92f"}, + {file = "rpds_py-0.20.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2"}, + {file = "rpds_py-0.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140"}, + {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f"}, + {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce"}, + {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94"}, + {file = "rpds_py-0.20.0-cp310-none-win32.whl", hash = "sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee"}, + {file = "rpds_py-0.20.0-cp310-none-win_amd64.whl", hash = "sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399"}, + {file = "rpds_py-0.20.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489"}, + {file = "rpds_py-0.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3"}, + {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272"}, + {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad"}, + {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58"}, + {file = "rpds_py-0.20.0-cp311-none-win32.whl", hash = "sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0"}, + {file = "rpds_py-0.20.0-cp311-none-win_amd64.whl", hash = "sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c"}, + {file = "rpds_py-0.20.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6"}, + {file = "rpds_py-0.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef"}, + {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821"}, + {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940"}, + {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174"}, + {file = "rpds_py-0.20.0-cp312-none-win32.whl", hash = "sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139"}, + {file = "rpds_py-0.20.0-cp312-none-win_amd64.whl", hash = "sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585"}, + {file = "rpds_py-0.20.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29"}, + {file = "rpds_py-0.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f"}, + {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c"}, + {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2"}, + {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57"}, + {file = "rpds_py-0.20.0-cp313-none-win32.whl", hash = "sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a"}, + {file = "rpds_py-0.20.0-cp313-none-win_amd64.whl", hash = "sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2"}, + {file = "rpds_py-0.20.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24"}, + {file = "rpds_py-0.20.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8"}, + {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e"}, + {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253"}, + {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a"}, + {file = "rpds_py-0.20.0-cp38-none-win32.whl", hash = "sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5"}, + {file = "rpds_py-0.20.0-cp38-none-win_amd64.whl", hash = "sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232"}, + {file = "rpds_py-0.20.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22"}, + {file = "rpds_py-0.20.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580"}, + {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b"}, + {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420"}, + {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b"}, + {file = "rpds_py-0.20.0-cp39-none-win32.whl", hash = "sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7"}, + {file = "rpds_py-0.20.0-cp39-none-win_amd64.whl", hash = "sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8"}, + {file = "rpds_py-0.20.0.tar.gz", hash = "sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121"}, ] [[package]] name = "s3fs" -version = "2023.12.2" +version = "2024.9.0" description = "Convenient Filesystem interface over S3" optional = false -python-versions = ">= 3.8" +python-versions = ">=3.8" files = [ - {file = "s3fs-2023.12.2-py3-none-any.whl", hash = "sha256:0d5a99039665f30b2dbee5495de3b299a022d51b3195a9440f5df47c2621b777"}, - {file = "s3fs-2023.12.2.tar.gz", hash = "sha256:b5ec07062481bbb45cb061b31984c7188d106e292c27033039e024e4ba5740dc"}, + {file = "s3fs-2024.9.0-py3-none-any.whl", hash = "sha256:3a7dc7acae4358af8e8dfb693e82a8477f9f2c847de5d44cf65fee75752eaca3"}, + {file = "s3fs-2024.9.0.tar.gz", hash = "sha256:6493705abb50374d6b7994f9616d27adbdd8a219c8635100bdc286382efd91f5"}, ] [package.dependencies] aiobotocore = ">=2.5.4,<3.0.0" aiohttp = "<4.0.0a0 || >4.0.0a0,<4.0.0a1 || >4.0.0a1" -fsspec = "2023.12.2" +fsspec = "==2024.9.0.*" [package.extras] awscli = ["aiobotocore[awscli] (>=2.5.4,<3.0.0)"] @@ -3800,13 +3952,13 @@ boto3 = ["aiobotocore[boto3] (>=2.5.4,<3.0.0)"] [[package]] name = "s3transfer" -version = "0.10.1" +version = "0.10.2" description = "An Amazon S3 Transfer Manager" optional = false -python-versions = ">= 3.8" +python-versions = ">=3.8" files = [ - {file = "s3transfer-0.10.1-py3-none-any.whl", hash = "sha256:ceb252b11bcf87080fb7850a224fb6e05c8a776bab8f2b64b7f25b969464839d"}, - {file = "s3transfer-0.10.1.tar.gz", hash = "sha256:5683916b4c724f799e600f41dd9e10a9ff19871bf87623cc8f491cb4f5fa0a19"}, + {file = "s3transfer-0.10.2-py3-none-any.whl", hash = "sha256:eca1c20de70a39daee580aef4986996620f365c4e0fda6a86100231d62f1bf69"}, + {file = "s3transfer-0.10.2.tar.gz", hash = "sha256:0711534e9356d3cc692fdde846b4a1e4b0cb6519971860796e6bc4c7aea00ef6"}, ] [package.dependencies] @@ -3817,67 +3969,73 @@ crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] [[package]] name = "setuptools" -version = "70.0.0" +version = "74.1.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, - {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, + {file = "setuptools-74.1.2-py3-none-any.whl", hash = "sha256:5f4c08aa4d3ebcb57a50c33b1b07e94315d7fc7230f7115e47fc99776c8ce308"}, + {file = "setuptools-74.1.2.tar.gz", hash = "sha256:95b40ed940a1c67eb70fc099094bd6e99c6ee7c23aa2306f4d2697ba7916f9c6"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] +core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.text (>=3.7)", "more-itertools (>=8.8)", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] [[package]] name = "shapely" -version = "2.0.4" +version = "2.0.6" description = "Manipulation and analysis of geometric objects" optional = false python-versions = ">=3.7" files = [ - {file = "shapely-2.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:011b77153906030b795791f2fdfa2d68f1a8d7e40bce78b029782ade3afe4f2f"}, - {file = "shapely-2.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9831816a5d34d5170aa9ed32a64982c3d6f4332e7ecfe62dc97767e163cb0b17"}, - {file = "shapely-2.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5c4849916f71dc44e19ed370421518c0d86cf73b26e8656192fcfcda08218fbd"}, - {file = "shapely-2.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:841f93a0e31e4c64d62ea570d81c35de0f6cea224568b2430d832967536308e6"}, - {file = "shapely-2.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b4431f522b277c79c34b65da128029a9955e4481462cbf7ebec23aab61fc58"}, - {file = "shapely-2.0.4-cp310-cp310-win32.whl", hash = "sha256:92a41d936f7d6743f343be265ace93b7c57f5b231e21b9605716f5a47c2879e7"}, - {file = "shapely-2.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:30982f79f21bb0ff7d7d4a4e531e3fcaa39b778584c2ce81a147f95be1cd58c9"}, - {file = "shapely-2.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:de0205cb21ad5ddaef607cda9a3191eadd1e7a62a756ea3a356369675230ac35"}, - {file = "shapely-2.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7d56ce3e2a6a556b59a288771cf9d091470116867e578bebced8bfc4147fbfd7"}, - {file = "shapely-2.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:58b0ecc505bbe49a99551eea3f2e8a9b3b24b3edd2a4de1ac0dc17bc75c9ec07"}, - {file = "shapely-2.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:790a168a808bd00ee42786b8ba883307c0e3684ebb292e0e20009588c426da47"}, - {file = "shapely-2.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4310b5494271e18580d61022c0857eb85d30510d88606fa3b8314790df7f367d"}, - {file = "shapely-2.0.4-cp311-cp311-win32.whl", hash = "sha256:63f3a80daf4f867bd80f5c97fbe03314348ac1b3b70fb1c0ad255a69e3749879"}, - {file = "shapely-2.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:c52ed79f683f721b69a10fb9e3d940a468203f5054927215586c5d49a072de8d"}, - {file = "shapely-2.0.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:5bbd974193e2cc274312da16b189b38f5f128410f3377721cadb76b1e8ca5328"}, - {file = "shapely-2.0.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:41388321a73ba1a84edd90d86ecc8bfed55e6a1e51882eafb019f45895ec0f65"}, - {file = "shapely-2.0.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0776c92d584f72f1e584d2e43cfc5542c2f3dd19d53f70df0900fda643f4bae6"}, - {file = "shapely-2.0.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c75c98380b1ede1cae9a252c6dc247e6279403fae38c77060a5e6186c95073ac"}, - {file = "shapely-2.0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3e700abf4a37b7b8b90532fa6ed5c38a9bfc777098bc9fbae5ec8e618ac8f30"}, - {file = "shapely-2.0.4-cp312-cp312-win32.whl", hash = "sha256:4f2ab0faf8188b9f99e6a273b24b97662194160cc8ca17cf9d1fb6f18d7fb93f"}, - {file = "shapely-2.0.4-cp312-cp312-win_amd64.whl", hash = "sha256:03152442d311a5e85ac73b39680dd64a9892fa42bb08fd83b3bab4fe6999bfa0"}, - {file = "shapely-2.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:994c244e004bc3cfbea96257b883c90a86e8cbd76e069718eb4c6b222a56f78b"}, - {file = "shapely-2.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05ffd6491e9e8958b742b0e2e7c346635033d0a5f1a0ea083547fcc854e5d5cf"}, - {file = "shapely-2.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbdc1140a7d08faa748256438291394967aa54b40009f54e8d9825e75ef6113"}, - {file = "shapely-2.0.4-cp37-cp37m-win32.whl", hash = "sha256:5af4cd0d8cf2912bd95f33586600cac9c4b7c5053a036422b97cfe4728d2eb53"}, - {file = "shapely-2.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:464157509ce4efa5ff285c646a38b49f8c5ef8d4b340f722685b09bb033c5ccf"}, - {file = "shapely-2.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:489c19152ec1f0e5c5e525356bcbf7e532f311bff630c9b6bc2db6f04da6a8b9"}, - {file = "shapely-2.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b79bbd648664aa6f44ef018474ff958b6b296fed5c2d42db60078de3cffbc8aa"}, - {file = "shapely-2.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:674d7baf0015a6037d5758496d550fc1946f34bfc89c1bf247cabdc415d7747e"}, - {file = "shapely-2.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cd4ccecc5ea5abd06deeaab52fcdba372f649728050c6143cc405ee0c166679"}, - {file = "shapely-2.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb5cdcbbe3080181498931b52a91a21a781a35dcb859da741c0345c6402bf00c"}, - {file = "shapely-2.0.4-cp38-cp38-win32.whl", hash = "sha256:55a38dcd1cee2f298d8c2ebc60fc7d39f3b4535684a1e9e2f39a80ae88b0cea7"}, - {file = "shapely-2.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:ec555c9d0db12d7fd777ba3f8b75044c73e576c720a851667432fabb7057da6c"}, - {file = "shapely-2.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3f9103abd1678cb1b5f7e8e1af565a652e036844166c91ec031eeb25c5ca8af0"}, - {file = "shapely-2.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:263bcf0c24d7a57c80991e64ab57cba7a3906e31d2e21b455f493d4aab534aaa"}, - {file = "shapely-2.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ddf4a9bfaac643e62702ed662afc36f6abed2a88a21270e891038f9a19bc08fc"}, - {file = "shapely-2.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:485246fcdb93336105c29a5cfbff8a226949db37b7473c89caa26c9bae52a242"}, - {file = "shapely-2.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8de4578e838a9409b5b134a18ee820730e507b2d21700c14b71a2b0757396acc"}, - {file = "shapely-2.0.4-cp39-cp39-win32.whl", hash = "sha256:9dab4c98acfb5fb85f5a20548b5c0abe9b163ad3525ee28822ffecb5c40e724c"}, - {file = "shapely-2.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:31c19a668b5a1eadab82ff070b5a260478ac6ddad3a5b62295095174a8d26398"}, - {file = "shapely-2.0.4.tar.gz", hash = "sha256:5dc736127fac70009b8d309a0eeb74f3e08979e530cf7017f2f507ef62e6cfb8"}, + {file = "shapely-2.0.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29a34e068da2d321e926b5073539fd2a1d4429a2c656bd63f0bd4c8f5b236d0b"}, + {file = "shapely-2.0.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c84c3f53144febf6af909d6b581bc05e8785d57e27f35ebaa5c1ab9baba13b"}, + {file = "shapely-2.0.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ad2fae12dca8d2b727fa12b007e46fbc522148a584f5d6546c539f3464dccde"}, + {file = "shapely-2.0.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3304883bd82d44be1b27a9d17f1167fda8c7f5a02a897958d86c59ec69b705e"}, + {file = "shapely-2.0.6-cp310-cp310-win32.whl", hash = "sha256:3ec3a0eab496b5e04633a39fa3d5eb5454628228201fb24903d38174ee34565e"}, + {file = "shapely-2.0.6-cp310-cp310-win_amd64.whl", hash = "sha256:28f87cdf5308a514763a5c38de295544cb27429cfa655d50ed8431a4796090c4"}, + {file = "shapely-2.0.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5aeb0f51a9db176da9a30cb2f4329b6fbd1e26d359012bb0ac3d3c7781667a9e"}, + {file = "shapely-2.0.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9a7a78b0d51257a367ee115f4d41ca4d46edbd0dd280f697a8092dd3989867b2"}, + {file = "shapely-2.0.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f32c23d2f43d54029f986479f7c1f6e09c6b3a19353a3833c2ffb226fb63a855"}, + {file = "shapely-2.0.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3dc9fb0eb56498912025f5eb352b5126f04801ed0e8bdbd867d21bdbfd7cbd0"}, + {file = "shapely-2.0.6-cp311-cp311-win32.whl", hash = "sha256:d93b7e0e71c9f095e09454bf18dad5ea716fb6ced5df3cb044564a00723f339d"}, + {file = "shapely-2.0.6-cp311-cp311-win_amd64.whl", hash = "sha256:c02eb6bf4cfb9fe6568502e85bb2647921ee49171bcd2d4116c7b3109724ef9b"}, + {file = "shapely-2.0.6-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cec9193519940e9d1b86a3b4f5af9eb6910197d24af02f247afbfb47bcb3fab0"}, + {file = "shapely-2.0.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83b94a44ab04a90e88be69e7ddcc6f332da7c0a0ebb1156e1c4f568bbec983c3"}, + {file = "shapely-2.0.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:537c4b2716d22c92036d00b34aac9d3775e3691f80c7aa517c2c290351f42cd8"}, + {file = "shapely-2.0.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98fea108334be345c283ce74bf064fa00cfdd718048a8af7343c59eb40f59726"}, + {file = "shapely-2.0.6-cp312-cp312-win32.whl", hash = "sha256:42fd4cd4834747e4990227e4cbafb02242c0cffe9ce7ef9971f53ac52d80d55f"}, + {file = "shapely-2.0.6-cp312-cp312-win_amd64.whl", hash = "sha256:665990c84aece05efb68a21b3523a6b2057e84a1afbef426ad287f0796ef8a48"}, + {file = "shapely-2.0.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:42805ef90783ce689a4dde2b6b2f261e2c52609226a0438d882e3ced40bb3013"}, + {file = "shapely-2.0.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6d2cb146191a47bd0cee8ff5f90b47547b82b6345c0d02dd8b25b88b68af62d7"}, + {file = "shapely-2.0.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3fdef0a1794a8fe70dc1f514440aa34426cc0ae98d9a1027fb299d45741c381"}, + {file = "shapely-2.0.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c665a0301c645615a107ff7f52adafa2153beab51daf34587170d85e8ba6805"}, + {file = "shapely-2.0.6-cp313-cp313-win32.whl", hash = "sha256:0334bd51828f68cd54b87d80b3e7cee93f249d82ae55a0faf3ea21c9be7b323a"}, + {file = "shapely-2.0.6-cp313-cp313-win_amd64.whl", hash = "sha256:d37d070da9e0e0f0a530a621e17c0b8c3c9d04105655132a87cfff8bd77cc4c2"}, + {file = "shapely-2.0.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fa7468e4f5b92049c0f36d63c3e309f85f2775752e076378e36c6387245c5462"}, + {file = "shapely-2.0.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed5867e598a9e8ac3291da6cc9baa62ca25706eea186117034e8ec0ea4355653"}, + {file = "shapely-2.0.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81d9dfe155f371f78c8d895a7b7f323bb241fb148d848a2bf2244f79213123fe"}, + {file = "shapely-2.0.6-cp37-cp37m-win32.whl", hash = "sha256:fbb7bf02a7542dba55129062570211cfb0defa05386409b3e306c39612e7fbcc"}, + {file = "shapely-2.0.6-cp37-cp37m-win_amd64.whl", hash = "sha256:837d395fac58aa01aa544495b97940995211e3e25f9aaf87bc3ba5b3a8cd1ac7"}, + {file = "shapely-2.0.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c6d88ade96bf02f6bfd667ddd3626913098e243e419a0325ebef2bbd481d1eb6"}, + {file = "shapely-2.0.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8b3b818c4407eaa0b4cb376fd2305e20ff6df757bf1356651589eadc14aab41b"}, + {file = "shapely-2.0.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bbc783529a21f2bd50c79cef90761f72d41c45622b3e57acf78d984c50a5d13"}, + {file = "shapely-2.0.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2423f6c0903ebe5df6d32e0066b3d94029aab18425ad4b07bf98c3972a6e25a1"}, + {file = "shapely-2.0.6-cp38-cp38-win32.whl", hash = "sha256:2de00c3bfa80d6750832bde1d9487e302a6dd21d90cb2f210515cefdb616e5f5"}, + {file = "shapely-2.0.6-cp38-cp38-win_amd64.whl", hash = "sha256:3a82d58a1134d5e975f19268710e53bddd9c473743356c90d97ce04b73e101ee"}, + {file = "shapely-2.0.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:392f66f458a0a2c706254f473290418236e52aa4c9b476a072539d63a2460595"}, + {file = "shapely-2.0.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:eba5bae271d523c938274c61658ebc34de6c4b33fdf43ef7e938b5776388c1be"}, + {file = "shapely-2.0.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7060566bc4888b0c8ed14b5d57df8a0ead5c28f9b69fb6bed4476df31c51b0af"}, + {file = "shapely-2.0.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b02154b3e9d076a29a8513dffcb80f047a5ea63c897c0cd3d3679f29363cf7e5"}, + {file = "shapely-2.0.6-cp39-cp39-win32.whl", hash = "sha256:44246d30124a4f1a638a7d5419149959532b99dfa25b54393512e6acc9c211ac"}, + {file = "shapely-2.0.6-cp39-cp39-win_amd64.whl", hash = "sha256:2b542d7f1dbb89192d3512c52b679c822ba916f93479fa5d4fc2fe4fa0b3c9e8"}, + {file = "shapely-2.0.6.tar.gz", hash = "sha256:997f6159b1484059ec239cacaa53467fd8b5564dabe186cd84ac2944663b0bf6"}, ] [package.dependencies] @@ -3911,13 +4069,13 @@ files = [ [[package]] name = "soupsieve" -version = "2.5" +version = "2.6" description = "A modern CSS selector implementation for Beautiful Soup." optional = false python-versions = ">=3.8" files = [ - {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, - {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, + {file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"}, + {file = "soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb"}, ] [[package]] @@ -4134,17 +4292,17 @@ sphinx = ["matplotlib", "myst-nb", "numpy", "sphinx-book-theme", "sphinx-design" [[package]] name = "sphinxcontrib-applehelp" -version = "1.0.8" +version = "2.0.0" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_applehelp-1.0.8-py3-none-any.whl", hash = "sha256:cb61eb0ec1b61f349e5cc36b2028e9e7ca765be05e49641c97241274753067b4"}, - {file = "sphinxcontrib_applehelp-1.0.8.tar.gz", hash = "sha256:c40a4f96f3776c4393d933412053962fac2b84f4c99a7982ba42e09576a70619"}, + {file = "sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5"}, + {file = "sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1"}, ] [package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] standalone = ["Sphinx (>=5)"] test = ["pytest"] @@ -4167,33 +4325,33 @@ Sphinx = ">=2.1" [[package]] name = "sphinxcontrib-devhelp" -version = "1.0.6" +version = "2.0.0" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_devhelp-1.0.6-py3-none-any.whl", hash = "sha256:6485d09629944511c893fa11355bda18b742b83a2b181f9a009f7e500595c90f"}, - {file = "sphinxcontrib_devhelp-1.0.6.tar.gz", hash = "sha256:9893fd3f90506bc4b97bdb977ceb8fbd823989f4316b28c3841ec128544372d3"}, + {file = "sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2"}, + {file = "sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad"}, ] [package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] standalone = ["Sphinx (>=5)"] test = ["pytest"] [[package]] name = "sphinxcontrib-htmlhelp" -version = "2.0.5" +version = "2.1.0" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_htmlhelp-2.0.5-py3-none-any.whl", hash = "sha256:393f04f112b4d2f53d93448d4bce35842f62b307ccdc549ec1585e950bc35e04"}, - {file = "sphinxcontrib_htmlhelp-2.0.5.tar.gz", hash = "sha256:0dc87637d5de53dd5eec3a6a01753b1ccf99494bd756aafecd74b4fa9e729015"}, + {file = "sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8"}, + {file = "sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9"}, ] [package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] standalone = ["Sphinx (>=5)"] test = ["html5lib", "pytest"] @@ -4213,96 +4371,96 @@ test = ["flake8", "mypy", "pytest"] [[package]] name = "sphinxcontrib-qthelp" -version = "1.0.7" +version = "2.0.0" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_qthelp-1.0.7-py3-none-any.whl", hash = "sha256:e2ae3b5c492d58fcbd73281fbd27e34b8393ec34a073c792642cd8e529288182"}, - {file = "sphinxcontrib_qthelp-1.0.7.tar.gz", hash = "sha256:053dedc38823a80a7209a80860b16b722e9e0209e32fea98c90e4e6624588ed6"}, + {file = "sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb"}, + {file = "sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab"}, ] [package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] standalone = ["Sphinx (>=5)"] -test = ["pytest"] +test = ["defusedxml (>=0.7.1)", "pytest"] [[package]] name = "sphinxcontrib-serializinghtml" -version = "1.1.10" +version = "2.0.0" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_serializinghtml-1.1.10-py3-none-any.whl", hash = "sha256:326369b8df80a7d2d8d7f99aa5ac577f51ea51556ed974e7716cfd4fca3f6cb7"}, - {file = "sphinxcontrib_serializinghtml-1.1.10.tar.gz", hash = "sha256:93f3f5dc458b91b192fe10c397e324f262cf163d79f3282c158e8436a2c4511f"}, + {file = "sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331"}, + {file = "sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d"}, ] [package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] standalone = ["Sphinx (>=5)"] test = ["pytest"] [[package]] name = "sqlalchemy" -version = "2.0.30" +version = "2.0.34" description = "Database Abstraction Library" optional = false python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-2.0.30-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3b48154678e76445c7ded1896715ce05319f74b1e73cf82d4f8b59b46e9c0ddc"}, - {file = "SQLAlchemy-2.0.30-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2753743c2afd061bb95a61a51bbb6a1a11ac1c44292fad898f10c9839a7f75b2"}, - {file = "SQLAlchemy-2.0.30-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7bfc726d167f425d4c16269a9a10fe8630ff6d14b683d588044dcef2d0f6be7"}, - {file = "SQLAlchemy-2.0.30-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4f61ada6979223013d9ab83a3ed003ded6959eae37d0d685db2c147e9143797"}, - {file = "SQLAlchemy-2.0.30-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a365eda439b7a00732638f11072907c1bc8e351c7665e7e5da91b169af794af"}, - {file = "SQLAlchemy-2.0.30-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bba002a9447b291548e8d66fd8c96a6a7ed4f2def0bb155f4f0a1309fd2735d5"}, - {file = "SQLAlchemy-2.0.30-cp310-cp310-win32.whl", hash = "sha256:0138c5c16be3600923fa2169532205d18891b28afa817cb49b50e08f62198bb8"}, - {file = "SQLAlchemy-2.0.30-cp310-cp310-win_amd64.whl", hash = "sha256:99650e9f4cf3ad0d409fed3eec4f071fadd032e9a5edc7270cd646a26446feeb"}, - {file = "SQLAlchemy-2.0.30-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:955991a09f0992c68a499791a753523f50f71a6885531568404fa0f231832aa0"}, - {file = "SQLAlchemy-2.0.30-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f69e4c756ee2686767eb80f94c0125c8b0a0b87ede03eacc5c8ae3b54b99dc46"}, - {file = "SQLAlchemy-2.0.30-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69c9db1ce00e59e8dd09d7bae852a9add716efdc070a3e2068377e6ff0d6fdaa"}, - {file = "SQLAlchemy-2.0.30-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1429a4b0f709f19ff3b0cf13675b2b9bfa8a7e79990003207a011c0db880a13"}, - {file = "SQLAlchemy-2.0.30-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:efedba7e13aa9a6c8407c48facfdfa108a5a4128e35f4c68f20c3407e4376aa9"}, - {file = "SQLAlchemy-2.0.30-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:16863e2b132b761891d6c49f0a0f70030e0bcac4fd208117f6b7e053e68668d0"}, - {file = "SQLAlchemy-2.0.30-cp311-cp311-win32.whl", hash = "sha256:2ecabd9ccaa6e914e3dbb2aa46b76dede7eadc8cbf1b8083c94d936bcd5ffb49"}, - {file = "SQLAlchemy-2.0.30-cp311-cp311-win_amd64.whl", hash = "sha256:0b3f4c438e37d22b83e640f825ef0f37b95db9aa2d68203f2c9549375d0b2260"}, - {file = "SQLAlchemy-2.0.30-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5a79d65395ac5e6b0c2890935bad892eabb911c4aa8e8015067ddb37eea3d56c"}, - {file = "SQLAlchemy-2.0.30-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9a5baf9267b752390252889f0c802ea13b52dfee5e369527da229189b8bd592e"}, - {file = "SQLAlchemy-2.0.30-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cb5a646930c5123f8461f6468901573f334c2c63c795b9af350063a736d0134"}, - {file = "SQLAlchemy-2.0.30-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:296230899df0b77dec4eb799bcea6fbe39a43707ce7bb166519c97b583cfcab3"}, - {file = "SQLAlchemy-2.0.30-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c62d401223f468eb4da32627bffc0c78ed516b03bb8a34a58be54d618b74d472"}, - {file = "SQLAlchemy-2.0.30-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3b69e934f0f2b677ec111b4d83f92dc1a3210a779f69bf905273192cf4ed433e"}, - {file = "SQLAlchemy-2.0.30-cp312-cp312-win32.whl", hash = "sha256:77d2edb1f54aff37e3318f611637171e8ec71472f1fdc7348b41dcb226f93d90"}, - {file = "SQLAlchemy-2.0.30-cp312-cp312-win_amd64.whl", hash = "sha256:b6c7ec2b1f4969fc19b65b7059ed00497e25f54069407a8701091beb69e591a5"}, - {file = "SQLAlchemy-2.0.30-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5a8e3b0a7e09e94be7510d1661339d6b52daf202ed2f5b1f9f48ea34ee6f2d57"}, - {file = "SQLAlchemy-2.0.30-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b60203c63e8f984df92035610c5fb76d941254cf5d19751faab7d33b21e5ddc0"}, - {file = "SQLAlchemy-2.0.30-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1dc3eabd8c0232ee8387fbe03e0a62220a6f089e278b1f0aaf5e2d6210741ad"}, - {file = "SQLAlchemy-2.0.30-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:40ad017c672c00b9b663fcfcd5f0864a0a97828e2ee7ab0c140dc84058d194cf"}, - {file = "SQLAlchemy-2.0.30-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e42203d8d20dc704604862977b1470a122e4892791fe3ed165f041e4bf447a1b"}, - {file = "SQLAlchemy-2.0.30-cp37-cp37m-win32.whl", hash = "sha256:2a4f4da89c74435f2bc61878cd08f3646b699e7d2eba97144030d1be44e27584"}, - {file = "SQLAlchemy-2.0.30-cp37-cp37m-win_amd64.whl", hash = "sha256:b6bf767d14b77f6a18b6982cbbf29d71bede087edae495d11ab358280f304d8e"}, - {file = "SQLAlchemy-2.0.30-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bc0c53579650a891f9b83fa3cecd4e00218e071d0ba00c4890f5be0c34887ed3"}, - {file = "SQLAlchemy-2.0.30-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:311710f9a2ee235f1403537b10c7687214bb1f2b9ebb52702c5aa4a77f0b3af7"}, - {file = "SQLAlchemy-2.0.30-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:408f8b0e2c04677e9c93f40eef3ab22f550fecb3011b187f66a096395ff3d9fd"}, - {file = "SQLAlchemy-2.0.30-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37a4b4fb0dd4d2669070fb05b8b8824afd0af57587393015baee1cf9890242d9"}, - {file = "SQLAlchemy-2.0.30-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a943d297126c9230719c27fcbbeab57ecd5d15b0bd6bfd26e91bfcfe64220621"}, - {file = "SQLAlchemy-2.0.30-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0a089e218654e740a41388893e090d2e2c22c29028c9d1353feb38638820bbeb"}, - {file = "SQLAlchemy-2.0.30-cp38-cp38-win32.whl", hash = "sha256:fa561138a64f949f3e889eb9ab8c58e1504ab351d6cf55259dc4c248eaa19da6"}, - {file = "SQLAlchemy-2.0.30-cp38-cp38-win_amd64.whl", hash = "sha256:7d74336c65705b986d12a7e337ba27ab2b9d819993851b140efdf029248e818e"}, - {file = "SQLAlchemy-2.0.30-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ae8c62fe2480dd61c532ccafdbce9b29dacc126fe8be0d9a927ca3e699b9491a"}, - {file = "SQLAlchemy-2.0.30-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2383146973a15435e4717f94c7509982770e3e54974c71f76500a0136f22810b"}, - {file = "SQLAlchemy-2.0.30-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8409de825f2c3b62ab15788635ccaec0c881c3f12a8af2b12ae4910a0a9aeef6"}, - {file = "SQLAlchemy-2.0.30-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0094c5dc698a5f78d3d1539853e8ecec02516b62b8223c970c86d44e7a80f6c7"}, - {file = "SQLAlchemy-2.0.30-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:edc16a50f5e1b7a06a2dcc1f2205b0b961074c123ed17ebda726f376a5ab0953"}, - {file = "SQLAlchemy-2.0.30-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f7703c2010355dd28f53deb644a05fc30f796bd8598b43f0ba678878780b6e4c"}, - {file = "SQLAlchemy-2.0.30-cp39-cp39-win32.whl", hash = "sha256:1f9a727312ff6ad5248a4367358e2cf7e625e98b1028b1d7ab7b806b7d757513"}, - {file = "SQLAlchemy-2.0.30-cp39-cp39-win_amd64.whl", hash = "sha256:a0ef36b28534f2a5771191be6edb44cc2673c7b2edf6deac6562400288664221"}, - {file = "SQLAlchemy-2.0.30-py3-none-any.whl", hash = "sha256:7108d569d3990c71e26a42f60474b4c02c8586c4681af5fd67e51a044fdea86a"}, - {file = "SQLAlchemy-2.0.30.tar.gz", hash = "sha256:2b1708916730f4830bc69d6f49d37f7698b5bd7530aca7f04f785f8849e95255"}, + {file = "SQLAlchemy-2.0.34-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:95d0b2cf8791ab5fb9e3aa3d9a79a0d5d51f55b6357eecf532a120ba3b5524db"}, + {file = "SQLAlchemy-2.0.34-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:243f92596f4fd4c8bd30ab8e8dd5965afe226363d75cab2468f2c707f64cd83b"}, + {file = "SQLAlchemy-2.0.34-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ea54f7300553af0a2a7235e9b85f4204e1fc21848f917a3213b0e0818de9a24"}, + {file = "SQLAlchemy-2.0.34-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:173f5f122d2e1bff8fbd9f7811b7942bead1f5e9f371cdf9e670b327e6703ebd"}, + {file = "SQLAlchemy-2.0.34-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:196958cde924a00488e3e83ff917be3b73cd4ed8352bbc0f2989333176d1c54d"}, + {file = "SQLAlchemy-2.0.34-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bd90c221ed4e60ac9d476db967f436cfcecbd4ef744537c0f2d5291439848768"}, + {file = "SQLAlchemy-2.0.34-cp310-cp310-win32.whl", hash = "sha256:3166dfff2d16fe9be3241ee60ece6fcb01cf8e74dd7c5e0b64f8e19fab44911b"}, + {file = "SQLAlchemy-2.0.34-cp310-cp310-win_amd64.whl", hash = "sha256:6831a78bbd3c40f909b3e5233f87341f12d0b34a58f14115c9e94b4cdaf726d3"}, + {file = "SQLAlchemy-2.0.34-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7db3db284a0edaebe87f8f6642c2b2c27ed85c3e70064b84d1c9e4ec06d5d84"}, + {file = "SQLAlchemy-2.0.34-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:430093fce0efc7941d911d34f75a70084f12f6ca5c15d19595c18753edb7c33b"}, + {file = "SQLAlchemy-2.0.34-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79cb400c360c7c210097b147c16a9e4c14688a6402445ac848f296ade6283bbc"}, + {file = "SQLAlchemy-2.0.34-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb1b30f31a36c7f3fee848391ff77eebdd3af5750bf95fbf9b8b5323edfdb4ec"}, + {file = "SQLAlchemy-2.0.34-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fddde2368e777ea2a4891a3fb4341e910a056be0bb15303bf1b92f073b80c02"}, + {file = "SQLAlchemy-2.0.34-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:80bd73ea335203b125cf1d8e50fef06be709619eb6ab9e7b891ea34b5baa2287"}, + {file = "SQLAlchemy-2.0.34-cp311-cp311-win32.whl", hash = "sha256:6daeb8382d0df526372abd9cb795c992e18eed25ef2c43afe518c73f8cccb721"}, + {file = "SQLAlchemy-2.0.34-cp311-cp311-win_amd64.whl", hash = "sha256:5bc08e75ed11693ecb648b7a0a4ed80da6d10845e44be0c98c03f2f880b68ff4"}, + {file = "SQLAlchemy-2.0.34-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:53e68b091492c8ed2bd0141e00ad3089bcc6bf0e6ec4142ad6505b4afe64163e"}, + {file = "SQLAlchemy-2.0.34-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bcd18441a49499bf5528deaa9dee1f5c01ca491fc2791b13604e8f972877f812"}, + {file = "SQLAlchemy-2.0.34-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:165bbe0b376541092bf49542bd9827b048357f4623486096fc9aaa6d4e7c59a2"}, + {file = "SQLAlchemy-2.0.34-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3330415cd387d2b88600e8e26b510d0370db9b7eaf984354a43e19c40df2e2b"}, + {file = "SQLAlchemy-2.0.34-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:97b850f73f8abbffb66ccbab6e55a195a0eb655e5dc74624d15cff4bfb35bd74"}, + {file = "SQLAlchemy-2.0.34-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7cee4c6917857fd6121ed84f56d1dc78eb1d0e87f845ab5a568aba73e78adf83"}, + {file = "SQLAlchemy-2.0.34-cp312-cp312-win32.whl", hash = "sha256:fbb034f565ecbe6c530dff948239377ba859420d146d5f62f0271407ffb8c580"}, + {file = "SQLAlchemy-2.0.34-cp312-cp312-win_amd64.whl", hash = "sha256:707c8f44931a4facd4149b52b75b80544a8d824162602b8cd2fe788207307f9a"}, + {file = "SQLAlchemy-2.0.34-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:24af3dc43568f3780b7e1e57c49b41d98b2d940c1fd2e62d65d3928b6f95f021"}, + {file = "SQLAlchemy-2.0.34-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60ed6ef0a35c6b76b7640fe452d0e47acc832ccbb8475de549a5cc5f90c2c06"}, + {file = "SQLAlchemy-2.0.34-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:413c85cd0177c23e32dee6898c67a5f49296640041d98fddb2c40888fe4daa2e"}, + {file = "SQLAlchemy-2.0.34-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:25691f4adfb9d5e796fd48bf1432272f95f4bbe5f89c475a788f31232ea6afba"}, + {file = "SQLAlchemy-2.0.34-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:526ce723265643dbc4c7efb54f56648cc30e7abe20f387d763364b3ce7506c82"}, + {file = "SQLAlchemy-2.0.34-cp37-cp37m-win32.whl", hash = "sha256:13be2cc683b76977a700948411a94c67ad8faf542fa7da2a4b167f2244781cf3"}, + {file = "SQLAlchemy-2.0.34-cp37-cp37m-win_amd64.whl", hash = "sha256:e54ef33ea80d464c3dcfe881eb00ad5921b60f8115ea1a30d781653edc2fd6a2"}, + {file = "SQLAlchemy-2.0.34-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:43f28005141165edd11fbbf1541c920bd29e167b8bbc1fb410d4fe2269c1667a"}, + {file = "SQLAlchemy-2.0.34-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b68094b165a9e930aedef90725a8fcfafe9ef95370cbb54abc0464062dbf808f"}, + {file = "SQLAlchemy-2.0.34-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a1e03db964e9d32f112bae36f0cc1dcd1988d096cfd75d6a588a3c3def9ab2b"}, + {file = "SQLAlchemy-2.0.34-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:203d46bddeaa7982f9c3cc693e5bc93db476ab5de9d4b4640d5c99ff219bee8c"}, + {file = "SQLAlchemy-2.0.34-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ae92bebca3b1e6bd203494e5ef919a60fb6dfe4d9a47ed2453211d3bd451b9f5"}, + {file = "SQLAlchemy-2.0.34-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:9661268415f450c95f72f0ac1217cc6f10256f860eed85c2ae32e75b60278ad8"}, + {file = "SQLAlchemy-2.0.34-cp38-cp38-win32.whl", hash = "sha256:895184dfef8708e15f7516bd930bda7e50ead069280d2ce09ba11781b630a434"}, + {file = "SQLAlchemy-2.0.34-cp38-cp38-win_amd64.whl", hash = "sha256:6e7cde3a2221aa89247944cafb1b26616380e30c63e37ed19ff0bba5e968688d"}, + {file = "SQLAlchemy-2.0.34-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dbcdf987f3aceef9763b6d7b1fd3e4ee210ddd26cac421d78b3c206d07b2700b"}, + {file = "SQLAlchemy-2.0.34-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ce119fc4ce0d64124d37f66a6f2a584fddc3c5001755f8a49f1ca0a177ef9796"}, + {file = "SQLAlchemy-2.0.34-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a17d8fac6df9835d8e2b4c5523666e7051d0897a93756518a1fe101c7f47f2f0"}, + {file = "SQLAlchemy-2.0.34-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ebc11c54c6ecdd07bb4efbfa1554538982f5432dfb8456958b6d46b9f834bb7"}, + {file = "SQLAlchemy-2.0.34-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2e6965346fc1491a566e019a4a1d3dfc081ce7ac1a736536367ca305da6472a8"}, + {file = "SQLAlchemy-2.0.34-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:220574e78ad986aea8e81ac68821e47ea9202b7e44f251b7ed8c66d9ae3f4278"}, + {file = "SQLAlchemy-2.0.34-cp39-cp39-win32.whl", hash = "sha256:b75b00083e7fe6621ce13cfce9d4469c4774e55e8e9d38c305b37f13cf1e874c"}, + {file = "SQLAlchemy-2.0.34-cp39-cp39-win_amd64.whl", hash = "sha256:c29d03e0adf3cc1a8c3ec62d176824972ae29b67a66cbb18daff3062acc6faa8"}, + {file = "SQLAlchemy-2.0.34-py3-none-any.whl", hash = "sha256:7286c353ee6475613d8beff83167374006c6b3e3f0e6491bfe8ca610eb1dec0f"}, + {file = "sqlalchemy-2.0.34.tar.gz", hash = "sha256:10d8f36990dd929690666679b0f42235c159a7051534adb135728ee52828dd22"}, ] [package.dependencies] -greenlet = {version = "!=0.4.17", markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""} +greenlet = {version = "!=0.4.17", markers = "python_version < \"3.13\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"} typing-extensions = ">=4.6.0" [package.extras] @@ -4392,13 +4550,13 @@ files = [ [[package]] name = "tomlkit" -version = "0.12.5" +version = "0.13.2" description = "Style preserving TOML library" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomlkit-0.12.5-py3-none-any.whl", hash = "sha256:af914f5a9c59ed9d0762c7b64d3b5d5df007448eb9cd2edc8a46b1eafead172f"}, - {file = "tomlkit-0.12.5.tar.gz", hash = "sha256:eef34fba39834d4d6b73c9ba7f3e4d1c417a4e56f89a7e96e090dd0d24b8fb3c"}, + {file = "tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde"}, + {file = "tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79"}, ] [[package]] @@ -4423,13 +4581,13 @@ files = [ [[package]] name = "tqdm" -version = "4.66.4" +version = "4.66.5" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.4-py3-none-any.whl", hash = "sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644"}, - {file = "tqdm-4.66.4.tar.gz", hash = "sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb"}, + {file = "tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd"}, + {file = "tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad"}, ] [package.dependencies] @@ -4458,24 +4616,24 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0, [[package]] name = "types-awscrt" -version = "0.20.12" +version = "0.21.5" description = "Type annotations and code completion for awscrt" optional = false -python-versions = "<4.0,>=3.7" +python-versions = ">=3.8" files = [ - {file = "types_awscrt-0.20.12-py3-none-any.whl", hash = "sha256:521ce54cc4dad9fe6480556bb0f8315a508106938ba1f2a0baccfcea7d4a4dee"}, - {file = "types_awscrt-0.20.12.tar.gz", hash = "sha256:0beabdde0205dc1da679ea464fd3f98b570ef4f0fc825b155a974fb51b21e8d9"}, + {file = "types_awscrt-0.21.5-py3-none-any.whl", hash = "sha256:117ff2b1bb657f09d01b7e0ce3fe3fa6e039be12d30b826896182725c9ce85b1"}, + {file = "types_awscrt-0.21.5.tar.gz", hash = "sha256:9f7f47de68799cb2bcb9e486f48d77b9f58962b92fba43cb8860da70b3c57d1b"}, ] [[package]] name = "types-s3transfer" -version = "0.10.1" +version = "0.10.2" description = "Type annotations and code completion for s3transfer" optional = false -python-versions = "<4.0,>=3.8" +python-versions = ">=3.8" files = [ - {file = "types_s3transfer-0.10.1-py3-none-any.whl", hash = "sha256:49a7c81fa609ac1532f8de3756e64b58afcecad8767933310228002ec7adff74"}, - {file = "types_s3transfer-0.10.1.tar.gz", hash = "sha256:02154cce46528287ad76ad1a0153840e0492239a0887e8833466eccf84b98da0"}, + {file = "types_s3transfer-0.10.2-py3-none-any.whl", hash = "sha256:7a3fec8cd632e2b5efb665a355ef93c2a87fdd5a45b74a949f95a9e628a86356"}, + {file = "types_s3transfer-0.10.2.tar.gz", hash = "sha256:60167a3bfb5c536ec6cdb5818f7f9a28edca9dc3e0b5ff85ae374526fc5e576e"}, ] [[package]] @@ -4516,20 +4674,39 @@ test = ["coverage", "pytest", "pytest-cov"] [[package]] name = "urllib3" -version = "2.2.2" +version = "1.26.20" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "urllib3-1.26.20-py2.py3-none-any.whl", hash = "sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e"}, + {file = "urllib3-1.26.20.tar.gz", hash = "sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32"}, +] + +[package.extras] +brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] +name = "vcrpy" +version = "6.0.1" +description = "Automatically mock your HTTP interactions to simplify and speed up testing" +optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, - {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, + {file = "vcrpy-6.0.1-py2.py3-none-any.whl", hash = "sha256:621c3fb2d6bd8aa9f87532c688e4575bcbbde0c0afeb5ebdb7e14cac409edfdd"}, + {file = "vcrpy-6.0.1.tar.gz", hash = "sha256:9e023fee7f892baa0bbda2f7da7c8ac51165c1c6e38ff8688683a12a4bde9278"}, ] +[package.dependencies] +PyYAML = "*" +urllib3 = {version = "<2", markers = "platform_python_implementation == \"PyPy\""} +wrapt = "*" +yarl = "*" + [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] +tests = ["Werkzeug (==2.0.3)", "aiohttp", "boto3", "httplib2", "httpx", "pytest", "pytest-aiohttp", "pytest-asyncio", "pytest-cov", "pytest-httpbin", "requests (>=2.22.0)", "tornado", "urllib3"] [[package]] name = "wcwidth" @@ -4544,13 +4721,13 @@ files = [ [[package]] name = "werkzeug" -version = "3.0.3" +version = "3.0.4" description = "The comprehensive WSGI web application library." optional = false python-versions = ">=3.8" files = [ - {file = "werkzeug-3.0.3-py3-none-any.whl", hash = "sha256:fc9645dc43e03e4d630d23143a04a7f947a9a3b5727cd535fdfe155a17cc48c8"}, - {file = "werkzeug-3.0.3.tar.gz", hash = "sha256:097e5bfda9f0aba8da6b8545146def481d06aa7d3266e7448e2cccf67dd8bd18"}, + {file = "werkzeug-3.0.4-py3-none-any.whl", hash = "sha256:02c9eb92b7d6c06f31a782811505d2157837cea66aaede3e217c7c27c039476c"}, + {file = "werkzeug-3.0.4.tar.gz", hash = "sha256:34f2371506b250df4d4f84bfe7b0921e4762525762bbd936614909fe25cd7306"}, ] [package.dependencies] @@ -4561,13 +4738,13 @@ watchdog = ["watchdog (>=2.3)"] [[package]] name = "wheel" -version = "0.43.0" +version = "0.44.0" description = "A built-package format for Python" optional = false python-versions = ">=3.8" files = [ - {file = "wheel-0.43.0-py3-none-any.whl", hash = "sha256:55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81"}, - {file = "wheel-0.43.0.tar.gz", hash = "sha256:465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85"}, + {file = "wheel-0.44.0-py3-none-any.whl", hash = "sha256:2376a90c98cc337d18623527a97c31797bd02bad0033d41547043a1cbfbe448f"}, + {file = "wheel-0.44.0.tar.gz", hash = "sha256:a29c3f2817e95ab89aa4660681ad547c0e9547f20e75b0562fe7723c9a2a9d49"}, ] [package.extras] @@ -4665,112 +4842,114 @@ files = [ [[package]] name = "xyzservices" -version = "2024.6.0" +version = "2024.9.0" description = "Source of XYZ tiles providers" optional = false python-versions = ">=3.8" files = [ - {file = "xyzservices-2024.6.0-py3-none-any.whl", hash = "sha256:fecb2508f0f2b71c819aecf5df2c03cef001c56a4b49302e640f3b34710d25e4"}, - {file = "xyzservices-2024.6.0.tar.gz", hash = "sha256:58c1bdab4257d2551b9ef91cd48571f77b7c4d2bc45bf5e3c05ac97b3a4d7282"}, + {file = "xyzservices-2024.9.0-py3-none-any.whl", hash = "sha256:776ae82b78d6e5ca63dd6a94abb054df8130887a4a308473b54a6bd364de8644"}, + {file = "xyzservices-2024.9.0.tar.gz", hash = "sha256:68fb8353c9dbba4f1ff6c0f2e5e4e596bb9e1db7f94f4f7dfbcb26e25aa66fde"}, ] [[package]] name = "yarl" -version = "1.9.4" +version = "1.11.1" description = "Yet another URL library" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e"}, - {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2"}, - {file = "yarl-1.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541"}, - {file = "yarl-1.9.4-cp310-cp310-win32.whl", hash = "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d"}, - {file = "yarl-1.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98"}, - {file = "yarl-1.9.4-cp311-cp311-win32.whl", hash = "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31"}, - {file = "yarl-1.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10"}, - {file = "yarl-1.9.4-cp312-cp312-win32.whl", hash = "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7"}, - {file = "yarl-1.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984"}, - {file = "yarl-1.9.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434"}, - {file = "yarl-1.9.4-cp37-cp37m-win32.whl", hash = "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749"}, - {file = "yarl-1.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3"}, - {file = "yarl-1.9.4-cp38-cp38-win32.whl", hash = "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece"}, - {file = "yarl-1.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0"}, - {file = "yarl-1.9.4-cp39-cp39-win32.whl", hash = "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575"}, - {file = "yarl-1.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15"}, - {file = "yarl-1.9.4-py3-none-any.whl", hash = "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad"}, - {file = "yarl-1.9.4.tar.gz", hash = "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"}, + {file = "yarl-1.11.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:400cd42185f92de559d29eeb529e71d80dfbd2f45c36844914a4a34297ca6f00"}, + {file = "yarl-1.11.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8258c86f47e080a258993eed877d579c71da7bda26af86ce6c2d2d072c11320d"}, + {file = "yarl-1.11.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2164cd9725092761fed26f299e3f276bb4b537ca58e6ff6b252eae9631b5c96e"}, + {file = "yarl-1.11.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08ea567c16f140af8ddc7cb58e27e9138a1386e3e6e53982abaa6f2377b38cc"}, + {file = "yarl-1.11.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:768ecc550096b028754ea28bf90fde071c379c62c43afa574edc6f33ee5daaec"}, + {file = "yarl-1.11.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2909fa3a7d249ef64eeb2faa04b7957e34fefb6ec9966506312349ed8a7e77bf"}, + {file = "yarl-1.11.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01a8697ec24f17c349c4f655763c4db70eebc56a5f82995e5e26e837c6eb0e49"}, + {file = "yarl-1.11.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e286580b6511aac7c3268a78cdb861ec739d3e5a2a53b4809faef6b49778eaff"}, + {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4179522dc0305c3fc9782549175c8e8849252fefeb077c92a73889ccbcd508ad"}, + {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:27fcb271a41b746bd0e2a92182df507e1c204759f460ff784ca614e12dd85145"}, + {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f61db3b7e870914dbd9434b560075e0366771eecbe6d2b5561f5bc7485f39efd"}, + {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:c92261eb2ad367629dc437536463dc934030c9e7caca861cc51990fe6c565f26"}, + {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d95b52fbef190ca87d8c42f49e314eace4fc52070f3dfa5f87a6594b0c1c6e46"}, + {file = "yarl-1.11.1-cp310-cp310-win32.whl", hash = "sha256:489fa8bde4f1244ad6c5f6d11bb33e09cf0d1d0367edb197619c3e3fc06f3d91"}, + {file = "yarl-1.11.1-cp310-cp310-win_amd64.whl", hash = "sha256:476e20c433b356e16e9a141449f25161e6b69984fb4cdbd7cd4bd54c17844998"}, + {file = "yarl-1.11.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:946eedc12895873891aaceb39bceb484b4977f70373e0122da483f6c38faaa68"}, + {file = "yarl-1.11.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:21a7c12321436b066c11ec19c7e3cb9aec18884fe0d5b25d03d756a9e654edfe"}, + {file = "yarl-1.11.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c35f493b867912f6fda721a59cc7c4766d382040bdf1ddaeeaa7fa4d072f4675"}, + {file = "yarl-1.11.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25861303e0be76b60fddc1250ec5986c42f0a5c0c50ff57cc30b1be199c00e63"}, + {file = "yarl-1.11.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4b53f73077e839b3f89c992223f15b1d2ab314bdbdf502afdc7bb18e95eae27"}, + {file = "yarl-1.11.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:327c724b01b8641a1bf1ab3b232fb638706e50f76c0b5bf16051ab65c868fac5"}, + {file = "yarl-1.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4307d9a3417eea87715c9736d050c83e8c1904e9b7aada6ce61b46361b733d92"}, + {file = "yarl-1.11.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48a28bed68ab8fb7e380775f0029a079f08a17799cb3387a65d14ace16c12e2b"}, + {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:067b961853c8e62725ff2893226fef3d0da060656a9827f3f520fb1d19b2b68a"}, + {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8215f6f21394d1f46e222abeb06316e77ef328d628f593502d8fc2a9117bde83"}, + {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:498442e3af2a860a663baa14fbf23fb04b0dd758039c0e7c8f91cb9279799bff"}, + {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:69721b8effdb588cb055cc22f7c5105ca6fdaa5aeb3ea09021d517882c4a904c"}, + {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e969fa4c1e0b1a391f3fcbcb9ec31e84440253325b534519be0d28f4b6b533e"}, + {file = "yarl-1.11.1-cp311-cp311-win32.whl", hash = "sha256:7d51324a04fc4b0e097ff8a153e9276c2593106a811704025bbc1d6916f45ca6"}, + {file = "yarl-1.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:15061ce6584ece023457fb8b7a7a69ec40bf7114d781a8c4f5dcd68e28b5c53b"}, + {file = "yarl-1.11.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a4264515f9117be204935cd230fb2a052dd3792789cc94c101c535d349b3dab0"}, + {file = "yarl-1.11.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f41fa79114a1d2eddb5eea7b912d6160508f57440bd302ce96eaa384914cd265"}, + {file = "yarl-1.11.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:02da8759b47d964f9173c8675710720b468aa1c1693be0c9c64abb9d8d9a4867"}, + {file = "yarl-1.11.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9361628f28f48dcf8b2f528420d4d68102f593f9c2e592bfc842f5fb337e44fd"}, + {file = "yarl-1.11.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b91044952da03b6f95fdba398d7993dd983b64d3c31c358a4c89e3c19b6f7aef"}, + {file = "yarl-1.11.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:74db2ef03b442276d25951749a803ddb6e270d02dda1d1c556f6ae595a0d76a8"}, + {file = "yarl-1.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e975a2211952a8a083d1b9d9ba26472981ae338e720b419eb50535de3c02870"}, + {file = "yarl-1.11.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8aef97ba1dd2138112890ef848e17d8526fe80b21f743b4ee65947ea184f07a2"}, + {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a7915ea49b0c113641dc4d9338efa9bd66b6a9a485ffe75b9907e8573ca94b84"}, + {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:504cf0d4c5e4579a51261d6091267f9fd997ef58558c4ffa7a3e1460bd2336fa"}, + {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3de5292f9f0ee285e6bd168b2a77b2a00d74cbcfa420ed078456d3023d2f6dff"}, + {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a34e1e30f1774fa35d37202bbeae62423e9a79d78d0874e5556a593479fdf239"}, + {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:66b63c504d2ca43bf7221a1f72fbe981ff56ecb39004c70a94485d13e37ebf45"}, + {file = "yarl-1.11.1-cp312-cp312-win32.whl", hash = "sha256:a28b70c9e2213de425d9cba5ab2e7f7a1c8ca23a99c4b5159bf77b9c31251447"}, + {file = "yarl-1.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:17b5a386d0d36fb828e2fb3ef08c8829c1ebf977eef88e5367d1c8c94b454639"}, + {file = "yarl-1.11.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1fa2e7a406fbd45b61b4433e3aa254a2c3e14c4b3186f6e952d08a730807fa0c"}, + {file = "yarl-1.11.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:750f656832d7d3cb0c76be137ee79405cc17e792f31e0a01eee390e383b2936e"}, + {file = "yarl-1.11.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0b8486f322d8f6a38539136a22c55f94d269addb24db5cb6f61adc61eabc9d93"}, + {file = "yarl-1.11.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3fce4da3703ee6048ad4138fe74619c50874afe98b1ad87b2698ef95bf92c96d"}, + {file = "yarl-1.11.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ed653638ef669e0efc6fe2acb792275cb419bf9cb5c5049399f3556995f23c7"}, + {file = "yarl-1.11.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18ac56c9dd70941ecad42b5a906820824ca72ff84ad6fa18db33c2537ae2e089"}, + {file = "yarl-1.11.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:688654f8507464745ab563b041d1fb7dab5d9912ca6b06e61d1c4708366832f5"}, + {file = "yarl-1.11.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4973eac1e2ff63cf187073cd4e1f1148dcd119314ab79b88e1b3fad74a18c9d5"}, + {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:964a428132227edff96d6f3cf261573cb0f1a60c9a764ce28cda9525f18f7786"}, + {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:6d23754b9939cbab02c63434776df1170e43b09c6a517585c7ce2b3d449b7318"}, + {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c2dc4250fe94d8cd864d66018f8344d4af50e3758e9d725e94fecfa27588ff82"}, + {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09696438cb43ea6f9492ef237761b043f9179f455f405279e609f2bc9100212a"}, + {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:999bfee0a5b7385a0af5ffb606393509cfde70ecca4f01c36985be6d33e336da"}, + {file = "yarl-1.11.1-cp313-cp313-win32.whl", hash = "sha256:ce928c9c6409c79e10f39604a7e214b3cb69552952fbda8d836c052832e6a979"}, + {file = "yarl-1.11.1-cp313-cp313-win_amd64.whl", hash = "sha256:501c503eed2bb306638ccb60c174f856cc3246c861829ff40eaa80e2f0330367"}, + {file = "yarl-1.11.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:dae7bd0daeb33aa3e79e72877d3d51052e8b19c9025ecf0374f542ea8ec120e4"}, + {file = "yarl-1.11.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3ff6b1617aa39279fe18a76c8d165469c48b159931d9b48239065767ee455b2b"}, + {file = "yarl-1.11.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3257978c870728a52dcce8c2902bf01f6c53b65094b457bf87b2644ee6238ddc"}, + {file = "yarl-1.11.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f351fa31234699d6084ff98283cb1e852270fe9e250a3b3bf7804eb493bd937"}, + {file = "yarl-1.11.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8aef1b64da41d18026632d99a06b3fefe1d08e85dd81d849fa7c96301ed22f1b"}, + {file = "yarl-1.11.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7175a87ab8f7fbde37160a15e58e138ba3b2b0e05492d7351314a250d61b1591"}, + {file = "yarl-1.11.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba444bdd4caa2a94456ef67a2f383710928820dd0117aae6650a4d17029fa25e"}, + {file = "yarl-1.11.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0ea9682124fc062e3d931c6911934a678cb28453f957ddccf51f568c2f2b5e05"}, + {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8418c053aeb236b20b0ab8fa6bacfc2feaaf7d4683dd96528610989c99723d5f"}, + {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:61a5f2c14d0a1adfdd82258f756b23a550c13ba4c86c84106be4c111a3a4e413"}, + {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f3a6d90cab0bdf07df8f176eae3a07127daafcf7457b997b2bf46776da2c7eb7"}, + {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:077da604852be488c9a05a524068cdae1e972b7dc02438161c32420fb4ec5e14"}, + {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:15439f3c5c72686b6c3ff235279630d08936ace67d0fe5c8d5bbc3ef06f5a420"}, + {file = "yarl-1.11.1-cp38-cp38-win32.whl", hash = "sha256:238a21849dd7554cb4d25a14ffbfa0ef380bb7ba201f45b144a14454a72ffa5a"}, + {file = "yarl-1.11.1-cp38-cp38-win_amd64.whl", hash = "sha256:67459cf8cf31da0e2cbdb4b040507e535d25cfbb1604ca76396a3a66b8ba37a6"}, + {file = "yarl-1.11.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:884eab2ce97cbaf89f264372eae58388862c33c4f551c15680dd80f53c89a269"}, + {file = "yarl-1.11.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a336eaa7ee7e87cdece3cedb395c9657d227bfceb6781295cf56abcd3386a26"}, + {file = "yarl-1.11.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87f020d010ba80a247c4abc335fc13421037800ca20b42af5ae40e5fd75e7909"}, + {file = "yarl-1.11.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:637c7ddb585a62d4469f843dac221f23eec3cbad31693b23abbc2c366ad41ff4"}, + {file = "yarl-1.11.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:48dfd117ab93f0129084577a07287376cc69c08138694396f305636e229caa1a"}, + {file = "yarl-1.11.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75e0ae31fb5ccab6eda09ba1494e87eb226dcbd2372dae96b87800e1dcc98804"}, + {file = "yarl-1.11.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f46f81501160c28d0c0b7333b4f7be8983dbbc161983b6fb814024d1b4952f79"}, + {file = "yarl-1.11.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:04293941646647b3bfb1719d1d11ff1028e9c30199509a844da3c0f5919dc520"}, + {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:250e888fa62d73e721f3041e3a9abf427788a1934b426b45e1b92f62c1f68366"}, + {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e8f63904df26d1a66aabc141bfd258bf738b9bc7bc6bdef22713b4f5ef789a4c"}, + {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:aac44097d838dda26526cffb63bdd8737a2dbdf5f2c68efb72ad83aec6673c7e"}, + {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:267b24f891e74eccbdff42241c5fb4f974de2d6271dcc7d7e0c9ae1079a560d9"}, + {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6907daa4b9d7a688063ed098c472f96e8181733c525e03e866fb5db480a424df"}, + {file = "yarl-1.11.1-cp39-cp39-win32.whl", hash = "sha256:14438dfc5015661f75f85bc5adad0743678eefee266ff0c9a8e32969d5d69f74"}, + {file = "yarl-1.11.1-cp39-cp39-win_amd64.whl", hash = "sha256:94d0caaa912bfcdc702a4204cd5e2bb01eb917fc4f5ea2315aa23962549561b0"}, + {file = "yarl-1.11.1-py3-none-any.whl", hash = "sha256:72bf26f66456baa0584eff63e44545c9f0eaed9b73cb6601b647c91f14c11f38"}, + {file = "yarl-1.11.1.tar.gz", hash = "sha256:1bb2d9e212fb7449b8fb73bc461b51eaa17cc8430b4a87d87be7b25052d92f53"}, ] [package.dependencies] @@ -4779,20 +4958,24 @@ multidict = ">=4.0" [[package]] name = "zipp" -version = "3.19.2" +version = "3.20.1" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"}, - {file = "zipp-3.19.2.tar.gz", hash = "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19"}, + {file = "zipp-3.20.1-py3-none-any.whl", hash = "sha256:9960cd8967c8f85a56f920d5d507274e74f9ff813a0ab8889a5b5be2daf44064"}, + {file = "zipp-3.20.1.tar.gz", hash = "sha256:c22b14cc4763c5a5b04134207736c107db42e9d3ef2d9779d465f5f1bcba572b"}, ] [package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "ef14a80a1386f0b2982a87100090fca2ce31a729c1477cd8902a8f2c0d5ee1fa" +content-hash = "76e48de2424b8193530f6d1e083649a24e43492f550a4a25121921d3a9862fad" diff --git a/pyproject.toml b/pyproject.toml index 619a2426..1699da48 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "hydrocron" -version = "1.3.0" +version = "1.4.0rc5" description = "OpenAPI access to Time Series data for SWOT features" authors = ["PO.DAAC "] license = "Apache-2.0" @@ -19,20 +19,22 @@ python = "^3.10" six = "^1.16.0" boto3 = "^1.28.2" pymysql = "^1.1.1" -geopandas = "^0.13.2" -earthaccess = "^0.5.3" +geopandas = "0.14.4" +earthaccess = "0.10.0" shapely = "^2.0.1" -cryptography = "42.0.8" +cryptography = "43.0.1" python-dotenv = "^1.0.0" geojson = "^3.1.0" accept-types = "^0.4.1" moto = "^5.0.9" +vcrpy = "^6.0.1" +python-cmr = "^0.12.0" [tool.poetry.group.dev.dependencies] pytest = "^7.4.0" pytest-dynamodb = "^2.2.3" -pylint = "^2.15.8" -flake8 = "^6.0.0" +pylint = "^3.2.5" +flake8 = "^7.1.0" pytest-cov = "^4.1.0" @@ -45,6 +47,10 @@ matplotlib = "^3.8.3" [tool.poetry.group.test.dependencies] pytz = "^2024.1" +[tool.coverage.run] +source = ['hydrocron'] +relative_files = true + [tool.poetry.scripts] hydrocron_api = "hydrocron.api.__main__:__main__" hydrocron_load = 'hydrocron.db.load_data:main' diff --git a/terraform/hydrocron-apigw.tf b/terraform/hydrocron-apigw.tf index 4326d5ea..a5826f86 100644 --- a/terraform/hydrocron-apigw.tf +++ b/terraform/hydrocron-apigw.tf @@ -30,7 +30,6 @@ resource "aws_api_gateway_rest_api" "hydrocron-api-gateway" { prevent_destroy = true } minimum_compression_size = 20480 - api_key_source = "AUTHORIZER" } @@ -108,8 +107,8 @@ resource "aws_api_gateway_api_key" "default-user-key" { } -resource "aws_api_gateway_api_key" "trusted-user-key" { - name = "${local.aws_resource_prefix}-api-key-trusted" +resource "aws_api_gateway_api_key" "confluence-user-key" { + name = "${local.aws_resource_prefix}-api-key-confluence" } @@ -125,7 +124,11 @@ resource "aws_ssm_parameter" "trusted-user-parameter" { name = "/service/${var.app_name}/api-key-trusted" description = "Hydrocron trusted user API key" type = "SecureString" - value = aws_api_gateway_api_key.trusted-user-key.value + value = jsonencode( + [ + "${aws_api_gateway_api_key.confluence-user-key.value}" + ] + ) } @@ -147,6 +150,7 @@ resource "aws_api_gateway_usage_plan" "default-user-usage-plan" { } } + resource "aws_api_gateway_usage_plan_key" "default-user-usage-key" { key_id = aws_api_gateway_api_key.default-user-key.id key_type = "API_KEY" @@ -154,7 +158,6 @@ resource "aws_api_gateway_usage_plan_key" "default-user-usage-key" { } - resource "aws_api_gateway_usage_plan" "trusted-user-usage-plan" { name = "${local.aws_resource_prefix}-usage-plan-trusted" description = "Hydrocron trusted user usage plan" @@ -163,17 +166,18 @@ resource "aws_api_gateway_usage_plan" "trusted-user-usage-plan" { stage = aws_api_gateway_stage.hydrocron-api-gateway-stage.stage_name } quota_settings { - limit = 5 + limit = 12107815 period = "MONTH" } throttle_settings { - burst_limit = 1 - rate_limit = 1 + burst_limit = 3000 + rate_limit = 6000 } } -resource "aws_api_gateway_usage_plan_key" "trusted-user-usage-key" { - key_id = aws_api_gateway_api_key.trusted-user-key.id + +resource "aws_api_gateway_usage_plan_key" "confluence-user-usage-key" { + key_id = aws_api_gateway_api_key.confluence-user-key.id key_type = "API_KEY" usage_plan_id = aws_api_gateway_usage_plan.trusted-user-usage-plan.id -} \ No newline at end of file +} diff --git a/terraform/hydrocron-dynamo.tf b/terraform/hydrocron-dynamo.tf index ed268569..409383cb 100644 --- a/terraform/hydrocron-dynamo.tf +++ b/terraform/hydrocron-dynamo.tf @@ -22,6 +22,9 @@ resource "aws_dynamodb_table" "hydrocron-swot-reach-table" { projection_type = "INCLUDE" non_key_attributes = ["reach_id", "collection_shortname", "collection_version", "crid", "cycle_id", "pass_id", "continent_id", "ingest_time"] } + point_in_time_recovery { + enabled = var.stage == "ops" ? true : false + } } resource "aws_dynamodb_table" "hydrocron-swot-node-table" { @@ -49,4 +52,118 @@ resource "aws_dynamodb_table" "hydrocron-swot-node-table" { projection_type = "INCLUDE" non_key_attributes = ["node_id", "collection_shortname", "collection_version", "crid", "cycle_id", "pass_id", "continent_id", "ingest_time"] } + point_in_time_recovery { + enabled = var.stage == "ops" ? true : false + } +} + +resource "aws_dynamodb_table" "hydrocron-swot-prior-lake-table" { + name = "hydrocron-swot-prior-lake-table" + billing_mode = "PAY_PER_REQUEST" + hash_key = "lake_id" + range_key = "range_start_time" + attribute { + name = "lake_id" + type = "S" + } + attribute { + name = "range_start_time" + type = "S" + } + attribute { + name = "granuleUR" + type = "S" + } + + global_secondary_index { + name = "GranuleURIndex" + hash_key = "granuleUR" + range_key = "range_start_time" + projection_type = "INCLUDE" + non_key_attributes = ["lake_id", "collection_shortname", "collection_version", "crid", "cycle_id", "pass_id", "continent_id", "ingest_time"] + } + point_in_time_recovery { + enabled = var.stage == "ops" ? true : false + } +} + +resource "aws_dynamodb_table" "hydrocron-reach-track-ingest-table" { + name = "hydrocron-swot-reach-track-ingest-table" + billing_mode = "PAY_PER_REQUEST" + hash_key = "granuleUR" + range_key = "revision_date" + attribute { + name = "granuleUR" + type = "S" + } + attribute { + name = "revision_date" + type = "S" + } + attribute { + name = "status" + type = "S" + } + global_secondary_index { + name = "statusIndex" + hash_key = "status" + projection_type = "ALL" + } + point_in_time_recovery { + enabled = var.stage == "ops" ? true : false + } +} + +resource "aws_dynamodb_table" "hydrocron-node-track-ingest-table" { + name = "hydrocron-swot-node-track-ingest-table" + billing_mode = "PAY_PER_REQUEST" + hash_key = "granuleUR" + range_key = "revision_date" + attribute { + name = "granuleUR" + type = "S" + } + attribute { + name = "revision_date" + type = "S" + } + attribute { + name = "status" + type = "S" + } + global_secondary_index { + name = "statusIndex" + hash_key = "status" + projection_type = "ALL" + } + point_in_time_recovery { + enabled = var.stage == "ops" ? true : false + } } + +resource "aws_dynamodb_table" "hydrocron-priorlake-track-ingest-table" { + name = "hydrocron-swot-prior-lake-track-ingest-table" + billing_mode = "PAY_PER_REQUEST" + hash_key = "granuleUR" + range_key = "revision_date" + attribute { + name = "granuleUR" + type = "S" + } + attribute { + name = "revision_date" + type = "S" + } + attribute { + name = "status" + type = "S" + } + global_secondary_index { + name = "statusIndex" + hash_key = "status" + projection_type = "ALL" + } + point_in_time_recovery { + enabled = var.stage == "ops" ? true : false + } +} \ No newline at end of file diff --git a/terraform/hydrocron-iam.tf b/terraform/hydrocron-iam.tf index e2cc15be..bbee64e2 100644 --- a/terraform/hydrocron-iam.tf +++ b/terraform/hydrocron-iam.tf @@ -42,7 +42,34 @@ data "aws_iam_policy_document" "dynamo-read-policy" { resources = [ aws_dynamodb_table.hydrocron-swot-node-table.arn, - aws_dynamodb_table.hydrocron-swot-reach-table.arn + "${aws_dynamodb_table.hydrocron-swot-node-table.arn}/index/*", + aws_dynamodb_table.hydrocron-swot-reach-table.arn, + "${aws_dynamodb_table.hydrocron-swot-reach-table.arn}/index/*", + aws_dynamodb_table.hydrocron-swot-prior-lake-table.arn, + "${aws_dynamodb_table.hydrocron-swot-prior-lake-table.arn}/index/*" + ] + } + +} + + +data "aws_iam_policy_document" "dynamo-read-policy-track-ingest" { + + statement { + effect = "Allow" + actions = [ + "dynamodb:GetItem", + "dynamodb:BatchGetItem", + "dynamodb:Scan", + "dynamodb:Query", + "dynamodb:ConditionCheckItem", + "dynamodb:DescribeTable" + ] + + resources = [ + aws_dynamodb_table.hydrocron-reach-track-ingest-table.arn, + aws_dynamodb_table.hydrocron-node-track-ingest-table.arn, + aws_dynamodb_table.hydrocron-priorlake-track-ingest-table.arn, ] } @@ -68,7 +95,35 @@ data "aws_iam_policy_document" "dynamo-write-policy" { resources = [ aws_dynamodb_table.hydrocron-swot-node-table.arn, - aws_dynamodb_table.hydrocron-swot-reach-table.arn + aws_dynamodb_table.hydrocron-swot-reach-table.arn, + aws_dynamodb_table.hydrocron-swot-prior-lake-table.arn + ] + } + +} + + +data "aws_iam_policy_document" "dynamo-write-policy-track-ingest" { + + statement { + effect = "Allow" + actions = [ + "dynamodb:PutItem", + "dynamodb:UpdateItem", + "dynamodb:DeleteItem", + "dynamodb:BatchWriteItem", + "dynamodb:GetItem", + "dynamodb:BatchGetItem", + "dynamodb:Scan", + "dynamodb:Query", + "dynamodb:ConditionCheckItem", + "dynamodb:DescribeTable" + ] + + resources = [ + aws_dynamodb_table.hydrocron-reach-track-ingest-table.arn, + aws_dynamodb_table.hydrocron-node-track-ingest-table.arn, + aws_dynamodb_table.hydrocron-priorlake-track-ingest-table.arn, ] } @@ -318,6 +373,7 @@ resource "aws_iam_role" "hydrocron-lambda-load-data-role" { } } + resource "aws_iam_role" "hydrocron-lambda-load-granule-role" { name = "${local.aws_resource_prefix}-lambda-load-granule-role" @@ -331,6 +387,10 @@ resource "aws_iam_role" "hydrocron-lambda-load-granule-role" { name = "HydrocronDynamoWrite" policy = data.aws_iam_policy_document.dynamo-write-policy.json } + inline_policy { + name = "HydrocronTrackIngestDynamoWrite" + policy = data.aws_iam_policy_document.dynamo-write-policy-track-ingest.json + } inline_policy { name = "HydrocronS3Read" policy = data.aws_iam_policy_document.s3-read-policy.json @@ -348,6 +408,7 @@ resource "aws_iam_role" "hydrocron-lambda-load-granule-role" { } } + resource "aws_iam_role" "hydrocron-lambda-cnm-role" { name = "${local.aws_resource_prefix}-lambda-cnm-role" @@ -374,10 +435,37 @@ resource "aws_iam_role" "hydrocron-lambda-cnm-role" { } } + resource "aws_lambda_permission" "aws_lambda_cnm_responder_sns" { statement_id = "AllowExecutionFromSNS" action = "lambda:InvokeFunction" function_name = aws_lambda_function.hydrocron_lambda_cnm.function_name principal = "sns.amazonaws.com" source_arn = aws_sns_topic.hydrocron_sns_topic_cnm_response.arn +} + + +resource "aws_iam_role" "hydrocron_lambda_track_ingest_role" { + name = "${local.aws_resource_prefix}-lambda-track-ingest-role" + + permissions_boundary = "arn:aws:iam::${local.account_id}:policy/NGAPShRoleBoundary" + assume_role_policy = data.aws_iam_policy_document.assume_role_lambda.json + managed_policy_arns = ["arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"] + + inline_policy { + name = "HydrocronDynamoRead" + policy = data.aws_iam_policy_document.dynamo-read-policy.json + } + inline_policy { + name = "HydrocronDynamoReadIngest" + policy = data.aws_iam_policy_document.dynamo-read-policy-track-ingest.json + } + inline_policy { + name = "HydrocronDynamoWriteIngest" + policy = data.aws_iam_policy_document.dynamo-write-policy-track-ingest.json + } + inline_policy { + name = "HydrocronSSMRead" + policy = data.aws_iam_policy_document.ssm-read-policy.json + } } \ No newline at end of file diff --git a/terraform/hydrocron-lambda.tf b/terraform/hydrocron-lambda.tf index 7b655990..94121013 100644 --- a/terraform/hydrocron-lambda.tf +++ b/terraform/hydrocron-lambda.tf @@ -18,6 +18,10 @@ locals { load_data_function_name = "${local.aws_resource_prefix}-load_data-lambda" load_granule_function_name = "${local.aws_resource_prefix}-load_granule-lambda" cnm_response_function_name = "${local.aws_resource_prefix}-cnm-lambda" + track_ingest_function_name = "${local.aws_resource_prefix}-track-ingest-lambda" + sit_env = "${var.stage == "sit" ? "SIT" : ""}" + uat_env = "${var.stage == "uat" ? "UAT" : ""}" + prod_env = "${var.stage == "ops" ? "PROD" : ""}" } resource "aws_ecr_repository" "lambda-image-repo" { @@ -82,6 +86,15 @@ resource "aws_lambda_permission" "allow_hydrocron-timeseries" { source_arn = "${aws_api_gateway_rest_api.hydrocron-api-gateway.execution_arn}/*" } +resource "null_resource" "api_key_hash" { + /** + This resource is needed because of https://github.com/podaac/hydrocron/issues/205#issuecomment-2250982988 + */ + triggers = { + default_key = aws_ssm_parameter.default-user-parameter.value + trusted_key_list = aws_ssm_parameter.trusted-user-parameter.value + } +} resource "aws_lambda_function" "hydrocron_lambda_authorizer" { package_type = "Image" @@ -97,6 +110,14 @@ resource "aws_lambda_function" "hydrocron_lambda_authorizer" { security_group_ids = data.aws_security_groups.vpc_default_sg.ids } tags = var.default_tags + + /** + This is the preferred solution in lieu of the nonsense below but when using replace_triggered_by, terraform plan fails + to replace the lambda correctly and results in an error "ResourceConflictException: Function already exist" + + lifecycle { replace_triggered_by = [aws_ssm_parameter.default-user-parameter.value, aws_ssm_parameter.trusted-user-parameter.value]} + */ + source_code_hash = null_resource.api_key_hash.id } @@ -120,6 +141,7 @@ resource "aws_lambda_function" "hydrocron_lambda_load_data" { EARTHDATA_USERNAME = data.aws_ssm_parameter.edl_username.value EARTHDATA_PASSWORD = data.aws_ssm_parameter.edl_password.value GRANULE_LAMBDA_FUNCTION_NAME = aws_lambda_function.hydrocron_lambda_load_granule.function_name + CMR_ENV = "${coalesce(local.sit_env, local.uat_env, local.prod_env)}" } } } @@ -181,3 +203,23 @@ resource "aws_lambda_permission" "allow_lambda_from_cnm" { principal = "sns.amazonaws.com" source_arn = aws_lambda_function.hydrocron_lambda_cnm.arn } + + +resource "aws_lambda_function" "hydrocron_lambda_track_ingest" { + package_type = "Image" + image_uri = "${aws_ecr_repository.lambda-image-repo.repository_url}:${data.aws_ecr_image.lambda_image.image_tag}" + image_config { + command = ["hydrocron.db.track_ingest.track_ingest_handler"] + } + function_name = local.track_ingest_function_name + role = aws_iam_role.hydrocron_lambda_track_ingest_role.arn + timeout = 300 + memory_size = 512 + + tags = var.default_tags + environment { + variables = { + GRANULE_LAMBDA_FUNCTION_NAME = aws_lambda_function.hydrocron_lambda_load_granule.function_name + } + } +} diff --git a/terraform/versions.tf b/terraform/versions.tf index 27e05407..f4566fac 100644 --- a/terraform/versions.tf +++ b/terraform/versions.tf @@ -12,5 +12,5 @@ terraform { required_providers { aws = "~> 4.0" } - required_version = ">= 1.7.3" + required_version = ">= 1.9.3" } diff --git a/tests/conftest.py b/tests/conftest.py index 69289603..26073af0 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -8,49 +8,42 @@ from pytest_dynamodb import factories from hydrocron.db import HydrocronTable -from hydrocron.db.io import swot_reach_node_shp +from hydrocron.db.io import swot_shp from hydrocron.utils import constants -from hydrocron.utils.constants import SWOT_REACH_TABLE_NAME DB_TEST_TABLE_NAME = "hydrocron-swot-test-table" -API_TEST_TABLE_NAME = "hydrocron-swot-reach-table" -TEST_SHAPEFILE_PATH = os.path.join( +TEST_SHAPEFILE_PATH_REACH = os.path.join( os.path.dirname(os.path.realpath(__file__)), 'data', 'SWOT_L2_HR_RiverSP_Reach_548_011_NA_20230610T193337_20230610T193344_PIA1_01.zip' # noqa ) +TEST_SHAPEFILE_PATH_LAKE = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + 'data', + 'SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.zip' # noqa +) + dynamo_test_proc = factories.dynamodb_proc( dynamodb_dir=os.path.join(os.path.dirname(os.path.realpath(__file__)), 'dynamodb_local'), port=8000) dynamo_db_resource = factories.dynamodb("dynamo_test_proc") - -@pytest.fixture() -def hydrocron_dynamo_instance(request, dynamo_test_proc): - """ - Set up a connection to a local dynamodb instance and - create a table for testing - """ - dynamo_db = boto3.resource( - "dynamodb", - endpoint_url=f"http://{dynamo_test_proc.host}:{dynamo_test_proc.port}", - aws_access_key_id='fakeMyKeyId', - aws_secret_access_key='fakeSecretAccessKey', - region_name='us-west-2', - ) - +def create_tables(dynamo_db, table_name, feature_id, non_key_atts): + """Create DynamoDB tables for testing.""" + dynamo_db.create_table( - TableName=SWOT_REACH_TABLE_NAME, + TableName=table_name, AttributeDefinitions=[ - {'AttributeName': 'reach_id', 'AttributeType': 'S'}, - {'AttributeName': 'range_start_time', 'AttributeType': 'S'} + {'AttributeName': feature_id, 'AttributeType': 'S'}, + {'AttributeName': 'range_start_time', 'AttributeType': 'S'}, + {'AttributeName': 'granuleUR', 'AttributeType': 'S'} ], KeySchema=[ { - 'AttributeName': 'reach_id', + 'AttributeName': feature_id, 'KeyType': 'HASH' }, { @@ -62,18 +55,78 @@ def hydrocron_dynamo_instance(request, dynamo_test_proc): ProvisionedThroughput={ 'ReadCapacityUnits': 10, 'WriteCapacityUnits': 10 - } + }, + GlobalSecondaryIndexes=[ + { + "IndexName": "GranuleURIndex", + "KeySchema": [ + { + "AttributeName": "granuleUR", + "KeyType": "HASH" + }, + { + "AttributeName": "range_start_time", + "KeyType": "RANGE" + } + ], + "Projection": { + "ProjectionType": "INCLUDE", + "NonKeyAttributes": non_key_atts + }, + "ProvisionedThroughput": { + "ReadCapacityUnits": 5, + "WriteCapacityUnits": 5 + } + } + ] ) - hydro_table = HydrocronTable(dynamo_db, SWOT_REACH_TABLE_NAME) - items = swot_reach_node_shp.read_shapefile( - TEST_SHAPEFILE_PATH, +@pytest.fixture() +def hydrocron_dynamo_instance(request, dynamo_test_proc): + """ + Set up a connection to a local dynamodb instance and + create a table for testing + """ + dynamo_db = boto3.resource( + "dynamodb", + endpoint_url=f"http://{dynamo_test_proc.host}:{dynamo_test_proc.port}", + aws_access_key_id='fakeMyKeyId', + aws_secret_access_key='fakeSecretAccessKey', + region_name='us-west-2', + ) + + create_tables( + dynamo_db, + constants.SWOT_REACH_TABLE_NAME, + 'reach_id', + ['reach_id', 'collection_shortname', 'collection_version', 'crid', 'cycle_id', 'pass_id', 'continent_id', 'ingest_time'] + ) + + create_tables( + dynamo_db, + constants.SWOT_PRIOR_LAKE_TABLE_NAME, + 'lake_id', + ['lake_id', 'collection_shortname', 'collection_version', 'crid', 'cycle_id', 'pass_id', 'continent_id', 'ingest_time'] + ) + + # load reach table + reach_hydro_table = HydrocronTable(dynamo_db, constants.SWOT_REACH_TABLE_NAME) + reach_items = swot_shp.read_shapefile( + TEST_SHAPEFILE_PATH_REACH, obscure_data=False, columns=constants.REACH_DATA_COLUMNS) - - for item_attrs in items: - hydro_table.add_data(**item_attrs) + for item_attrs in reach_items: + reach_hydro_table.add_data(**item_attrs) + + # load lake table + lake_hydro_table = HydrocronTable(dynamo_db, constants.SWOT_PRIOR_LAKE_TABLE_NAME) + lake_items = swot_shp.read_shapefile( + TEST_SHAPEFILE_PATH_LAKE, + obscure_data=False, + columns=constants.PRIOR_LAKE_DATA_COLUMNS) + for item_attrs in lake_items: + lake_hydro_table.add_data(**item_attrs) try: request.cls.dynamo_db = dynamo_db @@ -115,8 +168,8 @@ def hydrocron_dynamo_table(dynamo_db_resource): hydro_table = HydrocronTable(dynamo_db_resource, DB_TEST_TABLE_NAME) - items = swot_reach_node_shp.read_shapefile( - TEST_SHAPEFILE_PATH, + items = swot_shp.read_shapefile( + TEST_SHAPEFILE_PATH_REACH, obscure_data=False, columns=constants.REACH_DATA_COLUMNS) diff --git a/tests/data/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.zip b/tests/data/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.zip new file mode 100644 index 00000000..829b6eaf Binary files /dev/null and b/tests/data/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.zip differ diff --git a/tests/data/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.dbf b/tests/data/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.dbf new file mode 100644 index 00000000..7aae378e Binary files /dev/null and b/tests/data/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.dbf differ diff --git a/tests/data/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.prj b/tests/data/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.prj new file mode 100644 index 00000000..a30c00a5 --- /dev/null +++ b/tests/data/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file diff --git a/tests/data/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.shp b/tests/data/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.shp new file mode 100644 index 00000000..63cad567 Binary files /dev/null and b/tests/data/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.shp differ diff --git a/tests/data/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.shp.xml b/tests/data/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.shp.xml new file mode 100644 index 00000000..7e59fbb3 --- /dev/null +++ b/tests/data/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.shp.xml @@ -0,0 +1,550 @@ + + + + Esri conventions as given in 'ESRI Shapefile Technical Description, an ESRI White Paper, July 1998' http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf + Level 2 KaRIn high rate lake single pass vector product + L2_HR_LakeSP + Prior + CNES + Level 1B KaRIn High Rate Single Look Complex Data Product + 2024-07-16T20:11:54.421533Z: Creation + SWOT + SWOT-DD-CDM-0565-CNES_SAS_Design_L2_HR_LakeSP - Revision A - 20220531 + SWOT-TN-CDM-0673-CNES_Product_Description_L2_HR_LakeSP - Revision A - 20220531 + V5.3.0 + PIC0 + PGE_L2_HR_LakeSP + V4.3.1 + SWOT-contact@cnes.fr + 018 + 100 + GR + 9 + 912;913 + 2024-07-13T11:17:41.958902Z + 2024-07-13T11:20:27.464087Z + 2024-07-13T11:17:44.043000Z + 2024-07-13T11:20:27.246000Z + -55.90210231938187 + -40.51999275214456 + 62.31603908571459 + 71.03226786800441 + -54.52127414431175 + 70.66593380234396 + -40.51999275214456 + 62.98830098656306 + -55.90210231938187 + 70.2817428284233 + -41.738747421819255 + 62.72241166028471 + SWOT_L2_HR_PIXC_018_100_032L_20240713T111834_20240713T111845_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_029R_20240713T111804_20240713T111815_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_027L_20240713T111744_20240713T111755_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_028R_20240713T111754_20240713T111805_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_028L_20240713T111754_20240713T111805_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_031L_20240713T111824_20240713T111835_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_031R_20240713T111824_20240713T111835_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_027R_20240713T111744_20240713T111755_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_042R_20240713T112014_20240713T112025_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_033R_20240713T111844_20240713T111855_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_034L_20240713T111854_20240713T111905_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_033L_20240713T111844_20240713T111855_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_026R_20240713T111741_20240713T111745_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_030R_20240713T111815_20240713T111825_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_032R_20240713T111834_20240713T111845_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_043R_20240713T112024_20240713T112027_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_030L_20240713T111815_20240713T111825_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_034R_20240713T111854_20240713T111905_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_035L_20240713T111904_20240713T111908_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_042L_20240713T112014_20240713T112025_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_026L_20240713T111741_20240713T111745_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_041L_20240713T112009_20240713T112015_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_041R_20240713T112009_20240713T112015_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_035R_20240713T111904_20240713T111908_PIC0_01.nc, SWOT_L2_HR_PIXC_018_100_029L_20240713T111804_20240713T111815_PIC0_01.nc + SWOT_L2_HR_LakeTile_Obs_018_100_030L_20240713T111815_20240713T111825_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_032L_20240713T111834_20240713T111845_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_034R_20240713T111854_20240713T111905_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_041R_20240713T112009_20240713T112015_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_027L_20240713T111744_20240713T111755_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_035L_20240713T111904_20240713T111908_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_027R_20240713T111744_20240713T111755_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_034L_20240713T111854_20240713T111905_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_042R_20240713T112014_20240713T112025_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_031R_20240713T111824_20240713T111835_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_028R_20240713T111754_20240713T111805_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_042L_20240713T112014_20240713T112025_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_029R_20240713T111804_20240713T111815_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_031L_20240713T111824_20240713T111835_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_028L_20240713T111754_20240713T111805_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_033R_20240713T111844_20240713T111855_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_033L_20240713T111844_20240713T111855_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_041L_20240713T112009_20240713T112015_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_030R_20240713T111815_20240713T111825_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_026L_20240713T111741_20240713T111745_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_032R_20240713T111834_20240713T111845_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_026R_20240713T111741_20240713T111745_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_043R_20240713T112024_20240713T112027_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_035R_20240713T111904_20240713T111908_PIC0_01, SWOT_L2_HR_LakeTile_Obs_018_100_029L_20240713T111804_20240713T111815_PIC0_01 + SWOT_LakeDatabase_Nom_100_20000101T000000_20991231T235959_20231017T000000_v105.sqlite + SWOT_Param_L2_HR_LakeTile_20000101T000000_20991231T235959_20230922T160000_v411.cfg + + + + text + lake ID from prior database + Basic + Identifier of prior lake from the prior lake database. The format of the identifier is CBBNNNNNNT, where C=continent code, B=basin code, N=lake counter within the basin, T=type. + + + text + no_data + list of reach ID(s) intersecting this lake + Basic + If this PLD lake is a connected lake, this attribute provides the list of the identifiers of the river reaches (i.e. reach_id attribute in the PRD) of type “Connected lake” (i.e. ending with digit 3) that are related to it. + + + text + no_data + Identifier(s) of the observed lake(s) + Basic + List of identifiers of observed lakes that intersect the prior lake given by lake_id. Unique observation identifier within the product. The format of the identifier is CBBTTTSNNNNNN, where C=continent code, B=basin code, TTT=tile number within the pass, S=swath side, N=lake counter within the tile. The different identifiers are separated by semicolons. + + + text + no_data + fraction of prior lake covered by each observed lake + Basic + List of fractions of prior lake area covered by each observed lake identified in obs_id attribute. The different fractions are separated by semicolons and refer one-to-one to the identifiers listed in the obs_id attribute. + + + text + no_data + number of observed lake(s) intersecting the PLD lake + Basic + Number of observed lake(s) intersecting the PLD lake. This attribute provides the number of elements in obs_id and overlap attributes. + + + + float + -999999999999 + time (TAI) + time + gregorian + seconds since 2000-01-01 00:00:00.000 + Basic + Time of measurement in seconds in the TAI time scale since 1 Jan 2000 00:00:00 TAI. This time scale contains no leap seconds. The difference (in seconds) with time in UTC is given by the attribute [time:tai_utc_difference]. + + + text + no_data + UTC time + time + gregorian + [value of TAI-UTC at time of first record] + YYYY-MM-DD hh:mm:ss + Basic + Time string giving UTC time. The format is YYYY-MM-DDThh:mm:ssZ, where the Z suffix indicates UTC time. + + + float + -999999999999 + lake-averaged water surface elevation with respect to the geoid + m + -1000 + 100000 + Basic + Lake-averaged water surface elevation, relative to the provided model of the geoid (geoid_hght), with corrections for media delays (wet and dry troposphere, and ionosphere), crossover correction, and tidal effects (solid_tide, load_tidef, and pole_tide) applied. + + + float + -999999999999 + total uncertainty in lake water surface elevation + m + 0 + 100 + Basic + Total one-sigma uncertainty (random and systematic) in the lake WSE, including uncertainties of corrections and references. + + + float + -999999999999 + random-only uncertainty in the height water surface elevation + m + 0 + 100 + Expert + Random-only component in the lake water surface elevation, including uncertainties of corrections and references, and variation about the fit. + + + float + -999999999999 + standard deviation of pixels wse + m + -1000 + 100000 + Basic + Standard deviation of the water surface elevation of all the pixels composing the lake. Note that this value is therefore with respect to the provided model of the geoid (geoid_hght attribute) whereas the height of pixels is given with respect to the ellipsoid. + + + float + -999999999999 + total water area with estimate of dark water + km^2 + 0 + 200000 + Basic + Total estimated area, including dark water that was not detected as water in the SWOT observation but identified through the use of a prior water likelihood map. + + + float + -999999999999 + uncertainty in total water area + km^2 + 0 + 200000 + Basic + Total uncertainty (random and systematic) in the total water area. + + + float + -999999999999 + area of detected water pixels + km^2 + 0 + 200000 + Expert + Aggregation of used detected pixels area. + + + float + -999999999999 + uncertainty in area of detected water + km^2 + 0 + 200000 + Expert + Total uncertainty (random and systematic) in the area of detected water pixels. + + + float + -999999999999 + metric of layover effect + TBD + TBD + TBD + Expert + Value indicating an estimate of the height error due to layover. + + + float + -999999999999 + distance of lake polygon centroid to the satellite ground track + m + -75000 + 75000 + Basic + Distance of centroid of polygon delineating lake boundary to the satellite ground track. A negative value indicates the left side of the swath, relative to the spacecraft velocity vector. A positive value indicates the right side of the swath. + + + float + -999999999999 + storage change computed with direct approach and linear model for bathymetry + km^3 + -1000 + 1000 + Basic + "Storage change relative to the first SWOT valid measurement + + + float + -999999999999 + uncertainty in storage change computed with direct approach and linear model for bathymetry + km^3 + -1000 + 1000 + Basic + Uncertainty in storage change computed with the direct approach, and considering a linear model for the lake bathymetry. + + + float + -999999999999 + storage change computed with direct approach and quadratic model for bathymetry + km^3 + -1000 + 1000 + Basic + "Storage change relative to the first SWOT measurement + + + float + -999999999999 + uncertainty in storage change computed with direct approach and quadratic model for bathymetry + km^3 + -1000 + 1000 + Basic + Uncertainty in storage change computed with the direct approach, and considering a quadratic model for the lake bathymetry. + + + float + -999999999999 + storage change computed with incremental approach and linear model for bathymetry + km^3 + -1000 + 1000 + Basic + "Storage change relative to the first SWOT valid measurement + + + float + -999999999999 + uncertainty in storage change computed with incremental approach and linear model for bathymetry + km^3 + -1000 + 1000 + Basic + Uncertainty in storage change computed with the incremental approach, and considering a linear model for the lake bathymetry. + + + float + -999999999999 + storage change computed with incremental approach and quadratic model for bathymetry + km^3 + -1000 + 1000 + Basic + "Storage change relative to the first SWOT measurement + + + float + -999999999999 + uncertainty in storage change computed with incremental approach and quadratic model for bathymetry + km^3 + -1000 + 1000 + Basic + Uncertainty in storage change computed with the incremental approach, and considering a quadratic model for the lake bathymetry. + + + int4 + -999 + summary quality indicator for lake measurement + good bad + 0 1 + 0 + 1 + Basic + Summary quality flag for the lake measurement. Values of 0 and 1 indicate nominal and off-nominal measurements. + + + float + -999999999999 + fractional area of dark water + 1 + 0 + 1 + Expert + Fraction of lake area_total covered by dark water. The value is between 0 and 1. + + + int4 + -999 + climatological ice cover flag + status_flag + Yang et al. (2020) + no_ice_cover uncertain_ice_cover full_ice_cover + 0 1 2 + 0 + 2 + Basic + Climatological ice cover flag indicating whether the lake is ice-covered on the day of the observation based on external climatological information (not the SWOT measurement). Values of 0, 1, and 2 indicate that the lake is likely not ice covered, may or may not be partially or fully ice covered, and likely fully ice covered, respectively. + + + int4 + -999 + dynamical ice cover flag + status_flag + Yang et al. (2020) + no_ice_cover partial_ice_cover full_ice_cover + 0 1 2 + 0 + 2 + Basic + Dynamic ice cover flag indicating whether the lake is ice-covered on the day of the observation based on analysis of external optical satellite data. Values of 0, 1, and 2 indicate that the lake is not ice covered, partially ice covered, and fully ice covered, respectively. + + + int4 + -999 + partially covered lake flag + covered partially_covered + 0 1 + 0 + 1 + Basic + Flag that indicates only partial lake coverage. 0= Indicates that the observed lake is entirely covered by the swath. 1= Indicates that the observed lake is partially covered by the swath. + + + int4 + -999 + quality of the cross-over calibrations + TBD + TBD + TBD + 0 + TBD + Basic + Quality of the cross-over calibration. + + + float + -999999999999 + geoid height + geoid_height_above_reference_ellipsoid + EGM2008 + GSFC + m + -150 + 150 + Basic + Lake-averaged geoid model height above the reference ellipsoid. The value is computed from the EGM2008 geoid model with a correction to refer the value to the mean tide system (i.e., includes the zero-frequency permanent tide). + + + float + -999999999999 + solid Earth tide height + Cartwright and Taylor (1971) and Cartwright and Edden (1973) + m + -1 + 1 + Expert + Solid-Earth (Body) tide height, averaged over the lake. The zero-frequency permanent tide component is not included. + + + float + -999999999999 + geocentric load tide height (FES) + FES2014b (Carrere et al., 2016) + LEGOS/CNES + m + -0.2 + 0.2 + Expert + Geocentric load tide height. The effect of the ocean tide loading of the Earth’s crust. This value is used to compute wse. + + + float + -999999999999 + geocentric load tide height (GOT) + GOT4.10c (Ray, 2013) + GSFC + m + -0.2 + 0.2 + Expert + Geocentric load tide height. The effect of the ocean tide loading of the Earth’s crust. + + + float + -999999999999 + height of pole tide + m + Wahr (1985) and Desai et al. (2015) + -0.2 + 0.2 + Expert + Geocentric pole tide height. The sum total of the contribution from the solid-Earth (body) pole tide height and the load pole tide height (i.e., the effect of the ocean pole tide loading of the Earth’s crust). + + + float + -999999999999 + dry tropospheric vertical correction to WSE + European Centre for Medium-Range Weather Forecasting + ECMWF + m + -3 + -1.5 + Expert + Equivalent vertical correction due to dry troposphere delay. Adding the reported correction to the reported lake WSE results in the uncorrected lake WSE. + + + float + -999999999999 + wet tropospheric vertical correction to WSE + European Centre for Medium-Range Weather Forecasting + ECMWF + m + -1 + 0 + Expert + Equivalent vertical correction due to wet troposphere delay. Adding the reported correction to the reported lake WSE results in the uncorrected lake WSE. + + + float + -999999999999 + ionospheric vertical correction to WSE + Global Ionosphere Maps + JPL + m + -0.5 + 0 + Expert + Equivalent vertical correction due to ionosphere delay. Adding the reported correction to the reported lake WSE results in the uncorrected lake WSE. + + + float + -999999999999 + crossover calibration height correction + m + -10 + 10 + Expert + Equivalent height correction estimated from KaRIn crossover calibration. The correction is applied during processing before geolocation in terms of roll, baseline dilation, etc., but reported as an equivalent height correction. The correction term should be subtracted from the reported WSE to obtain the uncorrected WSE. + + + text + no_data + name(s) of the lake + Name(s) of the lake, retrieved from Open Street Map, IGN Carthage, GLWD and vMap0 databases. The different names are separated by semicolons. + + + int9 + -99999999 + reservoir Id from GRanD database + https://doi.org/10.1890/100125 + 0 + 10000 + Expert + Reservoir ID from the Global Reservoir and Dam (GRanD) database. 0=The lake is not a registered reservoir. + + + float + longitude of the deepest point of the prior lake + degrees_east + -180 + 180 + Basic + Longitude of the deepest point of the prior lake. + + + float + latgitude of the deepest point of the prior lake + degrees_north + -90 + 90 + Basic + Latitude of the deepest point of the prior lake. + + + float + -999999999999 + reference water surface elevation + m + -1000 + 100000 + Basic + Reference water surface elevation from the prior lake database, used to compute storage change. + + + float + -999999999999 + reference water surface area + km^2 + 0 + 500000 + Basic + Reference water surface area from the prior lake database, used to compute storage change. + + + text + no_data + reference date for the storage change attributes + Basic + Reference date from the prior lake database for the storage change attributes, corresponding to the date of the first valid measurement. The format is YYYY-MM-DD. + + + float + -999999999999 + reference storage change + km^3 + -1000 + 1000 + Basic + Reference storage change from the prior lake database used to translate the storage change values initially computed with respect to the p_ref_wse and p_ref_area of the PLD lake, to the storage change relative to p_date_t0. + + + float + -999999999999 + maximum water storage + km^3 + 0 + 30000 + Basic + Maximum water storage value from the prior lake database, computed between the minimum (or ground when a bathymetry is available) and maximum observed levels of the lake. + + + diff --git a/tests/data/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.shx b/tests/data/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.shx new file mode 100644 index 00000000..293862f9 Binary files /dev/null and b/tests/data/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01/SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.shx differ diff --git a/tests/dynamodb_local/shared-local-instance.db b/tests/dynamodb_local/shared-local-instance.db new file mode 100644 index 00000000..b399a3e9 Binary files /dev/null and b/tests/dynamodb_local/shared-local-instance.db differ diff --git a/tests/test_api.py b/tests/test_api.py index a748bc82..d7138c6d 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -13,7 +13,7 @@ from numpy.testing import assert_almost_equal -def test_timeseries_lambda_handler_json(hydrocron_api): +def test_timeseries_lambda_handler_json_reach(hydrocron_api): """ Test the lambda handler for the timeseries endpoint Parameters @@ -45,6 +45,40 @@ def test_timeseries_lambda_handler_json(hydrocron_api): expected = json.load(jf) assert result['status'] == '200 OK' and \ result['results']['geojson'] == expected + + +def test_timeseries_lambda_handler_json_lake(hydrocron_api): + """ + Test the lambda handler for the timeseries endpoint for lake data + Parameters + ---------- + hydrocron_api: Fixture ensuring the database is configured for the api + """ + import hydrocron.api.controllers.timeseries + + event = { + "body": { + "feature": "PriorLake", + "feature_id": "9120274662", + "start_time": "2024-06-22T00:00:00-00:00", + "end_time": "2024-07-13T23:59:59-00:00", + "output": "geojson", + "fields": "lake_id,time_str,wse,area_total,quality_f,collection_shortname,crid,PLD_version,range_start_time" + }, + "headers": { + "User-Agent": "curl/8.4.0", + "X-Forwarded-For": "123.456.789.000" + } + } + + context = "_" + result = hydrocron.api.controllers.timeseries.lambda_handler(event, context) + test_data = (pathlib.Path(os.path.dirname(os.path.realpath(__file__))) + .joinpath('test_data').joinpath('api_query_results_geojson_lakes.json')) + with open(test_data) as jf: + expected = json.load(jf) + assert result['status'] == '200 OK' and \ + result['results']['geojson'] == expected def test_timeseries_lambda_handler_validate_geojson_reach(hydrocron_api): @@ -114,7 +148,30 @@ def test_timeseries_lambda_handler_csv(hydrocron_api): assert result['results']['csv'] == row_str -def test_timeseries_convert_to_df_node(hydrocron_api): +def test_timeseries_convert_to_df_lake(hydrocron_api): + """ + Test conver_to_df function to make sure it creates a correctly formatted + GeoDataFrame. + """ + import hydrocron.api.controllers.timeseries + + test_data = (pathlib.Path(os.path.dirname(os.path.realpath(__file__))) + .joinpath('test_data').joinpath('api_query_results_items_lake.json')) + with open(test_data) as jf: + items = json.load(jf) + gdf = hydrocron.api.controllers.timeseries.convert_to_df(items) + assert_almost_equal(np.array([-999999999999.0, -999999999999.0], dtype=np.float64), + gdf['wse'].to_numpy().astype(np.float64)) + assert_almost_equal(np.array([68.693765, 68.693765], dtype=np.float64), + gdf['p_lat'].to_numpy().astype(np.float64)) + assert_almost_equal(np.array([-999999999999.0, -999999999999.0], dtype=np.float64), + gdf['time'].to_numpy().astype(np.float64)) + geo_array = gpd.points_from_xy(x=[-20.455824376849105, -20.455824376849105], + y=[-25.566241858842833, -25.566241858842833]).to_numpy() + assert str(geo_array) == str(gdf['geometry'].to_numpy()) + + +def test_timeseries_convert_to_df_node(): """ Test conver_to_df function to make sure it creates a correctly formatted GeoDataFrame. @@ -137,7 +194,7 @@ def test_timeseries_convert_to_df_node(hydrocron_api): assert str(geo_array) == str(gdf['geometry'].to_numpy()) -def test_timeseries_convert_to_df_reach(hydrocron_api): +def test_timeseries_convert_to_df_reach(): """ Test conver_to_df function to make sure it creates a correctly formatted GeoDataFrame. @@ -157,7 +214,7 @@ def test_timeseries_convert_to_df_reach(hydrocron_api): gdf['slope'].to_numpy().astype(np.float64)) -def test_add_units(hydrocron_api): +def test_add_units(): """ Test add_units function. """ @@ -178,12 +235,9 @@ def test_add_units(hydrocron_api): assert expected_columns == columns -def test_timeseries_lambda_handler_missing(hydrocron_api): +def test_timeseries_lambda_handler_missing(): """ Test the lambda handler for the timeseries endpoint for missing parameters - Parameters - ---------- - hydrocron_api: Fixture ensuring the database is configured for the api """ import hydrocron.api.controllers.timeseries @@ -218,12 +272,9 @@ def test_timeseries_lambda_handler_missing(hydrocron_api): assert "400: This required parameter is missing: 'feature_id'" in str(e.value) -def test_timeseries_lambda_handler_feature(hydrocron_api): +def test_timeseries_lambda_handler_feature(): """ Test the lambda handler for the timeseries endpoint for feature parameter - Parameters - ---------- - hydrocron_api: Fixture ensuring the database is configured for the api """ import hydrocron.api.controllers.timeseries @@ -245,15 +296,12 @@ def test_timeseries_lambda_handler_feature(hydrocron_api): context = "_" with pytest.raises(hydrocron.api.controllers.timeseries.RequestError) as e: hydrocron.api.controllers.timeseries.lambda_handler(event, context) - assert "400: feature parameter should be Reach or Node, not: River" in str(e.value) + assert "400: feature parameter should be Reach, Node, or PriorLake, not: River" in str(e.value) -def test_timeseries_lambda_handler_feature_id(hydrocron_api): +def test_timeseries_lambda_handler_feature_id(): """ Test the lambda handler for the timeseries endpoint for feature_id parameter - Parameters - ---------- - hydrocron_api: Fixture ensuring the database is configured for the api """ import hydrocron.api.controllers.timeseries @@ -278,13 +326,10 @@ def test_timeseries_lambda_handler_feature_id(hydrocron_api): assert "400: feature_id cannot contain letters: 7122ff4100223" in str(e.value) -def test_timeseries_lambda_handler_dates(hydrocron_api): +def test_timeseries_lambda_handler_dates(): """ Test the lambda handler for the timeseries endpoint for start_time and end_time parameters - Parameters - ---------- - hydrocron_api: Fixture ensuring the database is configured for the api """ import hydrocron.api.controllers.timeseries @@ -310,12 +355,9 @@ def test_timeseries_lambda_handler_dates(hydrocron_api): e.value) -def test_timeseries_lambda_handler_output(hydrocron_api): +def test_timeseries_lambda_handler_output(): """ Test the lambda handler for the timeseries output parameters - Parameters - ---------- - hydrocron_api: Fixture ensuring the database is configured for the api """ import hydrocron.api.controllers.timeseries @@ -340,12 +382,9 @@ def test_timeseries_lambda_handler_output(hydrocron_api): assert "400: output parameter should be csv or geojson, not: txt" in str(e.value) -def test_timeseries_lambda_handler_fields(hydrocron_api): +def test_timeseries_lambda_handler_fields(): """ Test the lambda handler for the timeseries output parameters - Parameters - ---------- - hydrocron_api: Fixture ensuring the database is configured for the api """ import hydrocron.api.controllers.timeseries @@ -370,14 +409,10 @@ def test_timeseries_lambda_handler_fields(hydrocron_api): assert "400: fields parameter should contain valid SWOT fields" in str(e.value) -def test_timeseries_lambda_handler_not_found(hydrocron_api): +def test_timeseries_lambda_handler_not_found(): """ Test the lambda handler for cases where the identifier is not found in the database. - - Parameters - ---------- - hydrocron_api: Fixture ensuring the database is configured for the api """ import hydrocron.api.controllers.timeseries @@ -402,12 +437,9 @@ def test_timeseries_lambda_handler_not_found(hydrocron_api): assert "400: Results with the specified Feature ID 71224100227 were not found" in str(e.value) -def test_timeseries_lambda_handler_elastic_agent(hydrocron_api): +def test_timeseries_lambda_handler_elastic_agent(): """ Test the lambda handler for cases where invoked by Elastic Agent. - Parameters - ---------- - hydrocron_api: Fixture ensuring the database is configured for the api """ import hydrocron.api.controllers.timeseries @@ -424,12 +456,9 @@ def test_timeseries_lambda_handler_elastic_agent(hydrocron_api): assert result == {} -def test_timeseries_lambda_handler_missing_header(hydrocron_api): +def test_timeseries_lambda_handler_missing_header(): """ Test the lambda handler for cases where invoked by Elastic Agent. - Parameters - ---------- - hydrocron_api: Fixture ensuring the database is configured for the api """ import hydrocron.api.controllers.timeseries @@ -516,12 +545,9 @@ def test_timeseries_lambda_handler_csv_accept(hydrocron_api): assert result == row_str -def test_timeseries_lambda_handler_geojson_accept_output(hydrocron_api): +def test_timeseries_lambda_handler_geojson_accept_output(): """ Test the lambda handler for the timeseries endpoint - Parameters - ---------- - hydrocron_api: Fixture ensuring the database is configured for the api """ import hydrocron.api.controllers.timeseries @@ -578,7 +604,8 @@ def test_timeseries_lambda_handler_json_no_output(hydrocron_api): expected = json.load(jf) assert result['status'] == '200 OK' and \ result['results']['geojson'] == expected - + + def test_timeseries_lambda_handler_json_multi_accept(hydrocron_api): """ Test the lambda handler for the timeseries endpoint @@ -613,12 +640,9 @@ def test_timeseries_lambda_handler_json_multi_accept(hydrocron_api): result['results']['geojson'] == expected -def test_timeseries_lambda_handler_unsupported(hydrocron_api): +def test_timeseries_lambda_handler_unsupported(): """ Test the lambda handler for the timeseries endpoint - Parameters - ---------- - hydrocron_api: Fixture ensuring the database is configured for the api """ import hydrocron.api.controllers.timeseries @@ -643,12 +667,9 @@ def test_timeseries_lambda_handler_unsupported(hydrocron_api): assert "415: Unsupported media type in Accept request header: image/jpg." in str(e.value) -def test_timeseries_lambda_handler_reachid_not_found(hydrocron_api): +def test_timeseries_lambda_handler_reachid_not_found(): """ Test the lambda handler for the timeseries endpoint - Parameters - ---------- - hydrocron_api: Fixture ensuring the database is configured for the api """ import hydrocron.api.controllers.timeseries diff --git a/tests/test_authorizer.py b/tests/test_authorizer.py index baa84961..28a4d31b 100644 --- a/tests/test_authorizer.py +++ b/tests/test_authorizer.py @@ -24,12 +24,11 @@ def setUp(self): # Create SSM client and put API keys ssm = boto3.client("ssm") ssm.put_parameter(Name="/service/hydrocron/api-key-default", Value="abc123", Type="SecureString") - ssm.put_parameter(Name="/service/hydrocron/api-key-trusted", Value="def456", Type="SecureString") + ssm.put_parameter(Name="/service/hydrocron/api-key-trusted", Value='["def456", "qrs789"]', Type="SecureString") def tearDown(self): self.mock_aws.stop() - def test_authorizer_lambda_handler_default(self): """ diff --git a/tests/test_connection.py b/tests/test_connection.py index b9b9c066..384ef802 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -27,4 +27,4 @@ def test_ssm_client(): # Import module from hydrocron.utils import connection - assert type(connection.ssm_client).__name__ == "SSM" + assert type(connection.ssm_client).__name__ == "SSM" \ No newline at end of file diff --git a/tests/test_data/api_authorizer_default.json b/tests/test_data/api_authorizer_default.json index c54345e0..af7c85fc 100644 --- a/tests/test_data/api_authorizer_default.json +++ b/tests/test_data/api_authorizer_default.json @@ -4,9 +4,7 @@ "resource": "/timeseries", "path": "/timeseries", "httpMethod": "GET", - "headers": { - "x-api-key": "abc123" - }, + "headers": {}, "pathParameters": {}, "stageVariables": {}, "requestContext": { diff --git a/tests/test_data/api_query_results_csv.csv b/tests/test_data/api_query_results_csv.csv index ecda0f46..96b593a0 100644 --- a/tests/test_data/api_query_results_csv.csv +++ b/tests/test_data/api_query_results_csv.csv @@ -1,2 +1,2 @@ reach_id,time_str,wse,sword_version,collection_shortname,crid,geometry,wse_units -71224100223,2023-06-10T19:39:43Z,286.2983,15,SWOT_L2_HR_RiverSP_2.0,PIA1,"LINESTRING (-95.564991 50.223686, -95.564559 50.223479, -95.564133 50.223381, -95.563713 50.22339, -95.563296 50.223453, -95.562884 50.223624, -95.562473 50.223795, -95.562062 50.223966, -95.56165 50.224137, -95.561242 50.224362, -95.560917 50.224585, -95.560595 50.224862, -95.560271 50.225085, -95.559946 50.225308, -95.559946 50.225308, -95.559213 50.225756, -95.558804 50.225981, -95.558567 50.226256, -95.558413 50.226529, -95.558343 50.226801, -95.558274 50.227072, -95.558288 50.227342, -95.558303 50.227611, -95.558317 50.227881, -95.558416 50.228148, -95.558514 50.228416, -95.558697 50.228682, -95.558795 50.22895, -95.558978 50.229216, -95.559076 50.229483, -95.559259 50.229749, -95.559357 50.230017, -95.559455 50.230284, -95.55947 50.230554, -95.559484 50.230823, -95.559583 50.231091, -95.559765 50.231357, -95.559864 50.231625, -95.559878 50.231894, -95.559809 50.232166, -95.559571 50.232441, -95.559165 50.23272, -95.558757 50.232944, -95.558348 50.233169, -95.557939 50.233394, -95.55753 50.233619, -95.557206 50.233842, -95.556884 50.234119, -95.556562 50.234396, -95.556241 50.234673, -95.556003 50.234948, -95.555681 50.235225, -95.555443 50.2355, -95.555206 50.235775, -95.555136 50.236047, -95.555066 50.236318, -95.555081 50.236588, -95.555011 50.236859, -95.554941 50.23713, -95.554701 50.237351, -95.554376 50.237575, -95.554052 50.237798, -95.553727 50.238021, -95.553727 50.238021, -95.55308 50.238521, -95.552843 50.238796, -95.552521 50.239073, -95.552367 50.239346, -95.552297 50.239617, -95.552312 50.239887, -95.552326 50.240156, -95.552425 50.240424, -95.552439 50.240693, -95.552453 50.240963, -95.552468 50.241233, -95.552482 50.241502, -95.552497 50.241772, -95.552511 50.242041, -95.552525 50.242311, -95.552456 50.242582, -95.552299 50.242801, -95.552056 50.242969, -95.551728 50.243138, -95.551314 50.243255, -95.550899 50.243372, -95.550487 50.243543, -95.550076 50.243714, -95.549661 50.243831, -95.549249 50.244002, -95.548838 50.244173, -95.548423 50.24429, -95.548011 50.244461, -95.547603 50.244686, -95.547278 50.244909, -95.546953 50.245132, -95.546715 50.245407, -95.546561 50.24568, -95.546492 50.245951, -95.546422 50.246223, -95.546436 50.246492, -95.546367 50.246764, -95.546297 50.247035, -95.546143 50.247308, -95.54599 50.247582, -95.545752 50.247857, -95.545598 50.24813, -95.545444 50.248403, -95.545374 50.248674, -95.545305 50.248946, -95.545319 50.249215, -95.545333 50.249485, -95.545348 50.249754, -95.545446 50.250022, -95.545545 50.25029, -95.545727 50.250556, -95.54591 50.250822, -95.546176 50.251086, -95.546359 50.251351, -95.546625 50.251615, -95.546892 50.251879, -95.547075 50.252145, -95.547257 50.252411, -95.54744 50.252677, -95.547538 50.252945, -95.547553 50.253214, -95.547651 50.253482, -95.547581 50.253753, -95.547512 50.254025, -95.547442 50.254296, -95.547372 50.254568, -95.547303 50.254839, -95.547317 50.255108, -95.547247 50.25538, -95.547177 50.255651, -95.547192 50.255921, -95.547206 50.25619, -95.547221 50.25646, -95.547319 50.256728, -95.547418 50.256995, -95.547432 50.257265, -95.547446 50.257534, -95.547461 50.257804, -95.547475 50.258073, -95.547489 50.258343, -95.547504 50.258613, -95.547518 50.258882, -95.547449 50.259153, -95.547379 50.259425, -95.547309 50.259696, -95.547239 50.259968, -95.547086 50.260241, -95.547016 50.260512, -95.546946 50.260784, -95.546876 50.261055, -95.546807 50.261326, -95.546737 50.261598, -95.546583 50.261871, -95.546345 50.262146, -95.54602 50.262369, -95.545611 50.262594, -95.5452 50.262765, -95.544788 50.262936, -95.544373 50.263053, -95.543961 50.263224, -95.543546 50.263341, -95.543135 50.263512, -95.542723 50.263683, -95.542314 50.263907, -95.541989 50.26413, -95.541667 50.264407, -95.541345 50.264684, -95.541107 50.264959, -95.540869 50.265234, -95.540631 50.265509, -95.540393 50.265785, -95.540155 50.26606, -95.539917 50.266335, -95.539679 50.26661, -95.539441 50.266885, -95.539203 50.26716, -95.538962 50.267381, -95.538634 50.26755, -95.538304 50.267665, -95.537889 50.267782, -95.537471 50.267845, -95.537056 50.267962, -95.536642 50.268079, -95.536227 50.268196, -95.535809 50.268259, -95.535391 50.268323, -95.534974 50.268386, -95.534556 50.268449, -95.534138 50.268512, -95.533718 50.268521, -95.5333 50.268584, -95.532882 50.268647, -95.532552 50.268762, -95.532224 50.268931, -95.531986 50.269206, -95.531748 50.269481, -95.531594 50.269755, -95.531356 50.27003, -95.531202 50.270303, -95.531048 50.270576, -95.530978 50.270847, -95.530908 50.271119, -95.530923 50.271388, -95.530937 50.271658, -95.530951 50.271927, -95.53105 50.272195, -95.531148 50.272463, -95.531331 50.272729, -95.531513 50.272995, -95.531696 50.273261, -95.531878 50.273526, -95.532145 50.27379, -95.532327 50.274056, -95.532594 50.27432, -95.532861 50.274584, -95.533043 50.27485, -95.533142 50.275118, -95.53324 50.275386, -95.533339 50.275653, -95.533437 50.275921, -95.533536 50.276189, -95.533634 50.276457, -95.533732 50.276724, -95.533747 50.276994, -95.533761 50.277263, -95.533859 50.277531, -95.533958 50.277799, -95.53414 50.278065, -95.534323 50.278331, -95.534506 50.278596, -95.534688 50.278862, -95.534871 50.279128, -95.534969 50.279396, -95.535152 50.279662, -95.535334 50.279928, -95.535433 50.280195, -95.535615 50.280461, -95.535798 50.280727, -95.535812 50.280997, -95.535743 50.281268, -95.535589 50.281541, -95.535266 50.281818, -95.53486 50.282097, -95.534454 50.282376, -95.534132 50.282652, -95.533893 50.282927, -95.533824 50.283199, -95.533838 50.283468, -95.534021 50.283734, -95.534203 50.284, -95.53447 50.284264, -95.534652 50.28453, -95.534835 50.284796, -95.535018 50.285062, -95.5352 50.285328, -95.535383 50.285594, -95.535565 50.285859, -95.535832 50.286123, -95.536099 50.286387, -95.53645 50.28665, -95.536801 50.286912, -95.537152 50.287174, -95.537418 50.287438, -95.537601 50.287704, -95.5377 50.287972, -95.537798 50.288239, -95.537897 50.288507, -95.537995 50.288775, -95.538093 50.289043, -95.538192 50.28931, -95.538206 50.28958, -95.538221 50.289849, -95.538235 50.290119, -95.538334 50.290387, -95.538432 50.290654, -95.538531 50.290922, -95.538629 50.29119)",m \ No newline at end of file +71224100223,2023-06-10T19:39:43Z,286.2983,15,SWOT_L2_HR_RiverSP_2.0,PIA1,"LINESTRING (-95.56499095054704 50.223685647314554, -95.56455924521607 50.22347929408769, -95.564133327515 50.223380755482744, -95.56371319450288 50.22339003161307, -95.5632959523034 50.223453214405374, -95.56288449011103 50.22362421210612, -95.56247302494275 50.22379520838922, -95.56206155679854 50.22396620325467, -95.56165008567841 50.224137196702436, -95.56124150039189 50.22436209699033, -95.56091694015758 50.2245851428376, -95.5605952650309 50.224862096096615, -95.56027069840415 50.225085140218106, -95.55994612875263 50.22530818347087, -95.55994612875263 50.22530818347087, -95.55921294930269 50.22575611928357, -95.55880433866906 50.22598101132517, -95.55856667398747 50.226256107602985, -95.55841303910242 50.22652935212956, -95.55834343548443 50.22680074521635, -95.55827383113147 50.22707213826203, -95.55828825997133 50.22734168004043, -95.55830268903036 50.227611221803244, -95.55831711830852 50.227880763550445, -95.55841558314303 50.228148453942374, -95.5585140491334 50.22841614422279, -95.55869655253595 50.22868198283468, -95.55879502130205 50.228949672813734, -95.55897752839958 50.22921551090686, -95.55907599994154 50.229483200584546, -95.55925851073422 50.22974903815889, -95.55935698505218 50.230016727535194, -95.55945546052618 50.23028441679991, -95.5594698976695 50.23055395817989, -95.55948433503211 50.23082349954425, -95.55958281304633 50.231091188631005, -95.55976533310427 50.2313570252052, -95.55986381389481 50.23162471399055, -95.55987825402588 50.23189425522205, -95.55980865207903 50.23216564895256, -95.5595709638131 50.2324407474027, -95.55916518623326 50.23271954958498, -95.55875651702986 50.232944442127575, -95.5583478439649 50.233169333282696, -95.5579391670383 50.233394223050325, -95.55753048625006 50.23361911143042, -95.55720584702368 50.23384214780692, -95.55688408966645 50.23411909166459, -95.55656232860514 50.23439603467564, -95.55624056383968 50.23467297684004, -95.5560028428165 50.234948068382366, -95.55568107115045 50.23522500907874, -95.55544334423365 50.23550009954298, -95.55520561461955 50.23577518955049, -95.55513598118581 50.23604658080679, -95.55506634701644 50.236317972021936, -95.55508076250054 50.23658751404387, -95.55501112734154 50.23685890521982, -95.55494149144687 50.237130296354565, -95.55470086836644 50.237351477021065, -95.55437619091529 50.23757450594462, -95.55405151043719 50.2377975339988, -95.55372682693208 50.23802056118357, -95.55372682693208 50.23802056118357, -95.5530803318966 50.238520521413996, -95.55284257410611 50.238795606890314, -95.5525207587004 50.23907253933683, -95.55236705043114 50.239345776472206, -95.55229739635189 50.23961716620002, -95.55231179790792 50.23988670864981, -95.55232619968274 50.240156251084, -95.552424658985 50.240423946169955, -95.55243906167047 50.240693488555415, -95.55245346457474 50.24096303092529, -95.55246786769781 50.24123257327959, -95.55248227103971 50.24150211561829, -95.55249667460042 50.241771657941406, -95.55251107837995 50.24204120024894, -95.55252548237831 50.242310742540894, -95.55245582550218 50.24258213229042, -95.5522992256851 50.242801460906485, -95.55205568220181 50.24296872805318, -95.55172807489703 50.243137841672166, -95.55131352325878 50.24325489256743, -95.5508989695444 50.24337194201155, -95.55048729239795 50.243542898535715, -95.55007561227282 50.24371385364067, -95.54966105141877 50.243830898763854, -95.54924936578318 50.24400185101466, -95.54883767716892 50.24417280184619, -95.54842310917522 50.24428984264822, -95.54801141505048 50.24446079062545, -95.54760259345385 50.24468564582484, -95.5472778335258 50.2449086559069, -95.54695307056946 50.24513166511901, -95.5467152455149 50.245406738801776, -95.546561484697 50.24567996879638, -95.54649178958766 50.24595135541482, -95.54642209374154 50.24622274199196, -95.54643646553173 50.246492285365896, -95.54636676869393 50.246763671903686, -95.5462970711193 50.2470350584002, -95.5461433029888 50.24730828788763, -95.54598953314873 50.247581517186504, -95.5457516907899 50.24785658906026, -95.54559791703987 50.24812981787802, -95.54544414158016 50.248403046507214, -95.54537443669209 50.24867443249644, -95.545304731067 50.24894581844439, -95.54531909794159 50.24921536192538, -95.54533346503445 50.2494849053908, -95.54534783234561 50.24975444884063, -95.54544627452294 50.250022149735955, -95.5455447178565 50.250289850519906, -95.54572723791466 50.25055570843617, -95.54590976004958 50.250821566023696, -95.54617636073269 50.25108558018728, -95.54635888747715 50.251351436978254, -95.54662549367295 50.25161545000634, -95.54689210284876 50.25187946236676, -95.54707463673586 50.25214531789328, -95.54725717270001 50.25241117309102, -95.54743971074126 50.25267702795994, -95.54753817121438 50.252944726690345, -95.54755255272546 50.253214269517166, -95.54765101504711 50.25348196810305, -95.54758131640321 50.253753355124054, -95.5475116170223 50.25402474210377, -95.54744191690433 50.25429612904219, -95.5473722160493 50.254567515939314, -95.54730251445719 50.25483890279517, -95.54731689560428 50.25510844558308, -95.54724719302014 50.25537983239958, -95.54717748969888 50.255651219174794, -95.54719187055464 50.25592076195104, -95.54720625162895 50.2561903047117, -95.54722063292179 50.25645984745679, -95.54731910075907 50.25672754611524, -95.54741756975315 50.256995244662285, -95.54743195264865 50.25726478732559, -95.5474463357627 50.25753432997331, -95.54746071909534 50.257803872605464, -95.54747510264654 50.258073415222036, -95.54748948641634 50.258342957823025, -95.54750387040471 50.25861250040844, -95.54751825461167 50.25888204297828, -95.54744854845832 50.25915342982219, -95.54737884156769 50.259424816624794, -95.54730913393976 50.2596962033861, -95.54723942557455 50.259967590106115, -95.54708562395508 50.26024082084064, -95.54701591363286 50.260512207434786, -95.54694620257328 50.260783593987625, -95.54687649077631 50.26105498049917, -95.54680677824196 50.2613263669694, -95.54673706497017 50.26159775339832, -95.5465832555412 50.26187098352137, -95.54634534848167 50.262146057026385, -95.54602046675927 50.262369064876424, -95.54561148524954 50.262593914907356, -95.54519962522545 50.26276485497556, -95.54478776221971 50.26293579362334, -95.5443730224894 50.26305282224571, -95.54396115396779 50.26322375803692, -95.54354640962529 50.26334078377077, -95.54313453558782 50.26351171670531, -95.54272265856868 50.26368264821931, -95.54231365006459 50.263907486996494, -95.54198873739921 50.26413048397366, -95.54166669251958 50.264407388786196, -95.54134464392888 50.26468429275034, -95.54110669285083 50.264959356072275, -95.54086873907006 50.265234418936394, -95.54063078258652 50.265509481342676, -95.54039282340014 50.26578454329109, -95.54015486151089 50.266059604781645, -95.53991689691867 50.266334665814306, -95.53967892962345 50.266609726389056, -95.53944095962518 50.2668847865059, -95.53920298692378 50.267159846164816, -95.53896214344363 50.26738099657493, -95.53863432399424 50.26755007584616, -95.53830363484859 50.26766524540705, -95.53788883768615 50.26778225164903, -95.53747117200598 50.26784534758942, -95.5370563711437 50.267962350909514, -95.53664156820334 50.26807935277673, -95.53622676318491 50.26819635319107, -95.53580909148309 50.268259443238236, -95.53539141862476 50.26832253179943, -95.53497374460993 50.26838561887463, -95.53455606943864 50.26844870446386, -95.53413839311092 50.26851178856707, -95.53371785335578 50.26852096218524, -95.53330017518041 50.26858404329961, -95.53288249584872 50.26864712292795, -95.53255178471423 50.26876227641596, -95.53222393257654 50.26893133804237, -95.53198590795539 50.26920638360635, -95.53174788063029 50.26948142871207, -95.53159396088925 50.26975464032271, -95.53135592865603 50.27002968467687, -95.53120200499794 50.270302895805145, -95.53104807962691 50.27057610674432, -95.53097826479599 50.27084748487442, -95.53090844922589 50.27111886296304, -95.53092274612622 50.27138840841615, -95.53093704324388 50.271657953853705, -95.53095134057884 50.27192749927573, -95.53104975275383 50.27219521197513, -95.53114816608533 50.27246292456331, -95.53133069611788 50.27272880411588, -95.53151322822882 50.272994683339896, -95.5316957624182 50.27326056223537, -95.53187829868607 50.273526440802314, -95.53214495439458 50.273790485499156, -95.53232749527614 50.274056363269885, -95.53259415650292 50.27432040683151, -95.53286082071288 50.27458444972556, -95.53304336874363 50.274850326232354, -95.5331417992254 50.27511803676914, -95.53324023086404 50.2753857471947, -95.53333866365958 50.27565345750898, -95.53343709761204 50.27592116771203, -95.53353553272143 50.2761888778038, -95.5336339689878 50.27645658778431, -95.53373240641118 50.276724297653566, -95.53374672209779 50.276993842257234, -95.53376103800201 50.277263386845355, -95.53385947796578 50.277531096537366, -95.53395791908663 50.277798806118085, -95.53414048612856 50.27806468048959, -95.53432305524969 50.27833055453241, -95.53450562645006 50.278596428246544, -95.53468819972973 50.278862301632, -95.53487077508873 50.279128174688765, -95.53496922547967 50.27939588321039, -95.53515180454076 50.27966175574886, -95.53533438568131 50.279927627958614, -95.53543284047507 50.28019533598976, -95.53561542531793 50.2804612076812, -95.53579801224038 50.28072707904389, -95.53581234162331 50.280996623030376, -95.5357425409273 50.28126800340378, -95.53558860870369 50.28154122003395, -95.53526641218028 50.28181810868061, -95.53486008012673 50.28209683226358, -95.53445374333138 50.28237555448455, -95.53413153464473 50.28265244013138, -95.53389345559376 50.28292748988175, -95.53382364151322 50.28319886922727, -95.5338379610013 50.283468413510214, -95.53402055024554 50.283734287518, -95.53420314156966 50.28400016119706, -95.53446987064352 50.28426419904805, -95.53465246658432 50.284530071930504, -95.5348350646051 50.284795944484195, -95.53501766470593 50.285061816709145, -95.53520026688683 50.28532768860532, -95.53538287114787 50.28559356017272, -95.53556547748906 50.28585943141134, -95.5358322247696 50.2861234657869, -95.53609897503546 50.286387499494474, -95.53644986803343 50.28664969553892, -95.53680076490444 50.286911890454476, -95.53715166564855 50.2871740842411, -95.5374184292007 50.28743811467654, -95.53760105421638 50.28770398236087, -95.53769953932495 50.287971687711604, -95.53779802559158 50.28823939295097, -95.5378965130163 50.28850709807897, -95.53799500159913 50.28877480309561, -95.53809349134009 50.289042508000875, -95.53819198223923 50.28931021279478, -95.53820632950627 50.289579755881725, -95.53822067699146 50.28984929895312, -95.5382350246948 50.29011884200898, -95.53833351882977 50.29038654659239, -95.53843201412302 50.290654251064424, -95.53853051057455 50.29092195542508, -95.53862900818439 50.29118965967436)",m \ No newline at end of file diff --git a/tests/test_data/api_query_results_geojson.json b/tests/test_data/api_query_results_geojson.json index 84bd077e..90e93797 100644 --- a/tests/test_data/api_query_results_geojson.json +++ b/tests/test_data/api_query_results_geojson.json @@ -3,6 +3,7 @@ "features": [ { "id": "0", + "type": "Feature", "properties": { "reach_id": "71224100223", "time_str": "2023-06-10T19:39:43Z", @@ -13,1135 +14,1134 @@ "wse_units": "m" }, "geometry": { + "type": "LineString", "coordinates": [ [ - -95.564991, - 50.223686 + -95.56499095054704, + 50.223685647314554 ], [ - -95.564559, - 50.223479 + -95.56455924521607, + 50.22347929408769 ], [ - -95.564133, - 50.223381 + -95.564133327515, + 50.223380755482744 ], [ - -95.563713, - 50.22339 + -95.56371319450288, + 50.22339003161307 ], [ - -95.563296, - 50.223453 + -95.5632959523034, + 50.223453214405374 ], [ - -95.562884, - 50.223624 + -95.56288449011103, + 50.22362421210612 ], [ - -95.562473, - 50.223795 + -95.56247302494275, + 50.22379520838922 ], [ - -95.562062, - 50.223966 + -95.56206155679854, + 50.22396620325467 ], [ - -95.56165, - 50.224137 + -95.56165008567841, + 50.224137196702436 ], [ - -95.561242, - 50.224362 + -95.56124150039189, + 50.22436209699033 ], [ - -95.560917, - 50.224585 + -95.56091694015758, + 50.2245851428376 ], [ - -95.560595, - 50.224862 + -95.5605952650309, + 50.224862096096615 ], [ - -95.560271, - 50.225085 + -95.56027069840415, + 50.225085140218106 ], [ - -95.559946, - 50.225308 + -95.55994612875263, + 50.22530818347087 ], [ - -95.559946, - 50.225308 + -95.55994612875263, + 50.22530818347087 ], [ - -95.559213, - 50.225756 + -95.55921294930269, + 50.22575611928357 ], [ - -95.558804, - 50.225981 + -95.55880433866906, + 50.22598101132517 ], [ - -95.558567, - 50.226256 + -95.55856667398747, + 50.226256107602985 ], [ - -95.558413, - 50.226529 + -95.55841303910242, + 50.22652935212956 ], [ - -95.558343, - 50.226801 + -95.55834343548443, + 50.22680074521635 ], [ - -95.558274, - 50.227072 + -95.55827383113147, + 50.22707213826203 ], [ - -95.558288, - 50.227342 + -95.55828825997133, + 50.22734168004043 ], [ - -95.558303, - 50.227611 + -95.55830268903036, + 50.227611221803244 ], [ - -95.558317, - 50.227881 + -95.55831711830852, + 50.227880763550445 ], [ - -95.558416, - 50.228148 + -95.55841558314303, + 50.228148453942374 ], [ - -95.558514, - 50.228416 + -95.5585140491334, + 50.22841614422279 ], [ - -95.558697, - 50.228682 + -95.55869655253595, + 50.22868198283468 ], [ - -95.558795, - 50.22895 + -95.55879502130205, + 50.228949672813734 ], [ - -95.558978, - 50.229216 + -95.55897752839958, + 50.22921551090686 ], [ - -95.559076, - 50.229483 + -95.55907599994154, + 50.229483200584546 ], [ - -95.559259, - 50.229749 + -95.55925851073422, + 50.22974903815889 ], [ - -95.559357, - 50.230017 + -95.55935698505218, + 50.230016727535194 ], [ - -95.559455, - 50.230284 + -95.55945546052618, + 50.23028441679991 ], [ - -95.55947, - 50.230554 + -95.5594698976695, + 50.23055395817989 ], [ - -95.559484, - 50.230823 + -95.55948433503211, + 50.23082349954425 ], [ - -95.559583, - 50.231091 + -95.55958281304633, + 50.231091188631005 ], [ - -95.559765, - 50.231357 + -95.55976533310427, + 50.2313570252052 ], [ - -95.559864, - 50.231625 + -95.55986381389481, + 50.23162471399055 ], [ - -95.559878, - 50.231894 + -95.55987825402588, + 50.23189425522205 ], [ - -95.559809, - 50.232166 + -95.55980865207903, + 50.23216564895256 ], [ - -95.559571, - 50.232441 + -95.5595709638131, + 50.2324407474027 ], [ - -95.559165, - 50.23272 + -95.55916518623326, + 50.23271954958498 ], [ - -95.558757, - 50.232944 + -95.55875651702986, + 50.232944442127575 ], [ - -95.558348, - 50.233169 + -95.5583478439649, + 50.233169333282696 ], [ - -95.557939, - 50.233394 + -95.5579391670383, + 50.233394223050325 ], [ - -95.55753, - 50.233619 + -95.55753048625006, + 50.23361911143042 ], [ - -95.557206, - 50.233842 + -95.55720584702368, + 50.23384214780692 ], [ - -95.556884, - 50.234119 + -95.55688408966645, + 50.23411909166459 ], [ - -95.556562, - 50.234396 + -95.55656232860514, + 50.23439603467564 ], [ - -95.556241, - 50.234673 + -95.55624056383968, + 50.23467297684004 ], [ - -95.556003, - 50.234948 + -95.5560028428165, + 50.234948068382366 ], [ - -95.555681, - 50.235225 + -95.55568107115045, + 50.23522500907874 ], [ - -95.555443, - 50.2355 + -95.55544334423365, + 50.23550009954298 ], [ - -95.555206, - 50.235775 + -95.55520561461955, + 50.23577518955049 ], [ - -95.555136, - 50.236047 + -95.55513598118581, + 50.23604658080679 ], [ - -95.555066, - 50.236318 + -95.55506634701644, + 50.236317972021936 ], [ - -95.555081, - 50.236588 + -95.55508076250054, + 50.23658751404387 ], [ - -95.555011, - 50.236859 + -95.55501112734154, + 50.23685890521982 ], [ - -95.554941, - 50.23713 + -95.55494149144687, + 50.237130296354565 ], [ - -95.554701, - 50.237351 + -95.55470086836644, + 50.237351477021065 ], [ - -95.554376, - 50.237575 + -95.55437619091529, + 50.23757450594462 ], [ - -95.554052, - 50.237798 + -95.55405151043719, + 50.2377975339988 ], [ - -95.553727, - 50.238021 + -95.55372682693208, + 50.23802056118357 ], [ - -95.553727, - 50.238021 + -95.55372682693208, + 50.23802056118357 ], [ - -95.55308, - 50.238521 + -95.5530803318966, + 50.238520521413996 ], [ - -95.552843, - 50.238796 + -95.55284257410611, + 50.238795606890314 ], [ - -95.552521, - 50.239073 + -95.5525207587004, + 50.23907253933683 ], [ - -95.552367, - 50.239346 + -95.55236705043114, + 50.239345776472206 ], [ - -95.552297, - 50.239617 + -95.55229739635189, + 50.23961716620002 ], [ - -95.552312, - 50.239887 + -95.55231179790792, + 50.23988670864981 ], [ - -95.552326, - 50.240156 + -95.55232619968274, + 50.240156251084 ], [ - -95.552425, - 50.240424 + -95.552424658985, + 50.240423946169955 ], [ - -95.552439, - 50.240693 + -95.55243906167047, + 50.240693488555415 ], [ - -95.552453, - 50.240963 + -95.55245346457474, + 50.24096303092529 ], [ - -95.552468, - 50.241233 + -95.55246786769781, + 50.24123257327959 ], [ - -95.552482, - 50.241502 + -95.55248227103971, + 50.24150211561829 ], [ - -95.552497, - 50.241772 + -95.55249667460042, + 50.241771657941406 ], [ - -95.552511, - 50.242041 + -95.55251107837995, + 50.24204120024894 ], [ - -95.552525, - 50.242311 + -95.55252548237831, + 50.242310742540894 ], [ - -95.552456, - 50.242582 + -95.55245582550218, + 50.24258213229042 ], [ - -95.552299, - 50.242801 + -95.5522992256851, + 50.242801460906485 ], [ - -95.552056, - 50.242969 + -95.55205568220181, + 50.24296872805318 ], [ - -95.551728, - 50.243138 + -95.55172807489703, + 50.243137841672166 ], [ - -95.551314, - 50.243255 + -95.55131352325878, + 50.24325489256743 ], [ - -95.550899, - 50.243372 + -95.5508989695444, + 50.24337194201155 ], [ - -95.550487, - 50.243543 + -95.55048729239795, + 50.243542898535715 ], [ - -95.550076, - 50.243714 + -95.55007561227282, + 50.24371385364067 ], [ - -95.549661, - 50.243831 + -95.54966105141877, + 50.243830898763854 ], [ - -95.549249, - 50.244002 + -95.54924936578318, + 50.24400185101466 ], [ - -95.548838, - 50.244173 + -95.54883767716892, + 50.24417280184619 ], [ - -95.548423, - 50.24429 + -95.54842310917522, + 50.24428984264822 ], [ - -95.548011, - 50.244461 + -95.54801141505048, + 50.24446079062545 ], [ - -95.547603, - 50.244686 + -95.54760259345385, + 50.24468564582484 ], [ - -95.547278, - 50.244909 + -95.5472778335258, + 50.2449086559069 ], [ - -95.546953, - 50.245132 + -95.54695307056946, + 50.24513166511901 ], [ - -95.546715, - 50.245407 + -95.5467152455149, + 50.245406738801776 ], [ - -95.546561, - 50.24568 + -95.546561484697, + 50.24567996879638 ], [ - -95.546492, - 50.245951 + -95.54649178958766, + 50.24595135541482 ], [ - -95.546422, - 50.246223 + -95.54642209374154, + 50.24622274199196 ], [ - -95.546436, - 50.246492 + -95.54643646553173, + 50.246492285365896 ], [ - -95.546367, - 50.246764 + -95.54636676869393, + 50.246763671903686 ], [ - -95.546297, - 50.247035 + -95.5462970711193, + 50.2470350584002 ], [ - -95.546143, - 50.247308 + -95.5461433029888, + 50.24730828788763 ], [ - -95.54599, - 50.247582 + -95.54598953314873, + 50.247581517186504 ], [ - -95.545752, - 50.247857 + -95.5457516907899, + 50.24785658906026 ], [ - -95.545598, - 50.24813 + -95.54559791703987, + 50.24812981787802 ], [ - -95.545444, - 50.248403 + -95.54544414158016, + 50.248403046507214 ], [ - -95.545374, - 50.248674 + -95.54537443669209, + 50.24867443249644 ], [ - -95.545305, - 50.248946 + -95.545304731067, + 50.24894581844439 ], [ - -95.545319, - 50.249215 + -95.54531909794159, + 50.24921536192538 ], [ - -95.545333, - 50.249485 + -95.54533346503445, + 50.2494849053908 ], [ - -95.545348, - 50.249754 + -95.54534783234561, + 50.24975444884063 ], [ - -95.545446, - 50.250022 + -95.54544627452294, + 50.250022149735955 ], [ - -95.545545, - 50.25029 + -95.5455447178565, + 50.250289850519906 ], [ - -95.545727, - 50.250556 + -95.54572723791466, + 50.25055570843617 ], [ - -95.54591, - 50.250822 + -95.54590976004958, + 50.250821566023696 ], [ - -95.546176, - 50.251086 + -95.54617636073269, + 50.25108558018728 ], [ - -95.546359, - 50.251351 + -95.54635888747715, + 50.251351436978254 ], [ - -95.546625, - 50.251615 + -95.54662549367295, + 50.25161545000634 ], [ - -95.546892, - 50.251879 + -95.54689210284876, + 50.25187946236676 ], [ - -95.547075, - 50.252145 + -95.54707463673586, + 50.25214531789328 ], [ - -95.547257, - 50.252411 + -95.54725717270001, + 50.25241117309102 ], [ - -95.54744, - 50.252677 + -95.54743971074126, + 50.25267702795994 ], [ - -95.547538, - 50.252945 + -95.54753817121438, + 50.252944726690345 ], [ - -95.547553, - 50.253214 + -95.54755255272546, + 50.253214269517166 ], [ - -95.547651, - 50.253482 + -95.54765101504711, + 50.25348196810305 ], [ - -95.547581, - 50.253753 + -95.54758131640321, + 50.253753355124054 ], [ - -95.547512, - 50.254025 + -95.5475116170223, + 50.25402474210377 ], [ - -95.547442, - 50.254296 + -95.54744191690433, + 50.25429612904219 ], [ - -95.547372, - 50.254568 + -95.5473722160493, + 50.254567515939314 ], [ - -95.547303, - 50.254839 + -95.54730251445719, + 50.25483890279517 ], [ - -95.547317, - 50.255108 + -95.54731689560428, + 50.25510844558308 ], [ - -95.547247, - 50.25538 + -95.54724719302014, + 50.25537983239958 ], [ - -95.547177, - 50.255651 + -95.54717748969888, + 50.255651219174794 ], [ - -95.547192, - 50.255921 + -95.54719187055464, + 50.25592076195104 ], [ - -95.547206, - 50.25619 + -95.54720625162895, + 50.2561903047117 ], [ - -95.547221, - 50.25646 + -95.54722063292179, + 50.25645984745679 ], [ - -95.547319, - 50.256728 + -95.54731910075907, + 50.25672754611524 ], [ - -95.547418, - 50.256995 + -95.54741756975315, + 50.256995244662285 ], [ - -95.547432, - 50.257265 + -95.54743195264865, + 50.25726478732559 ], [ - -95.547446, - 50.257534 + -95.5474463357627, + 50.25753432997331 ], [ - -95.547461, - 50.257804 + -95.54746071909534, + 50.257803872605464 ], [ - -95.547475, - 50.258073 + -95.54747510264654, + 50.258073415222036 ], [ - -95.547489, - 50.258343 + -95.54748948641634, + 50.258342957823025 ], [ - -95.547504, - 50.258613 + -95.54750387040471, + 50.25861250040844 ], [ - -95.547518, - 50.258882 + -95.54751825461167, + 50.25888204297828 ], [ - -95.547449, - 50.259153 + -95.54744854845832, + 50.25915342982219 ], [ - -95.547379, - 50.259425 + -95.54737884156769, + 50.259424816624794 ], [ - -95.547309, - 50.259696 + -95.54730913393976, + 50.2596962033861 ], [ - -95.547239, - 50.259968 + -95.54723942557455, + 50.259967590106115 ], [ - -95.547086, - 50.260241 + -95.54708562395508, + 50.26024082084064 ], [ - -95.547016, - 50.260512 + -95.54701591363286, + 50.260512207434786 ], [ - -95.546946, - 50.260784 + -95.54694620257328, + 50.260783593987625 ], [ - -95.546876, - 50.261055 + -95.54687649077631, + 50.26105498049917 ], [ - -95.546807, - 50.261326 + -95.54680677824196, + 50.2613263669694 ], [ - -95.546737, - 50.261598 + -95.54673706497017, + 50.26159775339832 ], [ - -95.546583, - 50.261871 + -95.5465832555412, + 50.26187098352137 ], [ - -95.546345, - 50.262146 + -95.54634534848167, + 50.262146057026385 ], [ - -95.54602, - 50.262369 + -95.54602046675927, + 50.262369064876424 ], [ - -95.545611, - 50.262594 + -95.54561148524954, + 50.262593914907356 ], [ - -95.5452, - 50.262765 + -95.54519962522545, + 50.26276485497556 ], [ - -95.544788, - 50.262936 + -95.54478776221971, + 50.26293579362334 ], [ - -95.544373, - 50.263053 + -95.5443730224894, + 50.26305282224571 ], [ - -95.543961, - 50.263224 + -95.54396115396779, + 50.26322375803692 ], [ - -95.543546, - 50.263341 + -95.54354640962529, + 50.26334078377077 ], [ - -95.543135, - 50.263512 + -95.54313453558782, + 50.26351171670531 ], [ - -95.542723, - 50.263683 + -95.54272265856868, + 50.26368264821931 ], [ - -95.542314, - 50.263907 + -95.54231365006459, + 50.263907486996494 ], [ - -95.541989, - 50.26413 + -95.54198873739921, + 50.26413048397366 ], [ - -95.541667, - 50.264407 + -95.54166669251958, + 50.264407388786196 ], [ - -95.541345, - 50.264684 + -95.54134464392888, + 50.26468429275034 ], [ - -95.541107, - 50.264959 + -95.54110669285083, + 50.264959356072275 ], [ - -95.540869, - 50.265234 + -95.54086873907006, + 50.265234418936394 ], [ - -95.540631, - 50.265509 + -95.54063078258652, + 50.265509481342676 ], [ - -95.540393, - 50.265785 + -95.54039282340014, + 50.26578454329109 ], [ - -95.540155, - 50.26606 + -95.54015486151089, + 50.266059604781645 ], [ - -95.539917, - 50.266335 + -95.53991689691867, + 50.266334665814306 ], [ - -95.539679, - 50.26661 + -95.53967892962345, + 50.266609726389056 ], [ - -95.539441, - 50.266885 + -95.53944095962518, + 50.2668847865059 ], [ - -95.539203, - 50.26716 + -95.53920298692378, + 50.267159846164816 ], [ - -95.538962, - 50.267381 + -95.53896214344363, + 50.26738099657493 ], [ - -95.538634, - 50.26755 + -95.53863432399424, + 50.26755007584616 ], [ - -95.538304, - 50.267665 + -95.53830363484859, + 50.26766524540705 ], [ - -95.537889, - 50.267782 + -95.53788883768615, + 50.26778225164903 ], [ - -95.537471, - 50.267845 + -95.53747117200598, + 50.26784534758942 ], [ - -95.537056, - 50.267962 + -95.5370563711437, + 50.267962350909514 ], [ - -95.536642, - 50.268079 + -95.53664156820334, + 50.26807935277673 ], [ - -95.536227, - 50.268196 + -95.53622676318491, + 50.26819635319107 ], [ - -95.535809, - 50.268259 + -95.53580909148309, + 50.268259443238236 ], [ - -95.535391, - 50.268323 + -95.53539141862476, + 50.26832253179943 ], [ - -95.534974, - 50.268386 + -95.53497374460993, + 50.26838561887463 ], [ - -95.534556, - 50.268449 + -95.53455606943864, + 50.26844870446386 ], [ - -95.534138, - 50.268512 + -95.53413839311092, + 50.26851178856707 ], [ - -95.533718, - 50.268521 + -95.53371785335578, + 50.26852096218524 ], [ - -95.5333, - 50.268584 + -95.53330017518041, + 50.26858404329961 ], [ - -95.532882, - 50.268647 + -95.53288249584872, + 50.26864712292795 ], [ - -95.532552, - 50.268762 + -95.53255178471423, + 50.26876227641596 ], [ - -95.532224, - 50.268931 + -95.53222393257654, + 50.26893133804237 ], [ - -95.531986, - 50.269206 + -95.53198590795539, + 50.26920638360635 ], [ - -95.531748, - 50.269481 + -95.53174788063029, + 50.26948142871207 ], [ - -95.531594, - 50.269755 + -95.53159396088925, + 50.26975464032271 ], [ - -95.531356, - 50.27003 + -95.53135592865603, + 50.27002968467687 ], [ - -95.531202, - 50.270303 + -95.53120200499794, + 50.270302895805145 ], [ - -95.531048, - 50.270576 + -95.53104807962691, + 50.27057610674432 ], [ - -95.530978, - 50.270847 + -95.53097826479599, + 50.27084748487442 ], [ - -95.530908, - 50.271119 + -95.53090844922589, + 50.27111886296304 ], [ - -95.530923, - 50.271388 + -95.53092274612622, + 50.27138840841615 ], [ - -95.530937, - 50.271658 + -95.53093704324388, + 50.271657953853705 ], [ - -95.530951, - 50.271927 + -95.53095134057884, + 50.27192749927573 ], [ - -95.53105, - 50.272195 + -95.53104975275383, + 50.27219521197513 ], [ - -95.531148, - 50.272463 + -95.53114816608533, + 50.27246292456331 ], [ - -95.531331, - 50.272729 + -95.53133069611788, + 50.27272880411588 ], [ - -95.531513, - 50.272995 + -95.53151322822882, + 50.272994683339896 ], [ - -95.531696, - 50.273261 + -95.5316957624182, + 50.27326056223537 ], [ - -95.531878, - 50.273526 + -95.53187829868607, + 50.273526440802314 ], [ - -95.532145, - 50.27379 + -95.53214495439458, + 50.273790485499156 ], [ - -95.532327, - 50.274056 + -95.53232749527614, + 50.274056363269885 ], [ - -95.532594, - 50.27432 + -95.53259415650292, + 50.27432040683151 ], [ - -95.532861, - 50.274584 + -95.53286082071288, + 50.27458444972556 ], [ - -95.533043, - 50.27485 + -95.53304336874363, + 50.274850326232354 ], [ - -95.533142, - 50.275118 + -95.5331417992254, + 50.27511803676914 ], [ - -95.53324, - 50.275386 + -95.53324023086404, + 50.2753857471947 ], [ - -95.533339, - 50.275653 + -95.53333866365958, + 50.27565345750898 ], [ - -95.533437, - 50.275921 + -95.53343709761204, + 50.27592116771203 ], [ - -95.533536, - 50.276189 + -95.53353553272143, + 50.2761888778038 ], [ - -95.533634, - 50.276457 + -95.5336339689878, + 50.27645658778431 ], [ - -95.533732, - 50.276724 + -95.53373240641118, + 50.276724297653566 ], [ - -95.533747, - 50.276994 + -95.53374672209779, + 50.276993842257234 ], [ - -95.533761, - 50.277263 + -95.53376103800201, + 50.277263386845355 ], [ - -95.533859, - 50.277531 + -95.53385947796578, + 50.277531096537366 ], [ - -95.533958, - 50.277799 + -95.53395791908663, + 50.277798806118085 ], [ - -95.53414, - 50.278065 + -95.53414048612856, + 50.27806468048959 ], [ - -95.534323, - 50.278331 + -95.53432305524969, + 50.27833055453241 ], [ - -95.534506, - 50.278596 + -95.53450562645006, + 50.278596428246544 ], [ - -95.534688, - 50.278862 + -95.53468819972973, + 50.278862301632 ], [ - -95.534871, - 50.279128 + -95.53487077508873, + 50.279128174688765 ], [ - -95.534969, - 50.279396 + -95.53496922547967, + 50.27939588321039 ], [ - -95.535152, - 50.279662 + -95.53515180454076, + 50.27966175574886 ], [ - -95.535334, - 50.279928 + -95.53533438568131, + 50.279927627958614 ], [ - -95.535433, - 50.280195 + -95.53543284047507, + 50.28019533598976 ], [ - -95.535615, - 50.280461 + -95.53561542531793, + 50.2804612076812 ], [ - -95.535798, - 50.280727 + -95.53579801224038, + 50.28072707904389 ], [ - -95.535812, - 50.280997 + -95.53581234162331, + 50.280996623030376 ], [ - -95.535743, - 50.281268 + -95.5357425409273, + 50.28126800340378 ], [ - -95.535589, - 50.281541 + -95.53558860870369, + 50.28154122003395 ], [ - -95.535266, - 50.281818 + -95.53526641218028, + 50.28181810868061 ], [ - -95.53486, - 50.282097 + -95.53486008012673, + 50.28209683226358 ], [ - -95.534454, - 50.282376 + -95.53445374333138, + 50.28237555448455 ], [ - -95.534132, - 50.282652 + -95.53413153464473, + 50.28265244013138 ], [ - -95.533893, - 50.282927 + -95.53389345559376, + 50.28292748988175 ], [ - -95.533824, - 50.283199 + -95.53382364151322, + 50.28319886922727 ], [ - -95.533838, - 50.283468 + -95.5338379610013, + 50.283468413510214 ], [ - -95.534021, - 50.283734 + -95.53402055024554, + 50.283734287518 ], [ - -95.534203, - 50.284 + -95.53420314156966, + 50.28400016119706 ], [ - -95.53447, - 50.284264 + -95.53446987064352, + 50.28426419904805 ], [ - -95.534652, - 50.28453 + -95.53465246658432, + 50.284530071930504 ], [ - -95.534835, - 50.284796 + -95.5348350646051, + 50.284795944484195 ], [ - -95.535018, - 50.285062 + -95.53501766470593, + 50.285061816709145 ], [ - -95.5352, - 50.285328 + -95.53520026688683, + 50.28532768860532 ], [ - -95.535383, - 50.285594 + -95.53538287114787, + 50.28559356017272 ], [ - -95.535565, - 50.285859 + -95.53556547748906, + 50.28585943141134 ], [ - -95.535832, - 50.286123 + -95.5358322247696, + 50.2861234657869 ], [ - -95.536099, - 50.286387 + -95.53609897503546, + 50.286387499494474 ], [ - -95.53645, - 50.28665 + -95.53644986803343, + 50.28664969553892 ], [ - -95.536801, - 50.286912 + -95.53680076490444, + 50.286911890454476 ], [ - -95.537152, - 50.287174 + -95.53715166564855, + 50.2871740842411 ], [ - -95.537418, - 50.287438 + -95.5374184292007, + 50.28743811467654 ], [ - -95.537601, - 50.287704 + -95.53760105421638, + 50.28770398236087 ], [ - -95.5377, - 50.287972 + -95.53769953932495, + 50.287971687711604 ], [ - -95.537798, - 50.288239 + -95.53779802559158, + 50.28823939295097 ], [ - -95.537897, - 50.288507 + -95.5378965130163, + 50.28850709807897 ], [ - -95.537995, - 50.288775 + -95.53799500159913, + 50.28877480309561 ], [ - -95.538093, - 50.289043 + -95.53809349134009, + 50.289042508000875 ], [ - -95.538192, - 50.28931 + -95.53819198223923, + 50.28931021279478 ], [ - -95.538206, - 50.28958 + -95.53820632950627, + 50.289579755881725 ], [ - -95.538221, - 50.289849 + -95.53822067699146, + 50.28984929895312 ], [ - -95.538235, - 50.290119 + -95.5382350246948, + 50.29011884200898 ], [ - -95.538334, - 50.290387 + -95.53833351882977, + 50.29038654659239 ], [ - -95.538432, - 50.290654 + -95.53843201412302, + 50.290654251064424 ], [ - -95.538531, - 50.290922 + -95.53853051057455, + 50.29092195542508 ], [ - -95.538629, - 50.29119 + -95.53862900818439, + 50.29118965967436 ] - ], - "type": "LineString" - }, - "type": "Feature" + ] + } } ] } \ No newline at end of file diff --git a/tests/test_data/api_query_results_geojson_compact.json b/tests/test_data/api_query_results_geojson_compact.json index f8cd7f28..2c659605 100644 --- a/tests/test_data/api_query_results_geojson_compact.json +++ b/tests/test_data/api_query_results_geojson_compact.json @@ -3,6 +3,7 @@ "features": [ { "id": "0", + "type": "Feature", "properties": { "reach_id": [ "71224100223" @@ -27,1135 +28,1134 @@ ] }, "geometry": { + "type": "LineString", "coordinates": [ [ - -95.564991, - 50.223686 + -95.56499095054704, + 50.223685647314554 ], [ - -95.564559, - 50.223479 + -95.56455924521607, + 50.22347929408769 ], [ - -95.564133, - 50.223381 + -95.564133327515, + 50.223380755482744 ], [ - -95.563713, - 50.22339 + -95.56371319450288, + 50.22339003161307 ], [ - -95.563296, - 50.223453 + -95.5632959523034, + 50.223453214405374 ], [ - -95.562884, - 50.223624 + -95.56288449011103, + 50.22362421210612 ], [ - -95.562473, - 50.223795 + -95.56247302494275, + 50.22379520838922 ], [ - -95.562062, - 50.223966 + -95.56206155679854, + 50.22396620325467 ], [ - -95.56165, - 50.224137 + -95.56165008567841, + 50.224137196702436 ], [ - -95.561242, - 50.224362 + -95.56124150039189, + 50.22436209699033 ], [ - -95.560917, - 50.224585 + -95.56091694015758, + 50.2245851428376 ], [ - -95.560595, - 50.224862 + -95.5605952650309, + 50.224862096096615 ], [ - -95.560271, - 50.225085 + -95.56027069840415, + 50.225085140218106 ], [ - -95.559946, - 50.225308 + -95.55994612875263, + 50.22530818347087 ], [ - -95.559946, - 50.225308 + -95.55994612875263, + 50.22530818347087 ], [ - -95.559213, - 50.225756 + -95.55921294930269, + 50.22575611928357 ], [ - -95.558804, - 50.225981 + -95.55880433866906, + 50.22598101132517 ], [ - -95.558567, - 50.226256 + -95.55856667398747, + 50.226256107602985 ], [ - -95.558413, - 50.226529 + -95.55841303910242, + 50.22652935212956 ], [ - -95.558343, - 50.226801 + -95.55834343548443, + 50.22680074521635 ], [ - -95.558274, - 50.227072 + -95.55827383113147, + 50.22707213826203 ], [ - -95.558288, - 50.227342 + -95.55828825997133, + 50.22734168004043 ], [ - -95.558303, - 50.227611 + -95.55830268903036, + 50.227611221803244 ], [ - -95.558317, - 50.227881 + -95.55831711830852, + 50.227880763550445 ], [ - -95.558416, - 50.228148 + -95.55841558314303, + 50.228148453942374 ], [ - -95.558514, - 50.228416 + -95.5585140491334, + 50.22841614422279 ], [ - -95.558697, - 50.228682 + -95.55869655253595, + 50.22868198283468 ], [ - -95.558795, - 50.22895 + -95.55879502130205, + 50.228949672813734 ], [ - -95.558978, - 50.229216 + -95.55897752839958, + 50.22921551090686 ], [ - -95.559076, - 50.229483 + -95.55907599994154, + 50.229483200584546 ], [ - -95.559259, - 50.229749 + -95.55925851073422, + 50.22974903815889 ], [ - -95.559357, - 50.230017 + -95.55935698505218, + 50.230016727535194 ], [ - -95.559455, - 50.230284 + -95.55945546052618, + 50.23028441679991 ], [ - -95.55947, - 50.230554 + -95.5594698976695, + 50.23055395817989 ], [ - -95.559484, - 50.230823 + -95.55948433503211, + 50.23082349954425 ], [ - -95.559583, - 50.231091 + -95.55958281304633, + 50.231091188631005 ], [ - -95.559765, - 50.231357 + -95.55976533310427, + 50.2313570252052 ], [ - -95.559864, - 50.231625 + -95.55986381389481, + 50.23162471399055 ], [ - -95.559878, - 50.231894 + -95.55987825402588, + 50.23189425522205 ], [ - -95.559809, - 50.232166 + -95.55980865207903, + 50.23216564895256 ], [ - -95.559571, - 50.232441 + -95.5595709638131, + 50.2324407474027 ], [ - -95.559165, - 50.23272 + -95.55916518623326, + 50.23271954958498 ], [ - -95.558757, - 50.232944 + -95.55875651702986, + 50.232944442127575 ], [ - -95.558348, - 50.233169 + -95.5583478439649, + 50.233169333282696 ], [ - -95.557939, - 50.233394 + -95.5579391670383, + 50.233394223050325 ], [ - -95.55753, - 50.233619 + -95.55753048625006, + 50.23361911143042 ], [ - -95.557206, - 50.233842 + -95.55720584702368, + 50.23384214780692 ], [ - -95.556884, - 50.234119 + -95.55688408966645, + 50.23411909166459 ], [ - -95.556562, - 50.234396 + -95.55656232860514, + 50.23439603467564 ], [ - -95.556241, - 50.234673 + -95.55624056383968, + 50.23467297684004 ], [ - -95.556003, - 50.234948 + -95.5560028428165, + 50.234948068382366 ], [ - -95.555681, - 50.235225 + -95.55568107115045, + 50.23522500907874 ], [ - -95.555443, - 50.2355 + -95.55544334423365, + 50.23550009954298 ], [ - -95.555206, - 50.235775 + -95.55520561461955, + 50.23577518955049 ], [ - -95.555136, - 50.236047 + -95.55513598118581, + 50.23604658080679 ], [ - -95.555066, - 50.236318 + -95.55506634701644, + 50.236317972021936 ], [ - -95.555081, - 50.236588 + -95.55508076250054, + 50.23658751404387 ], [ - -95.555011, - 50.236859 + -95.55501112734154, + 50.23685890521982 ], [ - -95.554941, - 50.23713 + -95.55494149144687, + 50.237130296354565 ], [ - -95.554701, - 50.237351 + -95.55470086836644, + 50.237351477021065 ], [ - -95.554376, - 50.237575 + -95.55437619091529, + 50.23757450594462 ], [ - -95.554052, - 50.237798 + -95.55405151043719, + 50.2377975339988 ], [ - -95.553727, - 50.238021 + -95.55372682693208, + 50.23802056118357 ], [ - -95.553727, - 50.238021 + -95.55372682693208, + 50.23802056118357 ], [ - -95.55308, - 50.238521 + -95.5530803318966, + 50.238520521413996 ], [ - -95.552843, - 50.238796 + -95.55284257410611, + 50.238795606890314 ], [ - -95.552521, - 50.239073 + -95.5525207587004, + 50.23907253933683 ], [ - -95.552367, - 50.239346 + -95.55236705043114, + 50.239345776472206 ], [ - -95.552297, - 50.239617 + -95.55229739635189, + 50.23961716620002 ], [ - -95.552312, - 50.239887 + -95.55231179790792, + 50.23988670864981 ], [ - -95.552326, - 50.240156 + -95.55232619968274, + 50.240156251084 ], [ - -95.552425, - 50.240424 + -95.552424658985, + 50.240423946169955 ], [ - -95.552439, - 50.240693 + -95.55243906167047, + 50.240693488555415 ], [ - -95.552453, - 50.240963 + -95.55245346457474, + 50.24096303092529 ], [ - -95.552468, - 50.241233 + -95.55246786769781, + 50.24123257327959 ], [ - -95.552482, - 50.241502 + -95.55248227103971, + 50.24150211561829 ], [ - -95.552497, - 50.241772 + -95.55249667460042, + 50.241771657941406 ], [ - -95.552511, - 50.242041 + -95.55251107837995, + 50.24204120024894 ], [ - -95.552525, - 50.242311 + -95.55252548237831, + 50.242310742540894 ], [ - -95.552456, - 50.242582 + -95.55245582550218, + 50.24258213229042 ], [ - -95.552299, - 50.242801 + -95.5522992256851, + 50.242801460906485 ], [ - -95.552056, - 50.242969 + -95.55205568220181, + 50.24296872805318 ], [ - -95.551728, - 50.243138 + -95.55172807489703, + 50.243137841672166 ], [ - -95.551314, - 50.243255 + -95.55131352325878, + 50.24325489256743 ], [ - -95.550899, - 50.243372 + -95.5508989695444, + 50.24337194201155 ], [ - -95.550487, - 50.243543 + -95.55048729239795, + 50.243542898535715 ], [ - -95.550076, - 50.243714 + -95.55007561227282, + 50.24371385364067 ], [ - -95.549661, - 50.243831 + -95.54966105141877, + 50.243830898763854 ], [ - -95.549249, - 50.244002 + -95.54924936578318, + 50.24400185101466 ], [ - -95.548838, - 50.244173 + -95.54883767716892, + 50.24417280184619 ], [ - -95.548423, - 50.24429 + -95.54842310917522, + 50.24428984264822 ], [ - -95.548011, - 50.244461 + -95.54801141505048, + 50.24446079062545 ], [ - -95.547603, - 50.244686 + -95.54760259345385, + 50.24468564582484 ], [ - -95.547278, - 50.244909 + -95.5472778335258, + 50.2449086559069 ], [ - -95.546953, - 50.245132 + -95.54695307056946, + 50.24513166511901 ], [ - -95.546715, - 50.245407 + -95.5467152455149, + 50.245406738801776 ], [ - -95.546561, - 50.24568 + -95.546561484697, + 50.24567996879638 ], [ - -95.546492, - 50.245951 + -95.54649178958766, + 50.24595135541482 ], [ - -95.546422, - 50.246223 + -95.54642209374154, + 50.24622274199196 ], [ - -95.546436, - 50.246492 + -95.54643646553173, + 50.246492285365896 ], [ - -95.546367, - 50.246764 + -95.54636676869393, + 50.246763671903686 ], [ - -95.546297, - 50.247035 + -95.5462970711193, + 50.2470350584002 ], [ - -95.546143, - 50.247308 + -95.5461433029888, + 50.24730828788763 ], [ - -95.54599, - 50.247582 + -95.54598953314873, + 50.247581517186504 ], [ - -95.545752, - 50.247857 + -95.5457516907899, + 50.24785658906026 ], [ - -95.545598, - 50.24813 + -95.54559791703987, + 50.24812981787802 ], [ - -95.545444, - 50.248403 + -95.54544414158016, + 50.248403046507214 ], [ - -95.545374, - 50.248674 + -95.54537443669209, + 50.24867443249644 ], [ - -95.545305, - 50.248946 + -95.545304731067, + 50.24894581844439 ], [ - -95.545319, - 50.249215 + -95.54531909794159, + 50.24921536192538 ], [ - -95.545333, - 50.249485 + -95.54533346503445, + 50.2494849053908 ], [ - -95.545348, - 50.249754 + -95.54534783234561, + 50.24975444884063 ], [ - -95.545446, - 50.250022 + -95.54544627452294, + 50.250022149735955 ], [ - -95.545545, - 50.25029 + -95.5455447178565, + 50.250289850519906 ], [ - -95.545727, - 50.250556 + -95.54572723791466, + 50.25055570843617 ], [ - -95.54591, - 50.250822 + -95.54590976004958, + 50.250821566023696 ], [ - -95.546176, - 50.251086 + -95.54617636073269, + 50.25108558018728 ], [ - -95.546359, - 50.251351 + -95.54635888747715, + 50.251351436978254 ], [ - -95.546625, - 50.251615 + -95.54662549367295, + 50.25161545000634 ], [ - -95.546892, - 50.251879 + -95.54689210284876, + 50.25187946236676 ], [ - -95.547075, - 50.252145 + -95.54707463673586, + 50.25214531789328 ], [ - -95.547257, - 50.252411 + -95.54725717270001, + 50.25241117309102 ], [ - -95.54744, - 50.252677 + -95.54743971074126, + 50.25267702795994 ], [ - -95.547538, - 50.252945 + -95.54753817121438, + 50.252944726690345 ], [ - -95.547553, - 50.253214 + -95.54755255272546, + 50.253214269517166 ], [ - -95.547651, - 50.253482 + -95.54765101504711, + 50.25348196810305 ], [ - -95.547581, - 50.253753 + -95.54758131640321, + 50.253753355124054 ], [ - -95.547512, - 50.254025 + -95.5475116170223, + 50.25402474210377 ], [ - -95.547442, - 50.254296 + -95.54744191690433, + 50.25429612904219 ], [ - -95.547372, - 50.254568 + -95.5473722160493, + 50.254567515939314 ], [ - -95.547303, - 50.254839 + -95.54730251445719, + 50.25483890279517 ], [ - -95.547317, - 50.255108 + -95.54731689560428, + 50.25510844558308 ], [ - -95.547247, - 50.25538 + -95.54724719302014, + 50.25537983239958 ], [ - -95.547177, - 50.255651 + -95.54717748969888, + 50.255651219174794 ], [ - -95.547192, - 50.255921 + -95.54719187055464, + 50.25592076195104 ], [ - -95.547206, - 50.25619 + -95.54720625162895, + 50.2561903047117 ], [ - -95.547221, - 50.25646 + -95.54722063292179, + 50.25645984745679 ], [ - -95.547319, - 50.256728 + -95.54731910075907, + 50.25672754611524 ], [ - -95.547418, - 50.256995 + -95.54741756975315, + 50.256995244662285 ], [ - -95.547432, - 50.257265 + -95.54743195264865, + 50.25726478732559 ], [ - -95.547446, - 50.257534 + -95.5474463357627, + 50.25753432997331 ], [ - -95.547461, - 50.257804 + -95.54746071909534, + 50.257803872605464 ], [ - -95.547475, - 50.258073 + -95.54747510264654, + 50.258073415222036 ], [ - -95.547489, - 50.258343 + -95.54748948641634, + 50.258342957823025 ], [ - -95.547504, - 50.258613 + -95.54750387040471, + 50.25861250040844 ], [ - -95.547518, - 50.258882 + -95.54751825461167, + 50.25888204297828 ], [ - -95.547449, - 50.259153 + -95.54744854845832, + 50.25915342982219 ], [ - -95.547379, - 50.259425 + -95.54737884156769, + 50.259424816624794 ], [ - -95.547309, - 50.259696 + -95.54730913393976, + 50.2596962033861 ], [ - -95.547239, - 50.259968 + -95.54723942557455, + 50.259967590106115 ], [ - -95.547086, - 50.260241 + -95.54708562395508, + 50.26024082084064 ], [ - -95.547016, - 50.260512 + -95.54701591363286, + 50.260512207434786 ], [ - -95.546946, - 50.260784 + -95.54694620257328, + 50.260783593987625 ], [ - -95.546876, - 50.261055 + -95.54687649077631, + 50.26105498049917 ], [ - -95.546807, - 50.261326 + -95.54680677824196, + 50.2613263669694 ], [ - -95.546737, - 50.261598 + -95.54673706497017, + 50.26159775339832 ], [ - -95.546583, - 50.261871 + -95.5465832555412, + 50.26187098352137 ], [ - -95.546345, - 50.262146 + -95.54634534848167, + 50.262146057026385 ], [ - -95.54602, - 50.262369 + -95.54602046675927, + 50.262369064876424 ], [ - -95.545611, - 50.262594 + -95.54561148524954, + 50.262593914907356 ], [ - -95.5452, - 50.262765 + -95.54519962522545, + 50.26276485497556 ], [ - -95.544788, - 50.262936 + -95.54478776221971, + 50.26293579362334 ], [ - -95.544373, - 50.263053 + -95.5443730224894, + 50.26305282224571 ], [ - -95.543961, - 50.263224 + -95.54396115396779, + 50.26322375803692 ], [ - -95.543546, - 50.263341 + -95.54354640962529, + 50.26334078377077 ], [ - -95.543135, - 50.263512 + -95.54313453558782, + 50.26351171670531 ], [ - -95.542723, - 50.263683 + -95.54272265856868, + 50.26368264821931 ], [ - -95.542314, - 50.263907 + -95.54231365006459, + 50.263907486996494 ], [ - -95.541989, - 50.26413 + -95.54198873739921, + 50.26413048397366 ], [ - -95.541667, - 50.264407 + -95.54166669251958, + 50.264407388786196 ], [ - -95.541345, - 50.264684 + -95.54134464392888, + 50.26468429275034 ], [ - -95.541107, - 50.264959 + -95.54110669285083, + 50.264959356072275 ], [ - -95.540869, - 50.265234 + -95.54086873907006, + 50.265234418936394 ], [ - -95.540631, - 50.265509 + -95.54063078258652, + 50.265509481342676 ], [ - -95.540393, - 50.265785 + -95.54039282340014, + 50.26578454329109 ], [ - -95.540155, - 50.26606 + -95.54015486151089, + 50.266059604781645 ], [ - -95.539917, - 50.266335 + -95.53991689691867, + 50.266334665814306 ], [ - -95.539679, - 50.26661 + -95.53967892962345, + 50.266609726389056 ], [ - -95.539441, - 50.266885 + -95.53944095962518, + 50.2668847865059 ], [ - -95.539203, - 50.26716 + -95.53920298692378, + 50.267159846164816 ], [ - -95.538962, - 50.267381 + -95.53896214344363, + 50.26738099657493 ], [ - -95.538634, - 50.26755 + -95.53863432399424, + 50.26755007584616 ], [ - -95.538304, - 50.267665 + -95.53830363484859, + 50.26766524540705 ], [ - -95.537889, - 50.267782 + -95.53788883768615, + 50.26778225164903 ], [ - -95.537471, - 50.267845 + -95.53747117200598, + 50.26784534758942 ], [ - -95.537056, - 50.267962 + -95.5370563711437, + 50.267962350909514 ], [ - -95.536642, - 50.268079 + -95.53664156820334, + 50.26807935277673 ], [ - -95.536227, - 50.268196 + -95.53622676318491, + 50.26819635319107 ], [ - -95.535809, - 50.268259 + -95.53580909148309, + 50.268259443238236 ], [ - -95.535391, - 50.268323 + -95.53539141862476, + 50.26832253179943 ], [ - -95.534974, - 50.268386 + -95.53497374460993, + 50.26838561887463 ], [ - -95.534556, - 50.268449 + -95.53455606943864, + 50.26844870446386 ], [ - -95.534138, - 50.268512 + -95.53413839311092, + 50.26851178856707 ], [ - -95.533718, - 50.268521 + -95.53371785335578, + 50.26852096218524 ], [ - -95.5333, - 50.268584 + -95.53330017518041, + 50.26858404329961 ], [ - -95.532882, - 50.268647 + -95.53288249584872, + 50.26864712292795 ], [ - -95.532552, - 50.268762 + -95.53255178471423, + 50.26876227641596 ], [ - -95.532224, - 50.268931 + -95.53222393257654, + 50.26893133804237 ], [ - -95.531986, - 50.269206 + -95.53198590795539, + 50.26920638360635 ], [ - -95.531748, - 50.269481 + -95.53174788063029, + 50.26948142871207 ], [ - -95.531594, - 50.269755 + -95.53159396088925, + 50.26975464032271 ], [ - -95.531356, - 50.27003 + -95.53135592865603, + 50.27002968467687 ], [ - -95.531202, - 50.270303 + -95.53120200499794, + 50.270302895805145 ], [ - -95.531048, - 50.270576 + -95.53104807962691, + 50.27057610674432 ], [ - -95.530978, - 50.270847 + -95.53097826479599, + 50.27084748487442 ], [ - -95.530908, - 50.271119 + -95.53090844922589, + 50.27111886296304 ], [ - -95.530923, - 50.271388 + -95.53092274612622, + 50.27138840841615 ], [ - -95.530937, - 50.271658 + -95.53093704324388, + 50.271657953853705 ], [ - -95.530951, - 50.271927 + -95.53095134057884, + 50.27192749927573 ], [ - -95.53105, - 50.272195 + -95.53104975275383, + 50.27219521197513 ], [ - -95.531148, - 50.272463 + -95.53114816608533, + 50.27246292456331 ], [ - -95.531331, - 50.272729 + -95.53133069611788, + 50.27272880411588 ], [ - -95.531513, - 50.272995 + -95.53151322822882, + 50.272994683339896 ], [ - -95.531696, - 50.273261 + -95.5316957624182, + 50.27326056223537 ], [ - -95.531878, - 50.273526 + -95.53187829868607, + 50.273526440802314 ], [ - -95.532145, - 50.27379 + -95.53214495439458, + 50.273790485499156 ], [ - -95.532327, - 50.274056 + -95.53232749527614, + 50.274056363269885 ], [ - -95.532594, - 50.27432 + -95.53259415650292, + 50.27432040683151 ], [ - -95.532861, - 50.274584 + -95.53286082071288, + 50.27458444972556 ], [ - -95.533043, - 50.27485 + -95.53304336874363, + 50.274850326232354 ], [ - -95.533142, - 50.275118 + -95.5331417992254, + 50.27511803676914 ], [ - -95.53324, - 50.275386 + -95.53324023086404, + 50.2753857471947 ], [ - -95.533339, - 50.275653 + -95.53333866365958, + 50.27565345750898 ], [ - -95.533437, - 50.275921 + -95.53343709761204, + 50.27592116771203 ], [ - -95.533536, - 50.276189 + -95.53353553272143, + 50.2761888778038 ], [ - -95.533634, - 50.276457 + -95.5336339689878, + 50.27645658778431 ], [ - -95.533732, - 50.276724 + -95.53373240641118, + 50.276724297653566 ], [ - -95.533747, - 50.276994 + -95.53374672209779, + 50.276993842257234 ], [ - -95.533761, - 50.277263 + -95.53376103800201, + 50.277263386845355 ], [ - -95.533859, - 50.277531 + -95.53385947796578, + 50.277531096537366 ], [ - -95.533958, - 50.277799 + -95.53395791908663, + 50.277798806118085 ], [ - -95.53414, - 50.278065 + -95.53414048612856, + 50.27806468048959 ], [ - -95.534323, - 50.278331 + -95.53432305524969, + 50.27833055453241 ], [ - -95.534506, - 50.278596 + -95.53450562645006, + 50.278596428246544 ], [ - -95.534688, - 50.278862 + -95.53468819972973, + 50.278862301632 ], [ - -95.534871, - 50.279128 + -95.53487077508873, + 50.279128174688765 ], [ - -95.534969, - 50.279396 + -95.53496922547967, + 50.27939588321039 ], [ - -95.535152, - 50.279662 + -95.53515180454076, + 50.27966175574886 ], [ - -95.535334, - 50.279928 + -95.53533438568131, + 50.279927627958614 ], [ - -95.535433, - 50.280195 + -95.53543284047507, + 50.28019533598976 ], [ - -95.535615, - 50.280461 + -95.53561542531793, + 50.2804612076812 ], [ - -95.535798, - 50.280727 + -95.53579801224038, + 50.28072707904389 ], [ - -95.535812, - 50.280997 + -95.53581234162331, + 50.280996623030376 ], [ - -95.535743, - 50.281268 + -95.5357425409273, + 50.28126800340378 ], [ - -95.535589, - 50.281541 + -95.53558860870369, + 50.28154122003395 ], [ - -95.535266, - 50.281818 + -95.53526641218028, + 50.28181810868061 ], [ - -95.53486, - 50.282097 + -95.53486008012673, + 50.28209683226358 ], [ - -95.534454, - 50.282376 + -95.53445374333138, + 50.28237555448455 ], [ - -95.534132, - 50.282652 + -95.53413153464473, + 50.28265244013138 ], [ - -95.533893, - 50.282927 + -95.53389345559376, + 50.28292748988175 ], [ - -95.533824, - 50.283199 + -95.53382364151322, + 50.28319886922727 ], [ - -95.533838, - 50.283468 + -95.5338379610013, + 50.283468413510214 ], [ - -95.534021, - 50.283734 + -95.53402055024554, + 50.283734287518 ], [ - -95.534203, - 50.284 + -95.53420314156966, + 50.28400016119706 ], [ - -95.53447, - 50.284264 + -95.53446987064352, + 50.28426419904805 ], [ - -95.534652, - 50.28453 + -95.53465246658432, + 50.284530071930504 ], [ - -95.534835, - 50.284796 + -95.5348350646051, + 50.284795944484195 ], [ - -95.535018, - 50.285062 + -95.53501766470593, + 50.285061816709145 ], [ - -95.5352, - 50.285328 + -95.53520026688683, + 50.28532768860532 ], [ - -95.535383, - 50.285594 + -95.53538287114787, + 50.28559356017272 ], [ - -95.535565, - 50.285859 + -95.53556547748906, + 50.28585943141134 ], [ - -95.535832, - 50.286123 + -95.5358322247696, + 50.2861234657869 ], [ - -95.536099, - 50.286387 + -95.53609897503546, + 50.286387499494474 ], [ - -95.53645, - 50.28665 + -95.53644986803343, + 50.28664969553892 ], [ - -95.536801, - 50.286912 + -95.53680076490444, + 50.286911890454476 ], [ - -95.537152, - 50.287174 + -95.53715166564855, + 50.2871740842411 ], [ - -95.537418, - 50.287438 + -95.5374184292007, + 50.28743811467654 ], [ - -95.537601, - 50.287704 + -95.53760105421638, + 50.28770398236087 ], [ - -95.5377, - 50.287972 + -95.53769953932495, + 50.287971687711604 ], [ - -95.537798, - 50.288239 + -95.53779802559158, + 50.28823939295097 ], [ - -95.537897, - 50.288507 + -95.5378965130163, + 50.28850709807897 ], [ - -95.537995, - 50.288775 + -95.53799500159913, + 50.28877480309561 ], [ - -95.538093, - 50.289043 + -95.53809349134009, + 50.289042508000875 ], [ - -95.538192, - 50.28931 + -95.53819198223923, + 50.28931021279478 ], [ - -95.538206, - 50.28958 + -95.53820632950627, + 50.289579755881725 ], [ - -95.538221, - 50.289849 + -95.53822067699146, + 50.28984929895312 ], [ - -95.538235, - 50.290119 + -95.5382350246948, + 50.29011884200898 ], [ - -95.538334, - 50.290387 + -95.53833351882977, + 50.29038654659239 ], [ - -95.538432, - 50.290654 + -95.53843201412302, + 50.290654251064424 ], [ - -95.538531, - 50.290922 + -95.53853051057455, + 50.29092195542508 ], [ - -95.538629, - 50.29119 + -95.53862900818439, + 50.29118965967436 ] - ], - "type": "LineString" - }, - "type": "Feature" + ] + } } ] } \ No newline at end of file diff --git a/tests/test_data/api_query_results_geojson_lakes.json b/tests/test_data/api_query_results_geojson_lakes.json new file mode 100644 index 00000000..826e4298 --- /dev/null +++ b/tests/test_data/api_query_results_geojson_lakes.json @@ -0,0 +1,29 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "id": "0", + "type": "Feature", + "properties": { + "lake_id": "9120274662", + "time_str": "no_data", + "wse": "-999999999999.0", + "area_total": "-999999999999.0", + "quality_f": "-999", + "collection_shortname": "SWOT_L2_HR_LakeSP_2.0", + "crid": "PIC0", + "PLD_version": "105", + "range_start_time": "2024-07-13T11:17:41Z", + "wse_units": "m", + "area_total_units": "km^2" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -20.455824376849105, + -25.566241858842833 + ] + } + } + ] +} \ No newline at end of file diff --git a/tests/test_data/api_query_results_items_lake.json b/tests/test_data/api_query_results_items_lake.json new file mode 100644 index 00000000..2730c5b9 --- /dev/null +++ b/tests/test_data/api_query_results_items_lake.json @@ -0,0 +1,202 @@ +[ + { + "area_total": "-999999999999.0", + "ds2_l_units": "km^3", + "ds2_q": "-999999999999.0", + "area_detct_units": "km^2", + "ds2_l": "-999999999999.0", + "p_lat": "68.693765", + "wse": "-999999999999.0", + "lake_name": "no_data", + "granuleUR": "SWOT_L2_HR_LakeSP_Prior_017_100_GR_20240622T143344_20240622T143523_PIC0_01.zip", + "wse_std": "-999999999999.0", + "p_lon_units": "degrees_east", + "time_tai": "-999999999999.0", + "p_date_t0": "no_data", + "ds1_q_u_units": "km^3", + "iono_c_units": "m", + "reach_id": "no_data", + "xtrk_dist_units": "m", + "ds1_l_u": "-999999999999.0", + "wse_units": "m", + "geoid_hght_units": "m", + "wse_u_units": "m", + "ds1_q_units": "km^3", + "area_det_u": "-999999999999.0", + "wse_std_units": "m", + "ds2_q_u_units": "km^3", + "load_tideg": "-999999999999.0", + "ds1_q": "-999999999999.0", + "ingest_time": "2024-08-06T15:08:48Z", + "dark_frac_units": "1", + "wse_r_u": "-999999999999.0", + "load_tidef": "-999999999999.0", + "p_lat_units": "degrees_north", + "xovr_cal_c_units": "m", + "ds1_l": "-999999999999.0", + "collection_version": "2.0", + "p_ref_area_units": "km^2", + "dry_trop_c": "-999999999999.0", + "lake_id": "9120274662", + "ds2_q_u": "-999999999999.0", + "geometry": "POINT (-20.455824376849105 -25.566241858842833)", + "wse_u": "-999999999999.0", + "range_start_time": "2024-06-22T14:33:44Z", + "quality_f": "-999", + "dark_frac": "-999999999999.0", + "p_res_id": "-99999999", + "range_end_time": "2024-06-22T14:35:23Z", + "time_str": "no_data", + "wse_r_u_units": "m", + "PLD_version": "105", + "partial_f": "-999", + "load_tidef_units": "m", + "wet_trop_c_units": "m", + "p_storage": "-999999999999.0", + "area_tot_u_units": "km^2", + "n_overlap": "no_data", + "area_det_u_units": "km^2", + "pole_tide": "-999999999999.0", + "collection_shortname": "SWOT_L2_HR_LakeSP_2.0", + "p_ref_wse": "-999999999999.0", + "solid_tide_units": "m", + "p_lon": "-52.412107", + "p_ref_area": "0.047663", + "overlap": "no_data", + "time_units": "seconds since 2000-01-01 00:00:00.000", + "area_total_units": "km^2", + "ice_dyn_f": "-999", + "obs_id": "no_data", + "ds1_l_u_units": "km^3", + "p_storage_units": "km^3", + "area_detct": "-999999999999.0", + "ds2_l_u": "-999999999999.0", + "xovr_cal_c": "-999999999999.0", + "ds1_l_units": "km^3", + "pass_id": "100", + "ds2_q_units": "km^3", + "time_tai_units": "seconds since 2000-01-01 00:00:00.000", + "pole_tide_units": "m", + "ds2_l_u_units": "km^3", + "area_tot_u": "-999999999999.0", + "load_tideg_units": "m", + "p_ds_t0": "-999999999999.0", + "layovr_val": "-999999999999.0", + "xtrk_dist": "-999999999999.0", + "xovr_cal_q": "-999", + "geoid_hght": "-999999999999.0", + "layovr_val_units": "TBD", + "continent_id": "GR", + "p_ref_wse_units": "m", + "ice_clim_f": "1", + "dry_trop_c_units": "m", + "ds1_q_u": "-999999999999.0", + "p_ds_t0_units": "km^3", + "cycle_id": "017", + "crid": "PIC0", + "solid_tide": "-999999999999.0", + "wet_trop_c": "-999999999999.0", + "iono_c": "-999999999999.0", + "time": "-999999999999.0" + }, + { + "area_total": "-999999999999.0", + "ds2_l_units": "km^3", + "ds2_q": "-999999999999.0", + "area_detct_units": "km^2", + "ds2_l": "-999999999999.0", + "p_lat": "68.693765", + "wse": "-999999999999.0", + "lake_name": "no_data", + "granuleUR": "SWOT_L2_HR_LakeSP_Prior_018_100_GR_20240713T111741_20240713T112027_PIC0_01.zip", + "wse_std": "-999999999999.0", + "p_lon_units": "degrees_east", + "time_tai": "-999999999999.0", + "p_date_t0": "no_data", + "ds1_q_u_units": "km^3", + "iono_c_units": "m", + "reach_id": "no_data", + "xtrk_dist_units": "m", + "ds1_l_u": "-999999999999.0", + "wse_units": "m", + "geoid_hght_units": "m", + "wse_u_units": "m", + "ds1_q_units": "km^3", + "area_det_u": "-999999999999.0", + "wse_std_units": "m", + "ds2_q_u_units": "km^3", + "load_tideg": "-999999999999.0", + "ds1_q": "-999999999999.0", + "ingest_time": "2024-08-06T15:08:41Z", + "dark_frac_units": "1", + "wse_r_u": "-999999999999.0", + "load_tidef": "-999999999999.0", + "p_lat_units": "degrees_north", + "xovr_cal_c_units": "m", + "ds1_l": "-999999999999.0", + "collection_version": "2.0", + "p_ref_area_units": "km^2", + "dry_trop_c": "-999999999999.0", + "lake_id": "9120274662", + "ds2_q_u": "-999999999999.0", + "geometry": "POINT (-20.455824376849105 -25.566241858842833)", + "wse_u": "-999999999999.0", + "range_start_time": "2024-07-13T11:17:41Z", + "quality_f": "-999", + "dark_frac": "-999999999999.0", + "p_res_id": "-99999999", + "range_end_time": "2024-07-13T11:20:27Z", + "time_str": "no_data", + "wse_r_u_units": "m", + "PLD_version": "105", + "partial_f": "-999", + "load_tidef_units": "m", + "wet_trop_c_units": "m", + "p_storage": "-999999999999.0", + "area_tot_u_units": "km^2", + "n_overlap": "no_data", + "area_det_u_units": "km^2", + "pole_tide": "-999999999999.0", + "collection_shortname": "SWOT_L2_HR_LakeSP_2.0", + "p_ref_wse": "-999999999999.0", + "solid_tide_units": "m", + "p_lon": "-52.412107", + "p_ref_area": "0.047663", + "overlap": "no_data", + "time_units": "seconds since 2000-01-01 00:00:00.000", + "area_total_units": "km^2", + "ice_dyn_f": "-999", + "obs_id": "no_data", + "ds1_l_u_units": "km^3", + "p_storage_units": "km^3", + "area_detct": "-999999999999.0", + "ds2_l_u": "-999999999999.0", + "xovr_cal_c": "-999999999999.0", + "ds1_l_units": "km^3", + "pass_id": "100", + "ds2_q_units": "km^3", + "time_tai_units": "seconds since 2000-01-01 00:00:00.000", + "pole_tide_units": "m", + "ds2_l_u_units": "km^3", + "area_tot_u": "-999999999999.0", + "load_tideg_units": "m", + "p_ds_t0": "-999999999999.0", + "layovr_val": "-999999999999.0", + "xtrk_dist": "-999999999999.0", + "xovr_cal_q": "-999", + "geoid_hght": "-999999999999.0", + "layovr_val_units": "TBD", + "continent_id": "GR", + "p_ref_wse_units": "m", + "ice_clim_f": "0", + "dry_trop_c_units": "m", + "ds1_q_u": "-999999999999.0", + "p_ds_t0_units": "km^3", + "cycle_id": "018", + "crid": "PIC0", + "solid_tide": "-999999999999.0", + "wet_trop_c": "-999999999999.0", + "iono_c": "-999999999999.0", + "time": "-999999999999.0" + } +] \ No newline at end of file diff --git a/tests/test_data/query_cmr_granule_results.json b/tests/test_data/query_cmr_granule_results.json new file mode 100644 index 00000000..bdc137f3 --- /dev/null +++ b/tests/test_data/query_cmr_granule_results.json @@ -0,0 +1,442 @@ +{ + "SWOT_L2_HR_RiverSP_Reach_017_117_SA_20240623T051259_20240623T051310_PIC0_01": { + "revision_date": "2024-06-30T01:33:13.037Z", + "checksum": "edda7230d20f1a85bae82f9917c86aa1" + }, + "SWOT_L2_HR_RiverSP_Reach_017_117_GR_20240623T054620_20240623T054631_PIC0_01": { + "revision_date": "2024-06-30T01:33:17.466Z", + "checksum": "3c0967bda14e6cd82fa28742cd44a21e" + }, + "SWOT_L2_HR_RiverSP_Reach_017_124_GR_20240623T110500_20240623T110505_PIC0_01": { + "revision_date": "2024-06-30T01:34:00.170Z", + "checksum": "94eeafb0da0583437b52f3358d6b2390" + }, + "SWOT_L2_HR_RiverSP_Reach_017_124_EU_20240623T110959_20240623T111005_PIC0_01": { + "revision_date": "2024-06-30T01:34:01.340Z", + "checksum": "1f91ad708e027c59d61bade498f8d60e" + }, + "SWOT_L2_HR_RiverSP_Reach_017_124_AF_20240623T112429_20240623T112435_PIC0_01": { + "revision_date": "2024-06-30T01:34:05.374Z", + "checksum": "8933a6c98f7c244dc8ac528b81d77e06" + }, + "SWOT_L2_HR_RiverSP_Reach_017_132_AR_20240623T175719_20240623T175729_PIC0_01": { + "revision_date": "2024-06-30T01:34:40.642Z", + "checksum": "9878ca07afac703ec3ec7f2612583172" + }, + "SWOT_L2_HR_RiverSP_Reach_017_132_NA_20240623T180323_20240623T180329_PIC0_01": { + "revision_date": "2024-06-30T01:34:43.508Z", + "checksum": "dc4f428acdfeb2916fbc11d19ae3e81f" + }, + "SWOT_L2_HR_RiverSP_Reach_017_132_SA_20240623T181748_20240623T181750_PIC0_01": { + "revision_date": "2024-06-30T01:34:46.518Z", + "checksum": "8b2330a6d84e3cf2d7f24b51c609a0ad" + }, + "SWOT_L2_HR_RiverSP_Reach_017_137_AF_20240623T223217_20240623T223228_PIC0_01": { + "revision_date": "2024-06-30T01:35:07.001Z", + "checksum": "c06d7348ec65dd81cc57791eabfad7ba" + }, + "SWOT_L2_HR_RiverSP_Reach_017_137_EU_20240623T224638_20240623T224647_PIC0_01": { + "revision_date": "2024-06-30T01:35:09.635Z", + "checksum": "013e14741ef815e6000af79515248909" + }, + "SWOT_L2_HR_RiverSP_Reach_017_137_SI_20240623T225526_20240623T225537_PIC0_01": { + "revision_date": "2024-06-30T01:35:13.105Z", + "checksum": "46a58709b4136192bde2e404ff5c0755" + }, + "SWOT_L2_HR_RiverSP_Reach_017_139_AF_20240624T001830_20240624T001831_PIC0_01": { + "revision_date": "2024-06-30T01:35:18.808Z", + "checksum": "6472608fe5510b248c21fb3c9fbd3492" + }, + "SWOT_L2_HR_RiverSP_Reach_017_139_EU_20240624T003149_20240624T003151_PIC0_01": { + "revision_date": "2024-06-30T01:35:21.812Z", + "checksum": "394dcb72ad5d1413ada4bf518eea8cae" + }, + "SWOT_L2_HR_RiverSP_Reach_017_145_SA_20240624T051420_20240624T051431_PIC0_01": { + "revision_date": "2024-06-30T01:35:48.514Z", + "checksum": "d20a744c82f961dfe834f8be11c6b770" + }, + "SWOT_L2_HR_RiverSP_Reach_017_145_NA_20240624T054257_20240624T054302_PIC0_01": { + "revision_date": "2024-06-30T01:35:51.468Z", + "checksum": "298021087492c2014910fc9829340465" + }, + "SWOT_L2_HR_RiverSP_Reach_017_145_GR_20240624T054704_20240624T054712_PIC0_01": { + "revision_date": "2024-06-30T01:35:54.191Z", + "checksum": "477b93aa3accb94ef68bdbf9329e16a2" + }, + "SWOT_L2_HR_RiverSP_Reach_017_146_EU_20240624T055730_20240624T055735_PIC0_01": { + "revision_date": "2024-06-30T01:35:57.042Z", + "checksum": "e8ffa4ef462168a5ff2816a93d38284f" + }, + "SWOT_L2_HR_RiverSP_Reach_017_146_SI_20240624T055852_20240624T055855_PIC0_01": { + "revision_date": "2024-06-30T01:36:01.305Z", + "checksum": "30371a8eb0f89645c4e5e4f82e0e8724" + }, + "SWOT_L2_HR_RiverSP_Reach_017_146_AS_20240624T060644_20240624T060655_PIC0_01": { + "revision_date": "2024-06-30T01:36:03.916Z", + "checksum": "9f8cd5ac3ae38e4d653e83d8704d76ce" + }, + "SWOT_L2_HR_RiverSP_Reach_017_146_AU_20240624T062004_20240624T062015_PIC0_01": { + "revision_date": "2024-06-30T01:36:06.386Z", + "checksum": "e439a5b8095a92f9595827473ec6ffa2" + }, + "SWOT_L2_HR_RiverSP_Reach_017_148_EU_20240624T074303_20240624T074309_PIC0_01": { + "revision_date": "2024-06-30T01:36:07.868Z", + "checksum": "bdf7457f69f1ecc9ffbc9365204cd144" + }, + "SWOT_L2_HR_RiverSP_Reach_017_148_SI_20240624T074508_20240624T074519_PIC0_01": { + "revision_date": "2024-06-30T01:36:10.534Z", + "checksum": "e967ccf3730f6d03b2c539447f15f5df" + }, + "SWOT_L2_HR_RiverSP_Reach_017_148_AS_20240624T074808_20240624T074819_PIC0_01": { + "revision_date": "2024-06-30T01:36:13.183Z", + "checksum": "8577783c8b87cd80f8d2f445854dc893" + }, + "SWOT_L2_HR_RiverSP_Reach_017_149_NA_20240624T090207_20240624T090209_PIC0_01": { + "revision_date": "2024-06-30T01:36:17.102Z", + "checksum": "09ab02065330c3cd2575f2dae21ab738" + }, + "SWOT_L2_HR_RiverSP_Reach_017_149_AR_20240624T091218_20240624T091229_PIC0_01": { + "revision_date": "2024-06-30T01:36:19.542Z", + "checksum": "344195c24886a093e7111c0dee63eb55" + }, + "SWOT_L2_HR_RiverSP_Reach_017_149_GR_20240624T091842_20240624T091850_PIC0_01": { + "revision_date": "2024-06-30T01:36:20.896Z", + "checksum": "60e6aece04610ec4d423c94e2bad755f" + }, + "SWOT_L2_HR_RiverSP_Reach_017_150_GR_20240624T092044_20240624T092052_PIC0_01": { + "revision_date": "2024-06-30T01:36:23.601Z", + "checksum": "5d1b9a13de4354d80f8cd2cc438ab9e2" + }, + "SWOT_L2_HR_RiverSP_Reach_017_150_EU_20240624T092516_20240624T092522_PIC0_01": { + "revision_date": "2024-06-30T01:36:26.362Z", + "checksum": "e59eef9799523c701bc9b4c100cd1fd9" + }, + "SWOT_L2_HR_RiverSP_Reach_017_152_GR_20240624T110552_20240624T110556_PIC0_01": { + "revision_date": "2024-06-30T01:36:37.023Z", + "checksum": "3f2175d955eb0255753d4aeeb7a5baff" + }, + "SWOT_L2_HR_RiverSP_Reach_017_152_EU_20240624T111046_20240624T111056_PIC0_01": { + "revision_date": "2024-06-30T01:36:40.073Z", + "checksum": "0feebb2dc94a637e5b8b24a0e2c5e405" + }, + "SWOT_L2_HR_RiverSP_Reach_017_152_AF_20240624T112457_20240624T112506_PIC0_01": { + "revision_date": "2024-06-30T01:36:42.796Z", + "checksum": "1cec60eb886f1eba0c911aa78befcd28" + }, + "SWOT_L2_HR_RiverSP_Reach_017_158_AR_20240624T161520_20240624T161526_PIC0_01": { + "revision_date": "2024-06-30T01:37:08.652Z", + "checksum": "a62a99b85b414543141d104cf05bfc62" + }, + "SWOT_L2_HR_RiverSP_Reach_017_158_NA_20240624T161947_20240624T161957_PIC0_01": { + "revision_date": "2024-06-30T01:37:10.046Z", + "checksum": "a8fd07dd14a2e16fb3279adc99b65296" + }, + "SWOT_L2_HR_RiverSP_Reach_017_158_SA_20240624T163620_20240624T163627_PIC0_01": { + "revision_date": "2024-06-30T01:37:12.720Z", + "checksum": "432bdd428510ce811faa954ac9a2a799" + }, + "SWOT_L2_HR_RiverSP_Reach_017_159_AU_20240624T172707_20240624T172713_PIC0_01": { + "revision_date": "2024-06-30T01:37:15.619Z", + "checksum": "b4eac61e405e4e3ddd8ae1bc69746abc" + }, + "SWOT_L2_HR_RiverSP_Reach_017_159_AS_20240624T173641_20240624T173647_PIC0_01": { + "revision_date": "2024-06-30T01:37:18.402Z", + "checksum": "c2fe43fb0ff7136ce534a0aee8fedd9c" + }, + "SWOT_L2_HR_RiverSP_Reach_017_159_SI_20240624T174546_20240624T174557_PIC0_01": { + "revision_date": "2024-06-30T01:37:21.478Z", + "checksum": "582c5c3fcf99a3f12748a35911ca2957" + }, + "SWOT_L2_HR_RiverSP_Reach_017_160_AR_20240624T175753_20240624T175800_PIC0_01": { + "revision_date": "2024-06-30T01:37:24.224Z", + "checksum": "f6696681bdc85e06b3c1ace8d2662ecd" + }, + "SWOT_L2_HR_RiverSP_Reach_017_160_NA_20240624T180249_20240624T180300_PIC0_01": { + "revision_date": "2024-06-30T01:37:28.243Z", + "checksum": "8608bea271b35a2a256157a333846e3b" + }, + "SWOT_L2_HR_RiverSP_Reach_017_160_SA_20240624T181801_20240624T181810_PIC0_01": { + "revision_date": "2024-06-30T01:37:29.767Z", + "checksum": "0108f47ff5f09d8ba2d7ea005e852bf7" + }, + "SWOT_L2_HR_RiverSP_Reach_017_161_AS_20240624T191826_20240624T191831_PIC0_01": { + "revision_date": "2024-06-30T01:37:32.740Z", + "checksum": "0113ec8d72d04ec789881f8a4bddb0e3" + }, + "SWOT_L2_HR_RiverSP_Reach_017_161_SI_20240624T192550_20240624T192601_PIC0_01": { + "revision_date": "2024-06-30T01:37:36.476Z", + "checksum": "68bd5074a448d9d2a7776785e0665b9a" + }, + "SWOT_L2_HR_RiverSP_Reach_017_162_AR_20240624T194233_20240624T194244_PIC0_01": { + "revision_date": "2024-06-30T01:37:39.364Z", + "checksum": "1e813e6850b9907da0ff195deae2052f" + }, + "SWOT_L2_HR_RiverSP_Reach_017_162_NA_20240624T194803_20240624T194814_PIC0_01": { + "revision_date": "2024-06-30T01:37:42.085Z", + "checksum": "cfa61d84ee42eddd8bc45927cc5d145a" + }, + "SWOT_L2_HR_RiverSP_Reach_017_163_AS_20240624T210224_20240624T210234_PIC0_01": { + "revision_date": "2024-06-30T01:37:44.877Z", + "checksum": "14c8fca412fb1e9d2ae4cdf7d8f10f90" + }, + "SWOT_L2_HR_RiverSP_Reach_017_163_EU_20240624T210403_20240624T210414_PIC0_01": { + "revision_date": "2024-06-30T01:37:47.664Z", + "checksum": "9f004a97eee17c4e7244ed26689c3069" + }, + "SWOT_L2_HR_RiverSP_Reach_017_163_SI_20240624T210923_20240624T210934_PIC0_01": { + "revision_date": "2024-06-30T01:37:50.261Z", + "checksum": "af61940cad0de6b8c8912137b751d823" + }, + "SWOT_L2_HR_RiverSP_Reach_017_165_AF_20240624T222947_20240624T222948_PIC0_01": { + "revision_date": "2024-06-30T01:37:55.508Z", + "checksum": "11e09d9673f175b95d3ef6ee23c66e05" + }, + "SWOT_L2_HR_RiverSP_Reach_017_165_EU_20240624T224741_20240624T224748_PIC0_01": { + "revision_date": "2024-06-30T01:37:58.390Z", + "checksum": "e7d165b53d0e0909c259ab9d8a679467" + }, + "SWOT_L2_HR_RiverSP_Reach_017_165_SI_20240624T225647_20240624T225658_PIC0_01": { + "revision_date": "2024-06-30T01:38:01.232Z", + "checksum": "0bfe09363e365aa1f8312b9145378b28" + }, + "SWOT_L2_HR_RiverSP_Reach_017_167_AF_20240625T001959_20240625T002002_PIC0_01": { + "revision_date": "2024-06-30T01:38:06.220Z", + "checksum": "6ce0d761af62011bb9c6b3770c49c41a" + }, + "SWOT_L2_HR_RiverSP_Reach_017_167_EU_20240625T003315_20240625T003322_PIC0_01": { + "revision_date": "2024-06-30T01:38:08.989Z", + "checksum": "e773e4dbd8e70bdf8a9272c31cc2c426" + }, + "SWOT_L2_HR_RiverSP_Reach_017_168_SI_20240625T004713_20240625T004714_PIC0_01": { + "revision_date": "2024-06-30T01:38:13.092Z", + "checksum": "760ed362642546e6cc5ad081e7720afa" + }, + "SWOT_L2_HR_RiverSP_Reach_017_169_AF_20240625T020631_20240625T020636_PIC0_01": { + "revision_date": "2024-06-30T01:38:14.441Z", + "checksum": "e3133380abf3c4bc15e5a641f2363d77" + }, + "SWOT_L2_HR_RiverSP_Reach_017_169_EU_20240625T021443_20240625T021445_PIC0_01": { + "revision_date": "2024-06-30T01:38:17.361Z", + "checksum": "98d0e2f8674834b50659d348261cfaef" + }, + "SWOT_L2_HR_RiverSP_Reach_017_170_SI_20240625T023132_20240625T023138_PIC0_01": { + "revision_date": "2024-06-30T01:38:20.151Z", + "checksum": "2e41df807623b5b8dff53279ca091c01" + }, + "SWOT_L2_HR_RiverSP_Reach_017_170_AS_20240625T023917_20240625T023919_PIC0_01": { + "revision_date": "2024-06-30T01:38:23.795Z", + "checksum": "0929ee48342206e92213697f6b72a089" + }, + "SWOT_L2_HR_RiverSP_Reach_017_171_SA_20240625T034001_20240625T034009_PIC0_01": { + "revision_date": "2024-06-30T01:38:26.649Z", + "checksum": "7d65b41d9d23a16fb8302319011ba06e" + }, + "SWOT_L2_HR_RiverSP_Reach_017_171_EU_20240625T040542_20240625T040549_PIC0_01": { + "revision_date": "2024-06-30T01:38:29.379Z", + "checksum": "e6df4579ba3a1644d205fec0b09d91bc" + }, + "SWOT_L2_HR_RiverSP_Reach_017_172_EU_20240625T041400_20240625T041402_PIC0_01": { + "revision_date": "2024-06-30T01:38:33.453Z", + "checksum": "fb250364f9d5fca9a3b64c5a5c84236e" + }, + "SWOT_L2_HR_RiverSP_Reach_017_172_SI_20240625T041535_20240625T041542_PIC0_01": { + "revision_date": "2024-06-30T01:38:34.811Z", + "checksum": "4fd6e581555fb235e4192ec00b65a00b" + }, + "SWOT_L2_HR_RiverSP_Reach_017_172_AS_20240625T042231_20240625T042242_PIC0_01": { + "revision_date": "2024-06-30T01:38:38.867Z", + "checksum": "09b3361e120550461b2eac345d257349" + }, + "SWOT_L2_HR_RiverSP_Reach_017_172_AU_20240625T043432_20240625T043442_PIC0_01": { + "revision_date": "2024-06-30T01:38:40.266Z", + "checksum": "f5464e06f875a17bfd86da5c68e9e8b6" + }, + "SWOT_L2_HR_RiverSP_Reach_017_173_SA_20240625T051827_20240625T051832_PIC0_01": { + "revision_date": "2024-06-30T01:38:43.111Z", + "checksum": "aaa5e6efd6613964e411172ef7141752" + }, + "SWOT_L2_HR_RiverSP_Reach_017_173_NA_20240625T054338_20240625T054343_PIC0_01": { + "revision_date": "2024-06-30T01:38:45.897Z", + "checksum": "9e9f4ffbd92d71d3110ade1095e06115" + }, + "SWOT_L2_HR_RiverSP_Reach_017_173_GR_20240625T054742_20240625T054753_PIC0_01": { + "revision_date": "2024-06-30T01:38:48.971Z", + "checksum": "a87b6733d8c4523a9261fdb33f0e13e2" + }, + "SWOT_L2_HR_RiverSP_Reach_017_174_EU_20240625T055813_20240625T055815_PIC0_01": { + "revision_date": "2024-06-30T01:38:51.919Z", + "checksum": "3f83979719c4f0c4ba13649286303963" + }, + "SWOT_L2_HR_RiverSP_Reach_017_174_SI_20240625T055934_20240625T055936_PIC0_01": { + "revision_date": "2024-06-30T01:38:54.557Z", + "checksum": "7c53100b6f1b8cf24ce27798785972b2" + }, + "SWOT_L2_HR_RiverSP_Reach_017_174_AS_20240625T060725_20240625T060736_PIC0_01": { + "revision_date": "2024-06-30T01:38:58.622Z", + "checksum": "072832f4ed1ea68256723bc7a979ce08" + }, + "SWOT_L2_HR_RiverSP_Reach_017_174_AU_20240625T062007_20240625T062016_PIC0_01": { + "revision_date": "2024-06-30T01:38:59.949Z", + "checksum": "c21323e521b56b3e6ed43d258cd4d043" + }, + "SWOT_L2_HR_RiverSP_Reach_017_175_NA_20240625T071636_20240625T071646_PIC0_01": { + "revision_date": "2024-06-30T01:39:03.021Z", + "checksum": "2dd869e639beabccd63480411c5f9ee7" + }, + "SWOT_L2_HR_RiverSP_Reach_017_175_AR_20240625T073123_20240625T073127_PIC0_01": { + "revision_date": "2024-06-30T01:39:07.553Z", + "checksum": "79631b13fe68c87b2be87214cb498b35" + }, + "SWOT_L2_HR_RiverSP_Reach_017_175_GR_20240625T073429_20240625T073437_PIC0_01": { + "revision_date": "2024-06-30T01:39:08.984Z", + "checksum": "426d70919e59d9fcf76f7078e6920f32" + }, + "SWOT_L2_HR_RiverSP_Reach_017_176_EU_20240625T074342_20240625T074349_PIC0_01": { + "revision_date": "2024-06-30T01:39:11.804Z", + "checksum": "fa7e82deed9b2a16712d3f1e7ebb141e" + }, + "SWOT_L2_HR_RiverSP_Reach_017_176_SI_20240625T074629_20240625T074640_PIC0_01": { + "revision_date": "2024-06-30T01:39:16.097Z", + "checksum": "70ec26bb9cfc7db60f62358af0ba8aba" + }, + "SWOT_L2_HR_RiverSP_Reach_017_176_AS_20240625T074839_20240625T074850_PIC0_01": { + "revision_date": "2024-06-30T01:39:17.647Z", + "checksum": "49233438e0e9c6d74ba580790deed74e" + }, + "SWOT_L2_HR_RiverSP_Reach_017_177_NA_20240625T090320_20240625T090330_PIC0_01": { + "revision_date": "2024-06-30T01:39:21.343Z", + "checksum": "319e0c28a8c57e321c8d30b1f7769daa" + }, + "SWOT_L2_HR_RiverSP_Reach_017_177_AR_20240625T091249_20240625T091300_PIC0_01": { + "revision_date": "2024-06-30T01:39:24.219Z", + "checksum": "a9f932b540a2d645082c0006832453c9" + }, + "SWOT_L2_HR_RiverSP_Reach_017_177_GR_20240625T091920_20240625T091931_PIC0_01": { + "revision_date": "2024-06-30T01:39:28.383Z", + "checksum": "686700db4b3d9cad76653d9c7855ff65" + }, + "SWOT_L2_HR_RiverSP_Reach_017_178_GR_20240625T092124_20240625T092133_PIC0_01": { + "revision_date": "2024-06-30T01:39:31.408Z", + "checksum": "4ddadb6bad04019fb5fcf09ec2bf1c53" + }, + "SWOT_L2_HR_RiverSP_Reach_017_178_EU_20240625T092552_20240625T092553_PIC0_01": { + "revision_date": "2024-06-30T01:39:32.759Z", + "checksum": "21ca23ce2001cf89ca489f57fab3a6e5" + }, + "SWOT_L2_HR_RiverSP_Reach_017_179_NA_20240625T105347_20240625T105351_PIC0_01": { + "revision_date": "2024-06-30T01:39:36.809Z", + "checksum": "1ad54c4d26be12ee92a185f0c96c206b" + }, + "SWOT_L2_HR_RiverSP_Reach_017_179_AR_20240625T105513_20240625T105524_PIC0_01": { + "revision_date": "2024-06-30T01:39:39.339Z", + "checksum": "25d4fd73cdb29c58a58c9e37d3f50e9d" + }, + "SWOT_L2_HR_RiverSP_Reach_017_179_GR_20240625T110320_20240625T110325_PIC0_01": { + "revision_date": "2024-06-30T01:39:41.752Z", + "checksum": "3d09f54a185efa48341f9b2cc2aefb6f" + }, + "SWOT_L2_HR_RiverSP_Reach_017_180_GR_20240625T110630_20240625T110637_PIC0_01": { + "revision_date": "2024-06-30T01:39:42.938Z", + "checksum": "a917f8162613a6f869662fb542c3d172" + }, + "SWOT_L2_HR_RiverSP_Reach_017_180_EU_20240625T111204_20240625T111207_PIC0_01": { + "revision_date": "2024-06-30T01:39:45.365Z", + "checksum": "8cff648d67141f2ea78214987e2b3098" + }, + "SWOT_L2_HR_RiverSP_Reach_017_180_AF_20240625T112039_20240625T112046_PIC0_01": { + "revision_date": "2024-06-30T01:39:47.885Z", + "checksum": "215f3661db344da7e53251bb819f102f" + }, + "SWOT_L2_HR_RiverSP_Reach_017_182_GR_20240625T124757_20240625T124800_PIC0_01": { + "revision_date": "2024-06-30T01:39:52.794Z", + "checksum": "60786a7b90b65d9b2c9aeef46eb83374" + }, + "SWOT_L2_HR_RiverSP_Reach_017_182_AF_20240625T130253_20240625T130259_PIC0_01": { + "revision_date": "2024-06-30T01:39:55.385Z", + "checksum": "0c55f91f2abfdd987d1595ab9b2179ba" + }, + "SWOT_L2_HR_RiverSP_Reach_017_185_AU_20240625T153858_20240625T153905_PIC0_01": { + "revision_date": "2024-06-30T01:40:02.594Z", + "checksum": "6ea6a176d46af9ca0f9ed3180ebf75dd" + }, + "SWOT_L2_HR_RiverSP_Reach_017_185_SI_20240625T160525_20240625T160535_PIC0_01": { + "revision_date": "2024-06-30T01:40:05.336Z", + "checksum": "9b669ca997d64795f31da428470b50d7" + }, + "SWOT_L2_HR_RiverSP_Reach_017_186_AR_20240625T161541_20240625T161547_PIC0_01": { + "revision_date": "2024-06-30T01:40:09.110Z", + "checksum": "0effa78c9d78a62180fca7c2cc2edece" + }, + "SWOT_L2_HR_RiverSP_Reach_017_186_NA_20240625T161956_20240625T161958_PIC0_01": { + "revision_date": "2024-06-30T01:40:10.709Z", + "checksum": "950c1f67d3c344b4d14856a360fdb83a" + }, + "SWOT_L2_HR_RiverSP_Reach_017_186_SA_20240625T163642_20240625T163648_PIC0_01": { + "revision_date": "2024-06-30T01:40:13.068Z", + "checksum": "f6053ab6d6176e820646126d9c30ad53" + }, + "SWOT_L2_HR_RiverSP_Reach_017_187_AU_20240625T172738_20240625T172748_PIC0_01": { + "revision_date": "2024-06-30T01:40:17.221Z", + "checksum": "fe1179e031bfe307afe293f5e46b907d" + }, + "SWOT_L2_HR_RiverSP_Reach_017_187_AS_20240625T173636_20240625T173638_PIC0_01": { + "revision_date": "2024-06-30T01:40:18.498Z", + "checksum": "b0019c174abf6ac03931f097d9b0f019" + }, + "SWOT_L2_HR_RiverSP_Reach_017_187_SI_20240625T174617_20240625T174628_PIC0_01": { + "revision_date": "2024-06-30T01:40:21.181Z", + "checksum": "16e55408dd104ec0e2472206e10a443d" + }, + "SWOT_L2_HR_RiverSP_Reach_017_189_AS_20240625T191901_20240625T191912_PIC0_01": { + "revision_date": "2024-06-30T01:40:23.704Z", + "checksum": "2b8c99a7a9fb7238535e93838c1dda2a" + }, + "SWOT_L2_HR_RiverSP_Reach_017_189_SI_20240625T192625_20240625T192632_PIC0_01": { + "revision_date": "2024-06-30T01:40:27.516Z", + "checksum": "0de636a95c1f8ef27dbdaaa13a84b5c7" + }, + "SWOT_L2_HR_RiverSP_Reach_017_190_AR_20240625T194315_20240625T194325_PIC0_01": { + "revision_date": "2024-06-30T01:40:30.219Z", + "checksum": "1d90e8badcbcffb4529a40fa1baf25dd" + }, + "SWOT_L2_HR_RiverSP_Reach_017_190_NA_20240625T194804_20240625T194815_PIC0_01": { + "revision_date": "2024-06-30T01:40:33.998Z", + "checksum": "1ee374432d19aafdd4d151f0d86f5c03" + }, + "SWOT_L2_HR_RiverSP_Reach_017_191_EU_20240625T210307_20240625T210315_PIC0_01": { + "revision_date": "2024-06-30T01:40:35.224Z", + "checksum": "61371e63d483585772a183c18e9e7d3f" + }, + "SWOT_L2_HR_RiverSP_Reach_017_191_AS_20240625T210544_20240625T210555_PIC0_01": { + "revision_date": "2024-06-30T01:40:38.137Z", + "checksum": "0d378ec7801d89bc3bc651208bc0ff2e" + }, + "SWOT_L2_HR_RiverSP_Reach_017_191_SI_20240625T211004_20240625T211015_PIC0_01": { + "revision_date": "2024-06-30T01:40:40.877Z", + "checksum": "8e1c37afdbba6bffde67b05aca0ca4e2" + }, + "SWOT_L2_HR_RiverSP_Reach_017_197_AF_20240626T020741_20240626T020746_PIC0_01": { + "revision_date": "2024-06-30T01:40:48.242Z", + "checksum": "9d34268fe5ce775684486e5c22409639" + }, + "SWOT_L2_HR_RiverSP_Reach_017_197_EU_20240626T021639_20240626T021646_PIC0_01": { + "revision_date": "2024-06-30T01:40:50.742Z", + "checksum": "33a83518cd9624fe2b61f6c346c7a809" + }, + "SWOT_L2_HR_RiverSP_Reach_017_209_AR_20240626T123834_20240626T123838_PIC0_01": { + "revision_date": "2024-06-30T01:40:53.271Z", + "checksum": "ec90497ccc7ff0b40f094fd8e2b7ff88" + }, + "SWOT_L2_HR_RiverSP_Reach_017_211_SI_20240626T142402_20240626T142412_PIC0_01": { + "revision_date": "2024-06-30T01:40:55.674Z", + "checksum": "bfa56d41d66e81f1dda4c38fea4ae969" + }, + "SWOT_L2_HR_RiverSP_Reach_017_220_AR_20240626T212653_20240626T212659_PIC0_01": { + "revision_date": "2024-06-30T01:40:58.117Z", + "checksum": "aa477f1f86311e0bbc528db4b04fc42f" + }, + "SWOT_L2_HR_RiverSP_Reach_017_222_SI_20240626T230926_20240626T230933_PIC0_01": { + "revision_date": "2024-06-30T01:41:00.538Z", + "checksum": "d127979e6759367e79ad3a9e260fc3e7" + } +} \ No newline at end of file diff --git a/tests/test_hydrocron_database.py b/tests/test_hydrocron_database.py index 4b2ea3c4..608d1a8e 100644 --- a/tests/test_hydrocron_database.py +++ b/tests/test_hydrocron_database.py @@ -11,7 +11,7 @@ """ from hydrocron.utils import constants -from hydrocron.db.io import swot_reach_node_shp +from hydrocron.db.io import swot_shp def test_table_exists(hydrocron_dynamo_table): @@ -21,12 +21,12 @@ def test_table_exists(hydrocron_dynamo_table): assert hydrocron_dynamo_table.exists(constants.DB_TEST_TABLE_NAME) -def test_add_data(hydrocron_dynamo_table): +def test_add_data_reaches(hydrocron_dynamo_table): """ Test adding data from one Reach shapefile to db """ - items = swot_reach_node_shp.read_shapefile( - constants.TEST_SHAPEFILE_PATH, + items = swot_shp.read_shapefile( + constants.TEST_REACH_SHAPEFILE_PATH, obscure_data=False, columns=constants.REACH_DATA_COLUMNS) @@ -40,8 +40,8 @@ def test_query(hydrocron_dynamo_table): """ Test a query for a reach id """ - items = swot_reach_node_shp.read_shapefile( - constants.TEST_SHAPEFILE_PATH, + items = swot_shp.read_shapefile( + constants.TEST_REACH_SHAPEFILE_PATH, obscure_data=False, columns=constants.REACH_DATA_COLUMNS) @@ -51,17 +51,17 @@ def test_query(hydrocron_dynamo_table): items = hydrocron_dynamo_table.run_query( partition_key=constants.TEST_REACH_ID_VALUE) - assert items[0][constants.FIELDNAME_WSE] == constants.TEST_WSE_VALUE - assert items[0][constants.FIELDNAME_SWORD_VERSION] == constants.TEST_SWORD_VERSION_VALUE - assert items[0][constants.TEST_UNITS_FIELD] == constants.TEST_UNITS + assert items[0][constants.FIELDNAME_WSE] == constants.TEST_REACH_WSE_VALUE + assert items[0][constants.FIELDNAME_SWORD_VERSION] == constants.TEST_REACH_SWORD_VERSION_VALUE + assert items[0][constants.TEST_REACH_UNITS_FIELD] == constants.TEST_REACH_UNITS def test_delete_item(hydrocron_dynamo_table): """ Test delete an item """ - items = swot_reach_node_shp.read_shapefile( - constants.TEST_SHAPEFILE_PATH, + items = swot_shp.read_shapefile( + constants.TEST_REACH_SHAPEFILE_PATH, obscure_data=False, columns=constants.REACH_DATA_COLUMNS) @@ -70,5 +70,5 @@ def test_delete_item(hydrocron_dynamo_table): hydrocron_dynamo_table.delete_item( partition_key=constants.TEST_REACH_ID_VALUE, - sort_key=constants.TEST_TIME_VALUE) + sort_key=constants.TEST_REACH_TIME_VALUE) assert hydrocron_dynamo_table.table.item_count == 686 diff --git a/tests/test_io_swot_reach_node_shp.py b/tests/test_io_swot_reach_node_shp.py index 6742c454..c7db389c 100644 --- a/tests/test_io_swot_reach_node_shp.py +++ b/tests/test_io_swot_reach_node_shp.py @@ -8,17 +8,19 @@ """ from datetime import datetime, timedelta, timezone import pytz +import numpy as np +from shapely import Polygon, Point, geometry, wkt, centroid from hydrocron.utils import constants -from hydrocron.db.io import swot_reach_node_shp +from hydrocron.db.io import swot_shp -def test_parse_from_filename(): +def test_parse_from_filename_reach(): """ Tests parsing cycle, pass, and time ranges from filename """ - filename_attrs = swot_reach_node_shp.parse_from_filename( - constants.TEST_FILENAME) + filename_attrs = swot_shp.parse_from_filename( + constants.TEST_REACH_FILENAME) assert filename_attrs['cycle_id'] == "548" assert filename_attrs['pass_id'] == "011" @@ -28,34 +30,117 @@ def test_parse_from_filename(): assert filename_attrs['crid'] == "PIA1" assert filename_attrs['collection_shortname'] == constants.SWOT_REACH_COLLECTION_NAME assert filename_attrs['collection_version'] == constants.SWOT_REACH_COLLECTION_VERSION - assert filename_attrs['granuleUR'] == constants.TEST_FILENAME + assert filename_attrs['granuleUR'] == constants.TEST_REACH_FILENAME assert datetime.strptime(filename_attrs['ingest_time'], "%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=pytz.utc) - datetime.now(timezone.utc) <= timedelta(minutes=5) -def test_read_shapefile(): +def test_parse_from_filename_lake(): + """ + Tests parsing cycle, pass, and time ranges from filename + """ + filename_attrs = swot_shp.parse_from_filename( + constants.TEST_PLAKE_FILENAME) + + assert filename_attrs['cycle_id'] == "018" + assert filename_attrs['pass_id'] == "100" + assert filename_attrs['continent_id'] == "GR" + assert filename_attrs['range_start_time'] == "2024-07-13T11:17:41Z" + assert filename_attrs['range_end_time'] == "2024-07-13T11:20:27Z" + assert filename_attrs['crid'] == "PIC0" + assert filename_attrs['collection_shortname'] == constants.SWOT_PRIOR_LAKE_COLLECTION_NAME + assert filename_attrs['collection_version'] == constants.SWOT_PRIOR_LAKE_COLLECTION_VERSION + assert filename_attrs['granuleUR'] == constants.TEST_PLAKE_FILENAME + assert datetime.strptime(filename_attrs['ingest_time'], "%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=pytz.utc) - datetime.now(timezone.utc) <= timedelta(minutes=5) + + +def test_read_reach_shapefile(): """ Tests reading attributes from the shapefile """ - items = swot_reach_node_shp.read_shapefile( - constants.TEST_SHAPEFILE_PATH, + items = swot_shp.read_shapefile( + constants.TEST_REACH_SHAPEFILE_PATH, obscure_data=False, columns=constants.REACH_DATA_COLUMNS) assert len(items) == 687 - for key, val in constants.TEST_ITEM_DICT.items(): + for key, val in constants.TEST_REACH_ITEM_DICT.items(): assert val == items[2][key] +def test_read_lake_shapefile(): + """ + Tests reading attributes from the shapefile + """ + items = swot_shp.read_shapefile( + constants.TEST_PLAKE_SHAPEFILE_PATH, + obscure_data=False, + columns=constants.PRIOR_LAKE_DATA_COLUMNS) + + assert len(items) == 5389 + for key, val in constants.TEST_PLAKE_ITEM_DICT.items(): + assert val == items[4596][key] + + +def test_lake_null_geometry(): + """ + Tests replacing null geometry with fillvalue for lake polygons + """ + items = swot_shp.read_shapefile( + constants.TEST_PLAKE_SHAPEFILE_PATH, + obscure_data=False, + columns=constants.PRIOR_LAKE_DATA_COLUMNS) + + geojson = geometry.mapping(wkt.loads(items[0]['geometry'])) + coords_0 = np.round(np.array(geojson['coordinates']), 3) + + assert str(Point(coords_0) == str(centroid(Polygon( + constants.SWOT_PRIOR_LAKE_FILL_GEOMETRY_COORDS)))) + + +def test_lake_centerpoints(): + """ + Tests replacing polygons with centerpoints + """ + items = swot_shp.read_shapefile( + constants.TEST_PLAKE_SHAPEFILE_PATH, + obscure_data=False, + columns=constants.PRIOR_LAKE_DATA_COLUMNS) + + geojson = geometry.mapping(wkt.loads(items[0]['geometry'])) + coords_0 = np.round(np.array(geojson['coordinates']), 3) + + assert str(Point(coords_0) == str(centroid(Polygon( + constants.SWOT_PRIOR_LAKE_FILL_GEOMETRY_COORDS)))) + + geojson_4596 = geometry.mapping(wkt.loads(items[4596]['geometry'])) + coords_4596 = np.round(np.array(geojson_4596['coordinates']), 3) + + geojson_test_4596 = geometry.mapping(centroid(Polygon( + constants.TEST_PLAKE_GEOM_DICT['geometry']))) + test_4596 = np.round(np.array(geojson_test_4596['coordinates']), 3) + + assert str(Point(coords_4596)) == str(Point(test_4596)) + + def test_read_shapefile_obscured(): """ Tests reading attributes from the shapefile with real values obscured """ - items = swot_reach_node_shp.read_shapefile( - constants.TEST_SHAPEFILE_PATH, + items = swot_shp.read_shapefile( + constants.TEST_REACH_SHAPEFILE_PATH, obscure_data=True, columns=constants.REACH_DATA_COLUMNS) assert len(items) == 687 - for key, val in constants.TEST_ITEM_DICT.items(): + for key, val in constants.TEST_REACH_ITEM_DICT.items(): if key == constants.FIELDNAME_WSE: assert val != items[2][key] + + +def test_read_benchmarking_data(): + """ + Tests reading the benchmarking data + """ + items = swot_shp.load_benchmarking_data() + + assert len(items) == 1199 diff --git a/tests/test_track_ingest.py b/tests/test_track_ingest.py new file mode 100644 index 00000000..94d85fa2 --- /dev/null +++ b/tests/test_track_ingest.py @@ -0,0 +1,84 @@ +""" +Tests for track status operations +""" + +import datetime +import json +import os +import pathlib + +import vcr + +from hydrocron.utils import constants + +def test_query_cmr(): + """Test the query_cmr function. + + Uses vcrpy to record CMR API response. + """ + from hydrocron.db.track_ingest import Track + + collection_shortname = "SWOT_L2_HR_RiverSP_reach_2.0" + collection_start_date = datetime.datetime.strptime("20240630", "%Y%m%d").replace(tzinfo=datetime.timezone.utc) + hydrocron_table = "hydrocron-swot-reach-table" + track = Track(collection_shortname, collection_start_date, hydrocron_table) + track.revision_end = datetime.datetime(2024, 6, 30, 12, 0, 0, tzinfo=datetime.timezone.utc) + + vcr_cassette = pathlib.Path(os.path.dirname(os.path.realpath(__file__))) \ + .joinpath('vcr_cassettes').joinpath('cmr_query.yaml') + with vcr.use_cassette(vcr_cassette): + track.query_cmr() + actual_data = track.cmr_granules + + expected_file = (pathlib.Path(os.path.dirname(os.path.realpath(__file__))) + .joinpath('test_data').joinpath('query_cmr_granule_results.json')) + with open(expected_file) as jf: + expected_data = json.load(jf) + + assert sorted(actual_data.items()) == sorted(expected_data.items()) + + +def test_get_granule_ur(hydrocron_api): + """ + Test query granuleUR item. + + Parameters + ---------- + hydrocron_api: Fixture ensuring the database is configured for the api + """ + from hydrocron.utils import connection + from hydrocron.api.data_access.db import DynamoDataRepository + + data_repository = DynamoDataRepository(connection.dynamodb_resource) + + table_name = constants.API_TEST_REACH_TABLE_NAME + granule_ur = "SWOT_L2_HR_RiverSP_Reach_548_011_NA_20230610T193337_20230610T193344_PIA1_01.zip" + actual_data = data_repository.get_granule_ur(table_name, granule_ur) + + assert actual_data["Items"][0]["granuleUR"] == granule_ur + +def test_query_hydrocron(hydrocron_api): + """ + Test query_hydrocron function. + + Parameters + ---------- + hydrocron_api: Fixture ensuring the database is configured for the api + """ + from hydrocron.db.track_ingest import Track + + collection_shortname = "SWOT_L2_HR_RiverSP_reach_2.0" + collection_start_date = datetime.datetime.strptime("20240630", "%Y%m%d").replace(tzinfo=datetime.timezone.utc) + hydrocron_table = "hydrocron-swot-reach-table" + track = Track(collection_shortname, collection_start_date, hydrocron_table) + track.cmr_granules = { + "SWOT_L2_HR_RiverSP_Reach_548_011_NA_20230610T193337_20230610T193344_PIA1_01": { + "revision_date": "2024-06-30T01:33:13.037Z", + "checksum": "edda7230d20f1a85bae82f9917c86aa1" + } + } + track.query_hydrocron() + actual_data = track.hydrocron_granules + print(actual_data) + + assert sorted(actual_data.items()) == sorted(track.cmr_granules.items()) \ No newline at end of file diff --git a/tests/vcr_cassettes/cmr_query.yaml b/tests/vcr_cassettes/cmr_query.yaml new file mode 100644 index 00000000..691795f1 --- /dev/null +++ b/tests/vcr_cassettes/cmr_query.yaml @@ -0,0 +1,3283 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.31.0 + method: GET + uri: https://cmr.earthdata.nasa.gov/search/granules.umm_json?short_name=SWOT_L2_HR_RiverSP_reach_2.0&revision_date%5B%5D=2024-06-30T00:00:00Z,2024-06-30T12:00:00Z&page_size=0 + response: + body: + string: !!binary | + H4sIAAAAAAAAAKtWysgsKVayMjQ00FEqyc/PVrIyBrIyS1JzgaLRsbUA4Lq7hiEAAAA= + headers: + Access-Control-Allow-Origin: + - '*' + Access-Control-Expose-Headers: + - CMR-Hits, CMR-Request-Id, X-Request-Id, CMR-Scroll-Id, CMR-Search-After, CMR-Timed-Out, + CMR-Shapefile-Original-Point-Count, CMR-Shapefile-Simplified-Point-Count + CMR-Hits: + - '110' + CMR-Request-Id: + - b9f5a8d4-33fd-4ded-b0e5-d8e964505bd3 + CMR-Took: + - '30' + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-MD5: + - 3a550bd79ef29c083d6c8cea258001cf + Content-SHA1: + - b7f02340a705429d1e4ca89188603db7ecd914de + Content-Type: + - application/vnd.nasa.cmr.umm_results+json;version=1.6.6; charset=utf-8 + Date: + - Tue, 23 Jul 2024 21:52:54 GMT + Server: + - ServerTokens ProductOnly + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, User-Agent + Via: + - 1.1 cb7d4a3c5329f4f381e8cdfcd4a3e1e4.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - cHL2EMsmlLp8V4zk4wFUJoYAAqNv_lP1DmmaGUropWUy8B3bdgovZA== + X-Amz-Cf-Pop: + - LAX50-C1 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-Request-Id: + - cHL2EMsmlLp8V4zk4wFUJoYAAqNv_lP1DmmaGUropWUy8B3bdgovZA== + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.31.0 + method: GET + uri: https://cmr.earthdata.nasa.gov/search/granules.umm_json?short_name=SWOT_L2_HR_RiverSP_reach_2.0&revision_date%5B%5D=2024-06-30T00:00:00Z,2024-06-30T12:00:00Z&page_size=110 + response: + body: + string: !!binary | + H4sIAAAAAAAAAOyda3Mbt5a1/4pKXydmGndA3xRZyajGt2nLOafO1ClXk2zafCORKoryHJ9U/vsL + YNMXLkgKBe127LGqErUpEU+ju7F792Vjrd/3387Xl/sHQjQ/7K+Xy9/2D5S2P+zP1/15/PX//L5/ + 3q+7/YPf9yfLxaS/WD9av7/o9w/236y6xdVZv//Dxz/Mp/HXvyihfCONbsyjF8+Pnjx/9Th+ZdW/ + m1/Ol4v8HfHD/qJbz9/11OLl356fvn4iX/9n+7qNv1y9fPG67bvJ29eNcK9F/P/l4WvZSN1YqU4b + I6QJW5+VaF6/ODlq4vdfX/7vcp17dHbWT9ZphVudO5IuBK28atRnnbtYLd/Np/2KvvPp97Pl6rxb + x191Fxdn80mXeD++W0xHi+6yG03OV6Or8/P/+H+Xy8XnWzjt1mn3pB4+auwj1Zw24kCpA6FGjXL/ + 2P/jh/3YLO3Q0/78Yrnqzo7/te4X6/Sbtlu86R9HwOn8vE+/OF5M54s3n37zEZs3PTIPRDMSXv4j + 9uCn/s18sbj16/LAhJEKTexF7MYvdARftcMchMPpdJ52WXd2uF6v5uOrdU8D6tfu7Cr/c982T+IX + rcg/Zf6p8k+df5r80+afLv/0+WdIP11u63Jbl9u63Nblti63dbmty21dbutyW5/b+tzW57Y+t/W5 + rc9tfW7rc1uf2/rcNuS2IbcNuW3IbUNuG3LbkNuG3DbktiG3FU1DC0ELSQtFC00LQwtLC0cLTwui + CKIIogiiCKIIogiiCKIIogiiCKJIokiiSKJIokiiSKJIokiiSKJIoiiiKKIooiiiKKIooiiiKKIo + oiiiaKJoomiiaKJoomiiaKJoomiiaKIYohiiGKIYohiiGKIYohiiGKIYotCgFDQqBQ1LQeNS0MAU + NDIFDU1BY1PQ4BQ0OgUNT0HjU9AAFTRCBQ1RQWNU0CAVNEoFDVPbtDkw8k+Zf6r8U+efJv+0+afL + P33+GdocGPlnbutyW5fbutzW5bYut3W5rcttXW7rc1uf2/rc1ue2Prf1ua3PbX1u63Nbn9uG3Dbk + tiG3DbltyG1Dbhty25Dbhtw25LYxMGghaCFpoWihaWFoYWnhaOFpQRRBFEEUQRRBFEEUQRRBFEEU + QRRBFEkUSRRJFEkUSRRJFEkUSRRJFEkURRRFFEUURRRFFEUURRRFFEUURRRNFE0UTRRNFE0UTRRN + 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 + 0FOy9Ts7/tc6jof0m7ZbvOk/javf948X0zgIrxtpadMPjIsJcmRl+EfswU/9m/li8SdfF2HkrYm9 + iN3YnIZetcMchMPpdJ52WXd2uKZrxo3He84p2WRQ2Cf7ycg+//T5Z0g/ZZN/ivxT5p8q/9T5p8k/ + c1uZ28rcVua2KrdVua3KbVVuq3Jblduq3Fbltiq3Vbmtzm11bqtzW53b6txW57Y6t9XUZ9vm/uef + Pv8MZHKff4r8U+afKv/U+afJP3NbmdvK3Fbmtiq3Vbmtym1VbqtyW5XbqtxW5bYqt1W5rc5tdW6r + c1ud2+rcVue2OrfVse0/P54ATk+eHG/OMd3l1aqfvuhW8S/rD4nyvw9frrt1trT/78MX/WoSx+vT + eT5BpjuFeB3xw6c/PL9aP5/9FM+n08vNH9NZ8ANws8ZnPx7Sme6iS26Wn0LgP+MJ/t/Lxbo72/zp + 8fK8m+fz3C/9MiJW79O/Mz+uvo1hHoPmbDO0/tZfrj/86Wi5XMVlDsdHQqqRcjZeyMVLTxMa7eO6 + l1frt9d928ZQFcbF6758p+TdD/vH3Q3goOIllDVpxqQOER8vhZ/Fk/e1XBczrLAihk08Bwnh//hn + 3DOnq27yW9qko/eTdLclXNpbl5ebLUr/jL9UMn5zfvYQNl9B2MTDlk6fLzZpI51u6VhtrjViju9X + 6Qz4eDsVxKsDIQ+EP5B+JETzj3ztsmnz6iLnjT9pk64oYtB8uqRq+1m/SldG+Vr9Y/qWo3QRiVcR + cH5f5fN7+mramI9XckdnecT9nn716TJvu+3+5w0+Xjn+kS6d4tVOP321OqM98tUYMN8pg23dCFca + MN9nhX+lATPfjvoaDZgH8kK/205Lj5K+yKiiFf3FPvH33zcPA+nm6Ptip6dPe/GX49O9r3b8XLdL + 2MbPhy3f+/XkcO/xSXt8dLp3eHR0/PLlNz6QNg/QvshY+riub+q8dMMeejg13bC/Pj5f/yJj6rO1 + fVOj6sa99DWOq0s1WfX58WkXr+6xx93FfK9fTC+W88U69WYV79Tn/bt+b01PuVbv9z5rvveuO5tP + 92bL1d5lvMd4tOrfpCfDm228VJut+7Qdv54c/22vPX5yeBq35eTZz8/bp4enJ8+f5fuhk8XF1Xrz + NCvfIOdjtPnFi+XZ+zfLxeXrZ8tzevUZpDiV0oimef2usR8OwLWvYj8pE8YDG5dP7piIdoLeNbvt + AvXQU+m3P6sqaDsANEBPFUB1FbTlh8oGeqoBaqqg7QBQAT0121DfVEHbAaDyCUAAKqqg7QBQBT0V + AK0JU6naAaAaegph6mvCVOp2AKiBnkKY+qowNe0AUAs9hTD1VWFq2wGgkKM8hGmoClPIUTxQyFEB + wjRUhSnkKB4o5KgAYRqqwhRyFAtUQY4KEKZ3dsclaDsAFM784UMh2sfPNZsPZ34eqMKefr75vmlq + Br9S2FMO6NaZP0EAWjP4t2V4uaAGeioAWjX4TTsA1EJPJUBrEt+2BC8X1EFPFUBrEt+2AC8X1ENP + NUCrwtS3A0AD9BTCVFSFaWj5odvauwkCUNnUQNsBoAJ6CmEqVBW0HQAqoacQpkJXQdsBoAp6CmEq + TBW0HQAKOUpAmMqmCtoOAIUcJSBMpaiCtgNAIUfJBqEVF2gaclQldPvZKNcjtILK8gwNqTwP0Qoq + y1M0pPI8RiuoLM/RgMr0IK2gsjxJQyrPo7SCyvIsDak8D9MKKsvTNKTyPE4rqCzP05DK80CtoLI8 + UUMqzyO1gsryTA2pPA/VCirLUzWk8jxWK6gsz9WQyvNgraCyPFlDKs+jtYLK8mwNqEwP1woqy9M1 + pPI8XiuoLM/XkMrzgK2gsjxhQyrPI7aCyvKMDak8D9kKKstTNqTyPGYrqCzP2ZDK86CtoLI8aUMq + z6O2gsryrA2pPA/bCirL0zagMj1uK6gsz9uQyvPAraCyPHFDKs8jt4LK8swNqTwP3Qoqy1M3pPI8 + diuoLM/dkMrz4K2gsjx5QyrPo7eCWvXsrZD8CH8i+aGz5Ic27JIfcW3eKxO8ks4q6+T1qgLTPjgX + glRWjWd+4uzYxtPGJIxtb8ZWpsnofyoQoWUTdpXDuFt15m5yGM2okdI03koRD4uXjRI3ba2e9s72 + Y9PMxlr0oTNy7MV47G0/7SfjXZQi4p5q5CAbe7u+iR5Zr1QcUDYOGKPV9RsYvPOTrnHdrJu4RvWT + +J+bSSuk8Uq4XfQ+dBBpVw51PG+XNZExNLzROkjh3c2yJhMxkVbacbzKsSEet2kTt9E0sp81nZ/p + 8S7H0e+qhFFZUHzreBXxhlgFq+Ix8S5e/9ywnU3fuNiRbmLFdKy06huv/SzYWR9sp6ezHbZTWJtm + zw6wpV9A8+Puo+tB8+O71PwQ8qCxWeBB2O9a8yNYLs2PZ4dbFzxKKvj8bWh+qFHMKJyaH/6gUUnz + ozFyF80P+nrshXUVmh93Pwg7aH6QBIDO8gE6yweYLB9gsnyAyfIBJssHmCwfYLJ8gMnyASa3Nbmt + yW1tbmtzW5vb2tzW5rY2t7W5rc1tbW5rc1uX27rc1uW2Lrd1ua3LbV1u63Jbl9u63Nbntj639bmt + z219butzW5/b+tzW57Y+tw25bchtQ24bctuQ24bcNuS2IbcNuW3IbUXT0ELQQtJC0ULTwtCCVCIa + klxoSCeiIYogiiCKIIogiiCKIMpGa2IjNrFRmyC5CUF6E4IEJwQpTgiSnBCkOSFIdEKQ6oQg2Qmd + BRh0FmDQWYDBZAEGkwUYTBZgMFmAwWQBBpMFGEwWYDC5rcltTW5rc1ub29rc1ua2Nre1ua3NbW1u + a3Nbm9u63Nblti63dbmty21dbutyW5fbutzW5bY+t/W5rc9tfW7rc1uf2/rc1ue2Prf1uW3IbUNu + G3LbkNuG3DbktiG3DbltyG1DbhtHAC0ELSQtFC00LQwtSGejIaGNhpQ2GqIIogiiCKIIogiiCKJs + 1Do2ch0bvQ4S7BCk2CFIskOQZkccAbQgCsl2CNLtEPI7050JciRderEnXFLJV7fJzkgx0ibu7mCC + MdIoq2/RnXF+FO+rrRXxziqpMdpbdGeMG+mY/+Jh8nGgaFWrO/Nw6n44dT+cur/rU/f9tY/cyChz + R+2j1MZ+39pH956WvvvF/P3lIGrW9ddP3L//Hvoap+1/Ffvrfko1d17RX6ZUc89d8p0q1dxhrzHo + itSt7Zs6PX1TuiIDqdjdLRQZ5P6qV/gXy/0x7ahvamh9yWC8n9zfnVf0TZ2ovhW5vwftIwPFTn9+ + abMTtB0AqrGnYftzzQRLo7GnHFAodFIKoDUTLA3UOfFAocxJ6W2orplgaaDKiQcKxbnKALRmgqWB + 2lweKJTm6gagNZOrDVTm8kChMFcLgNZMrjZQl8sCtVCWqyFMdU2YWqjK5YFCUa6GMNU1YWqhJpcH + CiW5GsLU1ISphYpcHijkKA1hamrC1EKO4oFCjjIQpqYmTC3kKB4o5CgDYWqqwhRyFA8UcpSBMDVV + YQo5igcKOcpAmJqqMIUcxQOFHGUgTG1VmEKO4oFCjjIQprYqTCFHsUAd5CgLYWprwtRBjuKBQo6y + EKa2Jkwd5CgeKOQoC2Fqa8LUQY7igUKOshCmtiZMHeQoHijkKAth6mrC1EGO4oFCjrIQpq4qTCFH + 8UAhRzkIU1cVppCjeKCQoxyEqasKU8hRPFDIUQ7C1FWFKeQoHijkKAdh6qrCFHIUC9RDjnIQpr4m + TD3kKB4o5ChnEGproO0AUMhRHsLU14SphxzFA4Uc5SFMfU2YeshRPFDIUR7C1NeEqYccxQOFHOUh + TH1VmEKO4oFCjvIQpqEqTCFH8UAhR3kI01CToj3kKB4o5KgAYRqqwhRyFA8UclSAMA1VYQo5igUa + IEcFCNNQE6YBchQPFHJUgDANNWEaIEfxQCFHhe0wFU1NmAbIUTxQyFHBALQmTAPkKB7odo4STQPQ + mjAN2zmKCWqgpwKgVWFq2gGgFnoqAVoVprYdAOqgpwqgVWHq2gGgHnoKYSqqwtS3A0AD9NQgtELv + NISWHZqKurchxmx9rhGmTSXiAN3uaY2GbCo4h54h9O6v4lP5egHZ+lwR+6kYfhsCYSorwjRNroCe + AbQiolK9Pj9UNNBTjdCKAyWadgAopBOl3fbnqs2Hwc8DtdjT7c2vqURIky8GgEI6gUqECJU10JYD + CiI2TBVDBZWlZAipPDVDBZWlaAipPFVDBZWlbAipPHVDBZWlcAipPJVDBZWldAipPLVDBZWleAip + PNVDBZWlfAioTPVDBZWlgAipPBVEBZWlhAipPDVEBZWliAipPFVEBZWljAipPHVEBZWlkAipPJVE + BZWllAipPLVEBZWlmAipPNVEBZWlnAipPPVEBZWloAipPBVFBZWlpAioTDVFBZWlqAipPFVFBZWl + rAipPHVFBZWlsAipPJVFBZWltAipPLVFBZWluAipPNVFBZWlvAipPPVFBZWlwAipPBVGBZWlxAip + PDVGBZWlyAipPFVGBZWlzAioTHVGBZWl0AipPJVGBZWl1AipPLVGBZWl2AipPNVGBZWl3AipPPVG + BZWl4AipPBVHBZWl5AipPDVHBZWl6AipPFVHBZWl7AipPHVHBZWl8AipPJVHBZWl9AioTLVHBZWl + +AipPNVHBZWl/AipPPVHBZWlAAmpPBVIBZWlBAmpPDVIBZWlCAmpPFVIBZWlDAmpPHVIBZWlEAmp + PJVIBZWlFAmpPLVIBZWlGAmpPNVIBZWlHGmbylWPhFSegiSk8lQkIZWnJAmpPDVJSOUpSiqoLFVJ + QGUqSyqoLHVJSOUpTCqoLJVJSOUpTSqoLLVJSOUpTiqoVdVJX48ZVrLZ0U4a4eONkQ/+JrudMJ1I + OfWTXvowUTIkE6VeJ8OoWW+yxcmf2e0opeRd/HYqpd9uNRdS3gghnZVJy9yJcP3GzlTvejXuZdfZ + yXQm+qkXk9mssZOJmPRa7bCxSU39DkZRd1Qlu93wy2sRj6iVximp5Q1+X0H4zphmNpvaqUgPHb1t + Jp2KW2m6fuLCDtsogwtmkG384J90i+VXEC5upFdBGaPtDQdyOtEzLX0XD2I/lkHY2XgixFSErle9 + F7uYRBlhrNJ6qGF7q+dX/LaPTUM8JWh1i+dXMC50M+3GU9mILnSuUbZJpyIjhZ266U7HcphN/OT5 + NawX1p21bR+8sL5fLyw9EjZ8z15Ydstu6l5eWC+3Ai+elP3250/XlV+1F5YdxSsgXi8s4Q5MSsdm + Ny+s+HXtR8rJCi+sux+EHbywhCI3Dk1uHJrcODS5cWhy49DkxqHJjUOTGwc5sQiyYhHkxSLIjEWQ + G4sgOxZBfiyCDFkEObIIsmQR5MkiyJRFkCuLIFsWQb4sgoxZBDmzCLJmEeTNIsicRZA7iyB7FkH+ + LIIMWgQ5tAiyaBHk0SLIpEWQS4sgmxZBPi2CjFoEObUIsmoR5NUiyKxFkFuLILsWQX4tggxbBDm2 + CLJsEeTZIsi0RZBriyDbFkG+LYKMWwQ5twiybhHk3SLIvEWQe4sk9xZJ7i2S3FskubdIcm+R5N4i + yb1FknuLJPcWSe4tktxbJLm3SHJvkeTeIsm9RZJ7iyT3FknuLZLcWyS5t0hyb5Hk3iLJvUWSe4sk + 9xZJ7i2S3FskubdISRRJFEUURRRFFEUURRRFFEUURRRFlM3YVWQnoslORJOdiCY7EU12IprsRDTZ + iWiyEyErGUFeMoLMZAS5yQiykxHkJyPIUEaQo4wgSxlBnjKCTGUEucoIspUR5CsjyFhGkLOMIGsZ + Qd4ygsxlBLnLCLKXEeQvI8hgRpDDjCCLGUEeM4JMZgS5zAiymRHkMyPIaEaQ04wgqxlBXjOCzGYE + uc0IspsR5DcjyHBGkOOMIMsZQZ4zgkxnBLnOCLKdEeQ7I8h4RpDzjCDrGUHeM4LMZwS5zwiyn5Fk + PyPJfkaS/Ywk+xlJ9jNxCNPC0sLRwtOCKIIoZD8jyX5Gkv2MJPsZSfYzkuxnJNnPSLKfkWQ/I8l+ + RpL9jCT7mTiEaUEUsp+RZD8jJVEkUSRRFFEUURRRFFEUURRRFFEUURRR0tj9ntzInBsZY62WWjSN + tdL9cLMb2SNtRtI08csy3gQ22olb3MisGWnvglBOh/Sw8zY3Mj9yunHGxyuRJjQ6mFo7sofs+ZA9 + H7Ln/kP23H/Invt/Vfa8tyFco0emUXczhEttZPNgCHcvm47d72jvaWFy5xX99RYm99w3X6OFyVex + s+7tLFizrm9qOD04C95tf9Grhi8wnGhFf5mz4D13ybfpLHg/Y7O77TIGB7jqFf7FDnBMO+rhHHXD + TmMwraxb2zeV+b4p08rv3hAuPXy7Y0baCdryQ3Vze09rdMfTE5sBoAJ6agBao+ynRTsAdHuiRpqw + tP25Qn80PfcaAKqgpwKhFdJ2WrUDQGGShpcAVVXQdgAoFNB6BVBdBW0HgEL5rMcwrRE21FA9ywOF + 4lkPYZom2VVA2wGgMDkjQJiGGqlQDRX0PFDIUQHCNFSFKeQoFqiBHBUgTENNmBrIUTxQyFEBwjTU + hKmBHMUDhRwVIExDTZgayFE8UMhRYTtMZVMTpqCUyQTdzlERAtCaMAWdTCaogZ4KgFaFqWkHgFro + qQRoVZjadgCog54qgFaFqWsHgHroqQZoVZj6dgBogJ5CmIqqMA0tPxTEMSMEoDVhCtqYTFABPYUw + FTVhCsqYTFAJPYUwFTVhCrqYTFAFPYUwFTVhCqqYTFDIUQLCVNSEKWhiMkEhRwkIU1kVppCjeKCQ + oySEaZU9AOhhMkEhR0kIU1kVppCjeKCQoySEqawKU8hRPFDIURLCVFaFKeQoFigIYUYIQGvCFHQw + maCQoySEqaoJU1DBZIJCjlIQpqomTEEDkwkKOUpBmO5oDoDQdgAo5CgFYapqwhT0L5mgkKMUhKmq + ClPIUTxQyFEKwlRVhSnkKB4o5CgFYaqrwhRyFA8UcpSGMNVVYQo5igcKOUpDmOqqMIUcxQIF0csI + AWhNmILmJRMUcpSGMNU1YQqKl0xQyFEawlTXhCnoXTJBIUdpCFPTuBpoyw5N5flbkIjd/lzh3pUK + pgeAauzp9ubXOPZK0EpigkI2hZdcssaxN5WdDwCFbArimbLGsVeCphMTFLIpSGfKGsdeCTpRTFDI + piCcKWsceyVoTzFBIZuCbKasceyVoDzFAwXhKQmimbLGsTfN0hgACtkUJDNljWNvmkgyABSyKQhm + qhrH3jTXZQAo5CiQy1Q1jr1pOs4A0O0cpUAsU9U49qYZQwNADfRUALQqTE07ANRCTyVAq8LUtgNA + HfRUAbQqTF07ANRDTyFMaxx70+y1AaABegphKqrCNLT8ULmdo5SAMBU1YSq3cxQTVEBPIUxFTZhK + 0Q4AldBTCFNRE6ZStgNAFfQUwlTUhKlU7QBQyFECwrTGrjrNRx0ACjkKJGdVjQd2mjI7ABRyFMjY + KlkVppCjeKCQo0AaV9W4daeJxwNAIUeB3K6SVWEKOYoHCjkKxHZVjQV4mr7ND1WQo0BqV6maMFWQ + o3igkKMkhKmqCVMFOYoHCjlKQZiqmjBVkKN4oJCjFISpqglTBTmKBwo5KlLhs6qBthxQUC5mmiJT + UNsBqEyTZArq7X2tpPJMkymo7RBUnokyBbUdgsozVaagtkNQeSbLFNR2CCrPdJmC2g5B5ZkwU1Db + Iag8U2YKajsElWfSTEFth6DyTJspqO0AVKaJMwW1HYLKM3WmoLZDUHkmzxTUdggqz/SZgtoOQeWZ + QFNQ2yGoPFNoCmo7BJVnEk1BbYeg8kyjKajtEFSeiTQFtR2CyjOVpqC2A1CZJtMU1HYIKs90moLa + DkHlmVBTUNshqDxTagpqOwSVZ1JNQW2HoPJMqymo7RBUnok1BbUdgsoztaagtkNQeSbXFNR2CCrP + 9JqC2g5AZZpgU1DbIag8U2wKajsElWeSTUFth6DyTLMpqO0QVJ6JNgW1HYLKM9WmoLZDUHkm2xTU + dggqz3SbgtoOQeWZcFNQ2yGoPFNuCmo7AJVp0k1BbYeg8ky7KajtEFSeiTcFtR2CyjP1pqC2/FSu + yTcFtR2CyjP9pqBiX1moPBNwCmo7BJVnCk5BbYeg8kzCKajtEFSeaTgFtR2CyjMRp6C2A1CZpuIU + 1HYIKs9knILaDkHlmY5TUNshqDwTcgpqOwSVZ0pOQW2HoPJMyimo7RBUnmk5BbUdgsozMaegtkNQ + eabmFNR2CCrP5JyC2g5AZZqeU1DbIag8E3QKajsElWeKTkFth6DyTNIpqO0QVJ5pOgW1HYLKM1Gn + oLZDUHmm6hTUdggqz2SdgtoOQeWZrlNQ2yGoPBN2Cmo7AJVpyk5BbYeg8kzaKajtEFSeaTsFtR2C + yjNxp6C2Q1B5pu4U1LaG+rz9+fXh3/9+9Ox48+XwWjTKxMEtky+Ok+kfTZpMk//uhH7deKG0SY7h + ydJ7Y6mT3EEPyTTocDF9PL9cr+bjq2QEdLKYLVfnHXkC/c/v+y/n/+5fLebr/YP9pz+lbsTP+wdC + jrT22hvltDaN9fqH/aO3/eS3y6vzbGTanV0l0x8/jkel6ezU615NZnLqZlKPjZjYJnRNN43Aw7M3 + y9V8/fY8reGxSR6kaR0ni5/eZ1fWeBVnVNwjHx3Pcffe13Uu2Sldv5XNSAVtYougnfLOBqOu38zJ + zExc4/V4GnRovO2tDa4zqvN+ImdNt8Nm6mxDPtRGfrQ/u3lj5cjrVHatrfQhYszxoxsOqna9lWI8 + 835qOzWLA6EPOlVBz+Lukp3dYWtl8INs6kc7rtsOamOkjTeM6d1RMEI4ef1mOm9VN3G2m01s72a9 + nqhe9W7spuPOTcIuY9cY4d0gG5oMXG/dxngotGqEjRsrdYy2G46lCH1jTLCdMWo2UZOx72dNMxX9 + pBnbWZjtNnLNMAN3Yyv6Rz53vX82f/N2/fNZ9yaZLS8uL/rJfDbv02E4yaZk8cOKPIs/fR7gdPH5 + 6jbWZi9Wy+nVpF9tTq4n03xotnqRCNc1PWpPHpffFiNx3Zefr9/GP3/+hw87/fDlr2TlfN26ydv5 + LrxP1tDX8U6Ofm3E3icL681X92bz+JvV3To+mSfv649D7Ja1NnfbJXRM1kfLq8U6fiONoba/WC2T + Kd188ebFWbdYxMFzsP9suUhue5vvx5Un/+7T+Xnp4d3YA+1Gwdt/ZL/ts26dUuVmyC1iCr06j52g + z587d/9X154scg/Qzzv/8mm/7pJP30sa0ZNN7kWPv8l0cZ2n39X5+Y8bz8Af34mRHaXT72YVr54+ + ffRL/PjrR5tv+kIyP/99P54ru7SayTIegYv1ozXt0U8GhB/+ME+76RcllG+kjVcTj148P3ry/NXj + +JVV/26e0Pk74of9Rez8u55a/EngudeHP38KNBmvNOOvtz5L/yHwXidjw9yjD2Pu0VbnjqQLQav0 + yPKzzm2MF1f0nU+/pwuc7Hh4cbbZ3z++W0xpp07OV6O4U/9jYyr4cQun27buqjltxIEyB40bNY3I + QyI2Szv0lPwSz47/tY7jIf2m7RZv+k/j6vf948U0DsLrRlra9AMlD6QfCdH8I/bgp/7NfLH4k68L + NxLexF7EbmxOQ6/aYQ7C4XQ6T7usOztc02VjT2M+55Ts3iiEeBK/KYSkhaKFpoWhhaWFo4WnRcgL + 2dCCKJIokiiSKJIokiiSKJIokiiKKIooiiiKKIooiiiKKIooiiiKKJoomiiaKJoomiiaKJoomiia + KJoohiiGKIYohiiGKIYohiiGKIYohiiWKJYoliiWKJYoliiWKJYoliiWKI4ojiiOKI4ojiiOKI4o + jiiOKI4onihCtHSkaaFooWlhaGFp4WjhaRFaOtK0IIokiiSKJIokiiSKJIokiiSKIooiiiKKIooi + iiKKIooiiiKKIoomiiaKJoomiiaKJoomiiaKJoomiiGKIYohiiGKIYohiiGKIYohiiGKJYoliiWK + JYoliiWKJYoliiWKJYojiiOKI4ojiiOKI4ojiiOKI4ojio+Uf35MKqcnT443eau7vFr10xfdKv5l + /eHi678PX667lAXTP1/0q0k8Bz6d56SbbkDjxekPn/7w/Gr9fPZTzNHTy80fU2b9ANys8dmPh5Q9 + L7pkPfvptPqf8aLh38vFujvb/Onx8ryb59z5S7+MiNX79O/Mj6tvY+qIJ+Kzzenqb/3l+sOfjpbL + VVzmU7yyIxGaeKhF8No6ZeKal1frt9d995HwIy3jRX4cUdbFFk28mTjurgdrOWp8SHXioon35jaR + n8ULgmvJ6Q473ljHi3htvbVxqP7xz7hvTlfd5Le0UUfvJ+k2Xri0vy4vN9uU/plumeNv01OHh5Px + w8n44WT8f+9kHE8F6ULvxeYCN10YUvxv7ori3Ui/Stdqj7cvWuN9TGMOlD+QahSa5h/5LmvT5tVF + vsK9vY1Q/8in4k83f20/61fpHi4/Vfh4oxFPdfvl/Q5cia7ylWj6atqYj/ecR2f5LPZ7+tWnG9Lt + tvufN/h4j/tHusmL92X99NXqjPZIlVH6UNbyd7nc/vD0A23aH3+wjx9kXTuYzl+quCO/5j10+nZ+ + uXc2X/y2t7kDvPxgSz/9sO/InH7v3bzbe6mS2f36bb/36c53h73wLY4oenz1BYYTrWizF385Pt37 + aofQdbuEbfx82PK9X08O9x6ftMdHp3uHR0fHL18OMJCuxmfzyRfaZR9fJ3yp0fTZCu99hvoqdtTD + OeqGnZZebHyRUUUr+qby3XX75mEg3bCzPr4K/CKj6bO1fVND6sa99DWOq0s1WfX5RU8Xr+6xx93F + fK9fTC+W88U69WbVr1fz/l2/t6bn8av3e58133vXnc2ne7Plau8y3mM8WvVv0juszTZeqs3WfdqO + X0+O/7bXHj85PI3bcvLs5+ft08PTk+fP8v3QyeLiar157p4fuuRjtPnFi+XZ+zfLxeXrZ8tzqtMI + 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 + Qo5SEKaqJkxBSo4JCjlKQZjqmjAFITkmKOQoDWGqa8IUZOSYoJCjNISprgpTyFE8UMhRGsJUV4Up + 5CgeKOQoDWGqq8IUchQPFHKUhjDVVWEKOYoHCjlKQ5iaqjCFHMUCBe24CAFoTZiCdBwTFHKUgTA1 + NWEKwnFMUMhRBsLU1IQpyMYxQSFHGQhTUxOmIBrHBIUcZSBMTU2YgmQcExRylIEwtVVhCjmKBwo5 + ykKY7qikDVBIJxYiakfJa4DCmd/C4K/xqpcglRYhAK2wl5WgaWagZMTUOMBLEB8zUN1haszaJaiE + GSjEMDW+6hLkvEyq5tj6XHP0QXfLOAnQmqMPAlnGKYBWHX2IKKcBWnX0IaLctii3qbHrTrPQAAJQ + IXeBbtcActWLFVSWgjGgMlWMFVSWkjGk8tSMFVSWojGk8lSNFVSWsjGk8tSNFVSWwjGk8lSOFVSW + 0jGk8tSOFVSW4jGk8lSPFVSW8jGk8tSPFVSWAjKk8lSQFVSWEjKk8tSQFVSWIjKgMlWRFVSWMjKk + 8tSRFVSWQjKk8lSSFVSWUjKk8tSSFVSWYjKk8lSTFVSWcjKk8tSTFVSWgjKk8lSUFVSWkjKk8tSU + FVSWojKk8lSVFVSWsjKk8tSVFVSWwjKgMlWWFVSW0jKk8tSWFVSW4jKk8lSXFVSW8jKk8tSXFVSW + AjOgMlWYFVSWEjOk8tSYFVSWIjOk8lSZFVSWMjOk8tSZFVSWQjOk8lSaFVSWUjOk8tSaFVSWYjOk + 8lSbFVSWcjOk8tSbFVSWgjOk8lScFVSWkjOk8tScFVSWojOgMlWdFVSWsjOk8tSdFVSWwjOk8lSe + FVSW0jOk8tSeFVSW4jOk8lSfFVSW8jOk8tSfFVSWAjSk8lSgFVSWEjSk8tSgFVSWIjSk8lShFVSW + MjSk8tShFVSWQjSgMlWiFVSWUjSk8tSiFVSWYjSk8lSjFVSWcjSk8tSjFVSWgjSk8lSkFVSWkjSk + 8tSkFVSWojSk8lSlIZWnLA2pPHVpSOUpTAMqU2UaUnlK05DKU5uGVJ7iNKTyVKchlac8Dak89WlI + 5SlQQ2pdhdrX4t+YrA2D91opr5wPsSM3uMO5LkxmEy21tcI1M9F0jfJT1cUr62B02MXAUYl4i7u7 + O9zdlWpvc/tzMeRNuo4yLh6Sm93+ZtOmibt55vzEh7H08RK3dzr0nZ9qK3Szw3bK0AyylTu5/ak4 + IqU2IV7+NkrJRt3gx5lsOJ2xXR/inhHduB+LfiLERFk9HttdjCpVvInSYZAt/fdOFo52ZGRIjoa6 + iXEWR+8NbpVC9UI7LfqZF6a3TdN0MxeMMFLHER922FTrtfUDHdV0UrjVvlE3yWg9Hqt4EvDW3eDJ + 6bxT04kZGz3zEzkLVqtp78fjyUQHOfZih63UUpk7WHLeUUpzYPfGO+ulP7g3fs/ujUaq79q9MWgu + 98aXJ7veYX/N7o1CjUTD7N5ozIFyo2DMbu6N8evSjrz2Fe6Ndz8IO7g3/kWeQ3EU5IUnCvllSfLL + kuSXJckvS5JfliS/LEl+WZL8sv4/e2fb5LaRZem/otDXtei8N9/1TSOrvYp12x5Y7pmYjQkHSIK2 + duSSolTyrqej//smcKkXnlSViOSFVNVVHdGmSqp8CIB5cQHi5DkseVkseVkseVkseVkseVkseVks + eVkseVkseVkseVkseVlW8rKs5GVZycuykpdl93lZXyLyZjpYnRwseRGKxDWxxDWxxDWxxDWxxDWx + xDWxxDWxxDWxxDWxxDWxxDWxxDWxxDWxxDWxxDWxxDWxxDWxxDVZiWuyEtdkJa7JSlyTHeOablF2 + nY+l05RCdDFTuSLL5fbn0ug6n0vx+3KTYcgwm/Lny6PryJQOkCgn40I2VD7iK7LrYlyF4GMsd1/O + OMq+Nbvu7oRwd0JY5IRwenIXrzLNTe56O+Yuuas9T+H4C4/9bVdr1sTsN/piyV0nHpJbmtw146id + nNzV8l5fPrrk9CN0HdNLrsXxUkjuanu3GzWr7pK75p7cFZK7mt/wCyd3KR2oGzW1PmcxnpbcNfuN + btSJ6i6566Ykdy1kF7aIs9edCdfpcieEdgtAF3H2Ao3uNbYLA4Xu9fUgC6DPvcbGZqDOvcZuaaDN + vcYWbHDmv8a+btBOrrFZHPSoa+xABz3qGtvaQY+6xl550KOukwEfQrsFoNCjEjP83LL70KNUoMng + lsLut5RpMrilGlDoUQnKNLWUaYIepQOFHpWgTFNLmSboUTpQ6FEJyjS3lGmCHqUDhR41Qg5+bmnR + CXqUDhR6VIYWnZvKFHqUDhR6VIYyzU1lCj1KBwo9KkOZZudboN0C0IMzvzXGMPzcsvsHZ34laDa4 + pfHwZ7ItUNxSDaiFLT3Q05afW07S2XYLQB1sqYPdbzlJZ9ctAPWwpf4QOn591gDt1KGjuuUQ4hl+ + nr/7owpkASjhlh7uPjeU6ShUWQDK3wEEoA0XvaOWRgP6mVbNLrO+9W4l6iIrUXW+m/0861t1vp39 + PKtmdb6f/SxrcZW+of08K3x1vqP9POuGdb6l/TyrkXW+p/08a5x1vqn9PCundb6r/TzrsXW+rf08 + q7x1vq/9PGvHdb6x1VmR/kmqyne2SNX50raiqnxrC1Slr20rqsr3tkjV+eK2oqp8c4tUna9uK6rK + d7dI1fnytqKqfHuLVJ2vbyuqyve3SNX5AreiqnyDi1Sdr3Arqsp3uEjV+RK3oqp8i4tUna9xK6rK + 97hAVfoit6KqfJOLVJ2vciuqyne5SNX5Mreiqnybi1Sdr3Mrqsr3uYdUrS90K6rKN7pI1flKt6Kq + fKeLVJ0vdStq07e618hTimLgXLbWkTVp7F0fN61JfhgGw37H3vTbbd6FslVxu7VmE/xmne5/2rSG + ykXnDFOp+YuorvIfcjmlEMt/fAqOw8d30oXep2jyuhyMQJnX24EHZ9xu5zfl0/BH7GRI5LyPi+zm + OIGu9B8aUwxdtpZC8MZmc8lu9mY3JLuOwW3NNvd5vd0OazOUfd9kb7fHfJbj1eQMA6KZKwI03MEG + s12bOPg8bGwol5Muxj72acP9YDOZzTE7OcdHqmV11lUfJjv2IZAp87HMRcuX1CVtfDQx5J7XNkUK + KZW+ZMuHG6kPPZujPktn57iDNa4XWthVavZa3jtXqdvrKuVWpRfcZlep7JVcpfIvj/7yttDcs3Lf + k6yBn+lt4V1rV6m0SiapuUqNu16YDy2VhkWfdJV69+tm5UOe7SrV8iEc4SpFPNmjlC4rL0Feorwk + eZlMVsq1o7yQvLC8WHkRihWKFYoVihWKFYoTihOKE4oTihOKE4oTihOKE4oTiheKF4oXiheKF4oX + iheKF4oXihdKEEoQitjpkNjpkNjpkNjpkNjpkNjpkNjpkNjpkNjpkNjpkNjpkNjpkNjpkNjpkNjp + kNjpkNjpkNjpkNjpkNjpkNjpkNjpkNjpkNjpkNjpkNjpkNjpkNjpkNjpkNjpkNjpkNjpkNjpkNjp + kNjpkNjpkNjpkNjpsNjpsNjpsNjpsNjp8N5Ox4gpjxFTHiOmPEZMeYxQSCgk28KTP02ZZ/IS5CXK + S5KXyZ+mzDN5IXlhebHyIhQrFCsUKxQrFCsUJxQnFCcUJxQnFCcUJxQnFCcUJxQvFC8ULxQvFC8U + LxQvFC8ULxQvlCCUIBRxIiJxIiJxIiJxIiJxIiJxIiJxIiJxIiJxIiJxIiJxIiJxIiJxIiJxIiJx + IiJxIiJxIiJxIiJxIiJxIiJxIiJxIiJxIiJxIiJxIiJxIiJxIiJxIiJxIiJxIiJxIiJxIiJxIiJx + IiJxIiJxIiJxIiJxImJxImJxImJxImJxImIjfkZG/IyM+BkZ8TMy4mdkhEJCIbpVXmbEK+JSAbFc + 2odY7uvL1f2lZmYPwirnmMeE5vLR5dIxrjAzyytvy20X+3JP4nz0V3iZjb3MWM8xjhvhiOZ4meUP + vMzu2tBdG/rqrg19ddeGvvpnaEOnOeg599DQqpBmOOi9HcN3Dnon+JrMuck63aaq9d2+tPuLzlG6 + jhYw1+KIneIl1PBGN2o23RQvoUVsvGYdqf9W8Ds74Q2/qN+Z2oG6UVPrc9ahPF75PLPq/hdzjz35 + kNxK99hZR+1E99i297pRLe8Gucfecge9/Mt4gz/zhHEM9L1k8ONQ1wT9xJY2QR1sqQOob4J2C0A9 + bKk/hGbTBO0WgIbvAAJQaoJ2C0AjbCkBlJug3QLQBFvKAG0q09QtAM2wpVCmualMc6cP9Qa2FMo0 + t5SpN90CUIItPSxTNi1l6qlbAMrfAQSgLWXqD3uUEtTClhJAW8rU224BqIMtZYC2lKl33QJQD1tq + AdpUpr5bABpgSx1Am8o0dAtAI2wplCk1lWnsFoAe9igmKFNqKtPDHqUEzbClUKbUVKa504cGA1sK + ZUotZRpMtwCUYEuhTKmlTAN1C0ChRxGUKbWUaYAepQOFHkVQptxSpgF6lA4UehRDmXJLmQboUTpQ + 6FEMZcpNZQo9SgcKPYqhTLmpTKFH6UChRzGUKTeVKfQoHSj0KIYy5aYyhR6lA4UexVCmtqlMoUep + QCP0KAtlalvKNEKP0oFCj7JQpralTCP0KB0o9CgLZWpbyjRCj9KBQo+yUKa2pUwj9CgdKPQoC2Vq + W8o0Qo/SgUKPslCmrqlMoUfpQKFHOShT11Sm0KN0oNCjHJSpaypT6FE6UOhRDsrUNZUp9CgdKPQo + B2XqmsoUepQKNEGPcg6hcy05J2inDh0loQeQTHz4c8OUGvV/C0BhnsLXx+XnucbBE7TTgB4+vNR6 + yoVUncdcFVXlORdSdR50VVSVJ11I1XnUVVFVnnUhVedhV0VVedqFVJ3HXRVV5XkXUnUeeFVUlSde + SNV55FVRVZ55AVXpoVdFVXnqhVSdx14VVeW5F1J1HnxVVJUnX0jVefRVUVWefSFV5+FXRVV5+oVU + ncdfFVXl+RdSdR6AVVSVJ2BI1XkEVlFVnoEhVechWEVVeQqGVJ3HYBVV5TkYUJUehFVUlSdhSNV5 + FFZRVZ6FIVXnYVhFVXkahlSdx2EVVeV5GFJ1HohVVJUnYkjVeSRWUVWeiSFV56FYRVV5KoZUncdi + FVXluRhSdR6MVVSVJ2NI1Xk0VlFVno0BVenhWEVVeTqGVJ3HYxVV5fkYUnUekFVUlSdkSNV5RFZR + VZ6RIVXnIVlFVXlKhlSdx2QVVeU5GVJ1HpRVVJUnZUjVeVRWUVWelSFV52FZRVV5WoZUncdlFVXl + eRlQlR6YVVSVJ2aHVK1HZhVV5ZkZUnUemlXUpqdm18XxmVc+xzw+LTLORkOj/9LHfGWDixxM2g2+ + /OaaXdow7dZ2k3frrXWZ7x/hKxvHk+LRLsGzF9Re6RLM5VAm78qWUoqXuwQTp+16F/ymD33uhxyG + ssm5j2EbzYbCcMxuHm9q3WaOcbXlcx4/J07OsU2ciC9xtnZrvzXRulCmXDAh+LzL22Hr8i6ErY9H + 7GeZi/FoP+TZxg1XWiGHnKIbc7f8aGrN/hLH57wu+LyxbiifoKPst6Mnsi+frF0P7qgpmzgnt9SM + fW+FfOUnSt6Xs4xPMbjgygf78b21m10sH3tMZjuwG1KMu2RyKOXqdsZNNruf3Fv2+Wjf55Z1yYta + PjcswL+zfL6dls+jvy+vyNCttnzOQcvy+cnPHxaaJZcPf35/i3mdLZ+ZVmnyRFO0fLb00NPKUjrO + 8rn8ussrarJ8nv8hHGH5zCyOiCy+iiy+iiy+iuLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLD + yeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLD + yeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLD + yeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLDyeLD + yeLDyeLDyeLDyeLDyeLDyeLDyeLDyXn/SYulIYsxIosxIosxohhpshhpshhpshhpshhpshhpshhp + shhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhp + shhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhp + shhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhpshhp + shhpshhpshhpshhpshhpshhpshhpshhpshhpshhp8mikeYtMl9msyLty1RmoTIlsSlO91HPZppXL + 5Uo9RArB0VWWy6HcErjSUMr5PZRbH8tXWC5Ht4rkyqxJlHJ5sa2Wy3dt4K4NfHXXBr66awNf6bSB + 002Pzaps60zTY7OybO5Mj09yozv+NmP/JUurWd/sN/pixo8nHpKbafx4mufqvEOmYE7b/IZf2JxW + 6UBdRwfIa1GQJ3uKtrzXl/cUPf0I3c2oS46XgtV/27vdqFl1Z/U/94idZvU/+41u1Gy6KVb/t970 + ePzqaObF8lHQbgGohS09FCPaFrOu8ZuQBaCHwlELSxNsi1nX+GXNAlAPW0oAbTFDYN8tAA2wpQzQ + BtOO8SuvBaARttQCtMG0Y/xWbgFogi11AG0q09QtAM2wpd4f/Nxi1jV+t6kPtYdiUQvLEWyLWdf4 + 9esCUIIthTJtMesavyFeAAo9CpYi2BazrvFL7AWg0KNgIYJtMesav2dfAAo9CpYh2BazrvFRwAJQ + 6FGwCMG2mHWNTysWgEKPclCmLWZd4wOVBaDQo2ABgm0x6xqf+SwAhR4Fyw9si1nX+FhqASj0KFh8 + YFvMusYnZ/pQBz0Klh5Y11KmDnqUDhR6lIMy9S1l6qBH6UChR3koU99SpuDVpQSFHuWhTH1LmYJT + lxIUepSHMvUtZQo+XUpQ6FEeytQ3lSn0KB0o9CgPZeqbyhR6lA4UepSHMg1NZQo9SgcKPSpAmYam + MoUepQOFHhWgTENTmUKPUoGCOVeBALSlTMGbSwkKPSpAmYaWMgVnLiUo9KgAZRpayhR8uZSg0KMC + lGlsKVNw5VKCQo+KUKaxpUzBk0sJCj0qQpnGpjKFHqUDhR4VoUxjU5lCj9KBQo+KUKaxqUyhR+lA + oUdFKNPYVKbQo3Sg0KMilGlqKlPoUSpQMOIqEIC2lCn4cClBoUclKNPUUqbgwqUEhR6VoExbQjgZ + PLiUoNCjYHmjbQnhZHDgUoJCjwJrYtsSwsngv6UEhR4FxsS2JYSTwX1LCQo9CmyJbUsIJ4P3lhIU + ehSYEtsmw3Nw3lKCQo8C6wbbEsLJ4LulBIUeBYbEtiWEk8F1SwcKplsW7IhtSwgng+eWEhR6VMYy + 9bkF2i0APTzzO0Ph8OeWyQ8eVkpQB1t6OPldS7Qlg4OVEtTDllqANk1+3y0ADbClDqBNkz90C0Aj + bKlXgCaAMmxpkxIhHbYTJWj6xJY27X76xJY2QTNsKXxQ1nALtNOH5sN24kCJ4Cw1QbsFoARbSgBt + OZ9m6haAMmwpq0A7DSiYaympBSuqilwQqTp6wYqqIhhEqo5isKKqSAaRqqMZrKgqokGk6qgGK6qK + bBCpOrrBiqoiHESqjnKwoqpIB5Gqox2sqCriQaAqqQcrqop8EKk6+sGKqiIgRKqOgrCiqkgIkaqj + IayoKiJCpOqoCCuqiowQqTo6woqqIiREqo6SsKKqSAmRqqMlrKgqYkKk6qgJK6qKnBCpOnrCiqoi + KASqkqKwoqpICpGqoymsqCqiQqTqqAorqoqsEKk6usKKqiIsRKqOsrCiqkgLkaqjLayoKuJCpOqo + CyuqirwQqTr6woqqIjBEqo7CsKKqSAyRqqMxrKgqIkOgKqkMK6qKzBCpOjrDiqoiNESqjtKwoqpI + DZGqozWsqCpiQ6TqqA0rqorcEKk6esOKqiI4RKqO4rCiqkgOkaqjOayoKqJDpOqoDiuqiuwQqTq6 + w4qqIjwEqpLysKKqSA+RqqM9rKgq4kOk6qgPK6qK/BCpOvrDiqoiQESqjgKxoqpIEJGqo0GsqCoi + RKTqqBArqooMEak6OsSKqiJERKqOErGiqkgRkaqjRayoKmJEoCqpESuqihwRqTp6xIqqIkhEqo4i + saKqSBKRqqNJrKgqokSk6qgSK6qKLBGpOrrEiqoiTESqjjIRqErSxIqqok1Eqo44saKqqBORqiNP + rKgq+kSgKgkUK6qKQhGpOhLFiqqiUUSqjkixojapFK9LWKdZ2XKTHLPzPIaFXB4GmLb9rt+YPOxs + ytHFNbuw6V0q/w/DQGOG3CfjHb3zho9PA2w0qr48+jCsQrnadq5cbll20VwSTFquvrabdeR+67fk + yPbb3q13ntIw9GV/j0nsDNml4GYEk840fL8y3tFx6XnlFt25Mq2yCZd8oDHEspe70DNvfUw7vy2X + Sxx2623c+rw5Yi+ds3ZGXudM99Ur99GS9T6VzXaZmEy+ZNa6ZDZ9H3a7tOvZ95w975jWZS+TH9ax + P2bWlvY5I8Jyvg32VSGzyVF2ef858uUhs4OhPu/6YPPWbuzWDZvNJpp+k3Z5vd769RH7yTktspfv + Q2aXjeqcHZlwF9V5e6M67So6c4ujOmMOUSWq0/lffnr0QaGVi4iDC6Dy8/vb1usc1enSqmyrZlRn + mWbuoSUJFfp0VOf062xWbNLcqM6mD+GIqE5JHZPQMckck8gxSRyTwDHJG5O4MUkbk7AxyRqTqDFJ + GpOgMckZk5gxSRmTkDHJGJOIMUkYk4AxyReTeDFJF5NwMckWk2gxSRaTYDHJFZNYMUkVk1AxyRST + SLE8jSVj5IXkheXFyouTFy8vQV6ivCR5EQoJhYRCQiGhkFBIKCQUEgoJhYQiaXgkaXgkaXgkaXgk + aXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgk + aXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgkaXgk + aXgk85JkYpLMTJKpSTI3SSYnyewkmZ4k85NkgpLMUJIpSjJHSSYpySwlmaYk85RkopLMVAlak5w1 + iVmTlDUJWZOMNYlYk4Q1CViTfDWJV5N0NQlXk2w1iVaTZDUJVpNcNYlVk1Q1CVWTTDWJVJNENQlU + kzw1iVOTNDUJU5MsNYlSkyQ1CVKTHDWJUcvT2DyNLbUhLyQvLC9WXpy8eHkJ8hLlJcmLUEgoJBQS + CgmFhEJCIaGQUEgoJBQJACQJACQJACy1IS9CkQBAkgBAkgBAkgBAkgBAkgBAkgBAkgBAkgBAkgBA + kgBAkgBAkgBAkgBAkgBAkgBAkgBAkgBAkgBAkgBAkgBAkgBAkgBAkgBAkgBAkgBAkgBAkgBAkgBA + kgBAkgBAkgBAkgBAkgBAkgBAkgBAkgBAkgBAknlJMjFJZibJ1CSZmySTk2R2kkxPkvlJMkFJZijJ + FCWZoySTlGSWkkxTknlKMlFpnKm3KJD1QQwr58pkCuU/MUZb7vgvTWR94M2q3MiZEMvc8MGNd5WX + RbI+CLSK1uVsXKmX8vnZKzJZyZSr2Wict4nyuM4gzAhlHb+kGL/Xumv4dw3/ruHfNfy7hn/X8Oc2 + /BOid8k+JH7o88okOjZ69/2YHG939O4JQaCzvjM4eL7SmBh3yht+ycRUvQN1HePjFsram33QPtus + uv+lUp1PPyQ3M9X5cx61U4NSm9/tC0dbKh2luxPUJUfshKDUlje6UbPppgSlXouDdVo2eON73ajp + dIOywW939G75WM3h4o1jrmiOgnYLQCNsqQXoXHtOgXYLQBNsqQPoXHtOgXYLQDNsqT+Ezk4hE2in + Dz1ctDFCADrXlVyg3QJQgi0lgM510hRotwCUYUuhTGenkAm0WwBqYUuhTGenkAm0WwDqYEuhTGen + kAm0WwDqYUuhTGenkAm0WwAKPSpAmc5OIRNotwAUelSAMp2dQibQbgEo9KgAZTo7hUyg3QJQ6FEB + ynR2CplAO31ogh4VoExnp5AJtFsACj0qQJnOTiETaLcAFHpUhDKdnUIm0G4BKPSoCGU6O4VMoN0C + UOhREcp0dgqZQLsFoNCjIpTp7BQygXYLQKFHRSjT2SlkAu0WgEKPilCms1PIBNotAIUelaBMZ6eQ + CbRbAAo9KkGZJp4ZHiDQTh+aoUclKNNkm6DdAlDoUQnKNLkmaLcAFHpUgjJNvgnaLQCFHpWgTPPc + OA6BdgtAoUeN1iQHP8+N4xBotwAUetRoTHLwc1OZQo/SgUKPGm1JDn5uKlPoUTpQ6FGjKcnBz01l + Cj1KBwo9arQkOfi5qUyhR+lAoUeNhiQf/MymqUyhR2lAR5EnQADaUKajOm4BKMGWEkAbynQU8C0A + ZdhSBmhDmY4awwWgFrbUArShTEcZ5AJQB1vqANpQpqNScwGohy2FMqWmMvXdAtDDHlUgAG0q08Me + pQSNsKVQptRUprFbAJpgS6FMqalMU7cANMOWQplSU5nmTh9K0KMIypRaypSgR+lAoUcRlCm3lClB + j9KBQo9iKFNuKVOCHqUDhR7FUKbcUqYEPUoHCj2KoUy5pUwJepQOFHoUQ5lyU5lCj9KBQo9iKFNu + KlPoUTpQ6FEMZTo7flOg3QJQ6FEWynR2/KZAuwWg0KMslKltKlPoUSpQhh5loUxtS5ky9CgdKPQo + C2VqW8qUoUfpQKFHWShT21KmDD1KBwo9ykKZupYyZehROlDoUQ7K1LWUKUOP0oFCj3JQpq6pTKFH + 6UChRzkoU9dUptCjdKDQoxyUqWsqU+hROlDoUQ7K1DWVKfQoHSj0KAdl6pvKFHqUCtRCj/JQpr6l + TC30KB0o9CgPZepbytRCj9KBQo/yUKa+pUwt9CgdKPQoD2XqW8rUQo/SgUKP8lCmvqVMLfQoHSj0 + KA9lGprKFHqUDhR6VIAyDU1lCj1KBwo9KkCZhqYyhR6lA4UeFaBMQ1OZQo/SgUKPClCmoalMoUep + QB30qABlGlrK1EGP0oFCjwpQprGlTB30KB0o9KgIZRpbytRBj9KBQo+KUKaxpUwd9CgdKPSoCGUa + W8rUQY/SgUKPilCmsalMoUfpQKFHRSjT2FSm0KN0oNCjIpRpaipT6FE6UOhRCco0NZUp9CgdKPSo + BGXaIsEjBz1KBeqhRyUo0xYJHnnoUTpQ6FEJyrRFgkceepQOFHpUgjJtkeCRhx6lA4UelaBMWyR4 + 5KFH6UChR4EEj1skeOShR+lAoUeBBI9bJHjkoUfpQKFHgQSPWyR45KFH6UChR4EEj1skeOShR+lA + oUeBBI9bJHjkoUfpQKFHgQTPNknwPPQoFehhYOgIAWhLmR7mhWpBCbaUANpSpodpoVpQhi1lgLaU + 6WFWqBbUwpZagLaU6WFSqBbUwZY6gLaU6WFOqBbUw5ZCmTZJ8A5TQrWghz3KggTPNknwwGdCCRph + S6FMmyR44DOhBE2wpVCmTRI88JlQgmbYUijTJgke+EzoQMFnwoIEzzZJ8MBnQgkKPQokeJZbyhR8 + JpSg0KNAgld+Ti3QbgEotBMmDz/PDUZ1eh47FVXFZAepOi47FVXFZgepOj47FVXFaAepOk47FVXF + ageoSl47FVXFbAepOm47FVXFbgepOn47FVXFcAepOo47FVXFcgepOp47FVXFdAepOq47FVXFdgep + Or47FVXFeAepOs47FVXFegepOt47FVXFfAepOu47FVXFfgeoSv47FVXFgAepOg48FVXFggepOh48 + FVXFhAepOi48FVXFhgepOj48FVXFiAepOk48FVXFigepOl48FVXFjAepOm48FVXFjgepOn48FVXF + kAepOo48FVXFkgeoSp48FVXFlAepOq48FVXFlgepOr48FVXFmAepOs48FVXFmgepOt48FVXFnAep + Ou48FVXFngepOv48FVXFoAepOg49FVXFogepOh49FVXFpAepOi49FVXFpueQquXTU1FVjHqQquPU + U1FVrHqQquPVU1FVzHqQquPWU1FV7HqQquPXU1FVDHuQquPYU1FVLHuQquPZU1FVTHuQquPaU1FV + bHuQquPbU1FVjHuQquPcU1FVrHuAquTdU1FVzHuQquPeU1FV7HuQquPfU1FVDHyQquPgU1FVLHyQ + quPhU1FVTHyQquPiU1FVbHyQquPjU1FVjHyQquPkU1FVrHyQquPlU1FVzHyQquPmU1FV7HyAquTn + U1FVDH2QquPoU1FVLH2QquPpU1FVTH2QquPqU1FVbH2QquPrU1FVjH2QquPsU1FVrH2QquPtU1FV + zH2QquPuU1FV7H2QquPvU1FVDH6QquPwU1FVLH6AquTxU1FVTH6QquPyU1FVbH6QquPzU1FVjH6Q + quP0U1FVrH6QquP1U1FVzH6QquP2U1FV7H6QquP3U1FVDH+QquP4U1FVLH+QquP5U1FVTH+QquP6 + U1FVbH+AquT7U1FVjH+QquP8U1FVrH+QquP9U1FVzH+QquP+U1FV7H+QquP/U1FVDICQquMAVFFV + LICQquMBVFFVTICQquMCVFFVbICQquMDVFFVjICQquMEVFFVrICAquQFVFFVzICQquMGVFFV7ICQ + quMHVFFVDIGQquMIVFFVLIGQquMJVFFVTIGQquMKVFFVbIGQquMLVFFVjIGQquMMVFFVrIGQquMN + VFFVzIGQquMOVFFV7IGAquQPVFFVDIKQquMQVFFVLIKQquMRVFFVTIKQquMSVFFVbIKQquMTVFFV + jIKQquMUVFFVrIKQquMVVFFVzIKQquMWVFFV7IKQquMXVFFVDIOQquMYVFFVLIOAquQZVFFVTIOQ + quMaVFFVbIOQquMbVFFVjIOQ2uYc9EP3l18e/fu/P/7+yf6X8yh+31ujWCNrd8275ZuR3LjI2zp/ + /z+/uv9Nf9F/e96fvXkx3H/49/uPzje/lc17dLb95vnri/Pn6zcXz1+ePT3bvTz/vR//eP/h//77 + /Z+e//fw89nzi/sP7//1X8bNKD/ff2hWxjubbQzlVrn8MaTov7r/+Ldh81+v3/w+0v/Wv3hTfvF+ + WJMxa045OWOHntd5Z9PWu205jju3oYJ89OLXl+fPL377fXyPb/z9f8i7PD37lz8vhtf3H/pobPjq + /vf97yMQj+5PP8Kx/enRh0fySp+j883q//3+orzhFfsZKYZcDqT1V+3mxg+bXHZyHXe70uYyubRh + l3oXst8Y44/YzejZL7ObL17+euU+upzC6E2RfAgpO28/vo+mTLAh5a3bBO/LXtKuXNjvdsPG91va + bM0xHyVzsnGRnSxVsnr++uUnPlAKKw7elr107JxNLn18X8v07KNzm8S7HGi7G5J1u7QeiDZhHeMx + +1rOyGXK5MX29oq95FVylF12oRReGe6fPHAf30/r+81g3GYd+12/IbvLfm2yGeyW1uUY7Y7YT85p + kV38fbhY/Z/X5TT0j+nc9ef3z3/97eIvL/pfy/v8fPb61bB5vns+bMsWPt0OZxfjD+evp3PW+58X + OOofvt2zP1+Ne/3j+cvtm81wvj+5Pt1OH83BVoyEjw193D39pv5tWtHHfvmHi9/KP3/4D28P+6Of + /lZ2fjx9f+S9/aqU+Czej98+uYL39PHfDN17/PLFi2Ez9on9r97bPS9/cz5vwzfPh7PN8G6KXfGu + Zt4hkc/k4vHLN2cX5TfGOdQNr85fbobXr5+f/frji/7srEyeh/e/f3k2FMD+98ublzY5PHs+QcZ5 + 8MCEB5yfET/06aHNq1JS/zHWQCFcjK1yP+XOSgt983vZCPn5p99enl/sN+V/9d1TmcUf/u04L6e/ + /Otw0W9La/5JZvRm33v/fv/n7rvye79dXLx6/fDrrzfbs9XQn1/8Nv7u6qx/3a9+ffnH129+//3r + X2Xeff0HrcIq3H9XjT//9a8Pvi0/7o/qNLHGX/jHP8ajW+qrH99m87J8Aq8uHlzIEd3DyrC3//B8 + PEzflovfZDixyQ9+/OHxdz/8/E35lfPhj+cjevod+ur+Wdn4PwYZ8cnC+/6g8Bz7ePDzB2LyX17/ + 35cX0xa9nXMPDjbuMcecy9m83Kh/sHHl0/7j+XY4l995//dygVP+qn/16sX+eH/9x9lWDurm9/NV + Oaj/Yzr1fLCH5bB/OCWseWboofUPPa3KdcE0Jcqw8YA+G35/9fK8f/Hk/12U+TD+Tdef/Tq8n1d/ + v//kbFsm4cdm2rjrD519aHhFyf5H2YJ/GX59fnZ25a+XuRlXZMuvl0/2/v409HO3zIfwaLt9Ph6y + /sWjC7lsHGTOTz1l/ON9SvRd+U1KLC9WXpy8eHkJ8hLlJclLnl6ykRehZKFkoWShZKFkoWShZKHk + iVIuhOWF5IXlxcqLkxcvL0FeorwkeREKCYWEQkIhoZBQSCgkFBIKCYWEwkJhobBQWCgsFBYKC4WF + wkJhoVihWKFYoVihWKFYoVihWKFYoVihOKE4obj9Z0SdfGLyYuXFyYuXlyAvUV6SvOROPjF5EUoW + ShZKFkoWShZKFkoWSp4o5ROTF5IXlhcrL05evLwEeYnykuRFKCQUEgoJhYRCQiGhkFBIKCQUEgoL + hYXCQmGhsFBYKCwUFgoLhYVihWKFYoVihWKFYoVihWKFYoViheKE4oTiCuU/353knz397sm+j/Sv + 35wP2x/78/IvF28vhv710U8X/diVxj/+OJxvyjnpr8+nJjjeEJbr/6/e/8MPby5+2P1L6Znb1/t/ + HDvdW+D+Hb//+pF0s1fl1Pnhae5/lib+3y/PLvoX+3/65uXv/fOpl307vCyI8z/HP0/88vZdOZWX + E+OL/enj34bXF2//6fHLl+fldTrlPvBuFUM5PuWz8N6XT6u89cs3F7997Jdd6W/ZUvQpulBmcyrX + vU/6y8C84kLOOY5SJWfK735fGvTHwWlVbo/KzbY1JuUY6R//WQ7Ns/N+81/jPj3+czPeVY/b9mP/ + +vV+l8Y/lr905aZx/BLg7tx4d268Ozcuf24spTleB/24v/4br5ukHvc3DeVifTgfL2W+ObymGy/z + 7cNypW/LWYT8f0w3IfsxP7+aLgCPGFPOjO/vjbphN5yPtzjTTfe763BejXeDeDsAF2rn04Xa+Kvj + zry7JXv8Yjqr/H38q/f3a4dj73844N0t4D/Ge6By2zJsfz5/IUfk8B6jl68EV+OV3urVy23fbz52 + zyH/8mD8rQcvX71+sHnz+5sXb14/KBfcF2W3h+3XH9mbsh8f++vWq9H9vfg3w+vN+fNXcst0/5uX + //fsxct+e0//jfbT4Nsnz+598+jZo2lqyMF7bcuRu7aH5Nlvz1/fe/H87L/u7W+HXt/bPj8vm3Rv + +/Zg9ZvxpvjeH8/7ez/Zexcv75V76nvvbwNhz+/97emje9887Z48fnbv0ePHT3766YNjcRMn0v5L + 4M8yl9691/6gPvn3Z0++/+bJN/f++uTZo2s7ry45QmpT66qjcBNn1LtvLj/LnPrg3W7UrLr0KN2o + efVm/eL55jOd3N893/hcfe+DNzx5al2LA3WjptbnLMbxEeFnmVXyRjfqRPWxY3MdJ9Jruzkfpucg + fbm6xy3uXz2/N5xtX718fnYxbs35cHH+fPhjuHchX1ef/3nvg+H3/uhfPN/e2708v/e63GM8OB9+ + HR/x7Pfxtd3v3fv9+NvTJ/92r3vy3aNnZV+efv+XH7q/Pnr29Ifvp/uhp2ev3lzsv5aevgSZPp79 + X/z48sWfv748e/3L9y9/FxlDZno2essY88sfJrxtEh+VVRzkMTGswjziYvkoaLcA9FBb5cCdxlky + LdBOHwqrGp1ld/izbYJ2GtDDktb6+CuqyuePVJ0JUFFVZgBQlaZARW2aA9dFAsWrkLIN5CNz8Fdp + LPpNn4lNpo3p/SZtfEibXUo7zuNJtO/vH6GxSHy8xqLlGvxKCZSxFLLxOXrrKOaQLhHNsIl9T/02 + lQF5u/aBNjy4SHFtNonycMSOWst2kT09QupFBctplLWJpi1fspc5GSaTosu8YUMuk9ltcuJsnXHh + GKkXmRCiWWQ/rxYGlZ10oxtedjS+uMu1XuvBbRwba4aB+n4wOzsYu3OGUywz+aidLAfG0VI7eYTW + a5y5YfSszzmnGDPnyz7SFLjfxNHCiAxzdFvelaGBk7XlOKRjRIqh7O0i+zqJ95ZVQM3+ivFOAXV7 + FVDlFELxNiugSn1oKaC+PbwCiubwCugDC4prrYByK8qkrICKD4lXzuQjFVDxoXEr62ODAmr+h3CE + AoqDPEEO8hw6yHPoIM+hgzyHDvIcOshz6CDPoYM8h47yHDoKJQolCiUKJQolCiUKJQolCiUJRRQH + LIoDFsUBi+KARXHAojhgURywKA5YFAcsigMWxQGL4oDzfo/ksWuQh7dBHt4GeXgb5OFtkIe3QR7e + Bnl4G+ThbZSHt1EoUShRKFEoUShRKFEoUShRKEko8pie5TE9y2N6lsf0LI/pWR7TszymZ3lMz/KY + nuUxPctjepbH9Dw+pr9NWhsXV6ZcJpEv1+Eh+uzcFWKbUK6wyiVe5nLiYTfeY10htqG8Mi4HO4aL + ulxerhDbRLcqF9eUgjEFXO47WsU2d2X4T1SGp8s6ylVltDNlHW/H3Mk62r9sP77Fnv40vuW9vvzj + iNOP0HV8IrHQw8AZB0vnqWnzG37hp6ZKB+pGTa3PWYqnPTWd/UY36jR1U56aXouDpaAYanu3GzWl + /jkUQ5/ziJ0mkp39Rl9MJHviIbnWItk7WQcYUh3x8R4FnTtnjoFa2NJDIx53pFEvQrsFoA62lAF6 + nA0PQrsFoB621CLUtUC7BaABttQdPkg70qIXod0CUFDKgEGvO9KgF6HdAlDQyYA9rzvSnheh3QLQ + DFsKZXqkOS9CO30oGFA5sOZ1R1rzIrRbAEqwpVCmRxrzIrRbAAo9Cmx53ZG2vAjtFoBCjwJTXnek + KS9CuwWg0KPAktcdacmL0G4BKPQoMOQtP8cWaKcPTYefvjfWH/7cMvnT4aevBHWwpYeT3x9pbInQ + bgGohy09nPz+SFtLhHYLQA+vUDyYWvojTS0R2i0AjbClBNCWxpditwA0wZYyQFsaX0rdAtAMW2oB + 2lSmudOHZgNbCmV6pJklQrsFoARbimXqbQu004CC4FrpNrqiqtxHI1XnRrqiqtxJI1XnVrqiqtxL + I1XnZrqiqtxNI1XndrqiqtxPI1XnhrqiqtxRI1XnlrqiqtxTI1XnprqiqtxVA1XptrqiqtxXI1Xn + xrqiqtxZI1Xn1rqiqtxbI1Xn5rqiqtxdI1Xn9rqiqtxfI1XnBruiqtxhA1XpFruiqtxjI1XnJrui + qtxlI1XnNruiqtxnI1XnRruiqtxpI1XnVruiqtxrI1XnZruiqtxtI1XndruiqtxvA1Xphruiqtxx + I1XnlruiNt1zX5flyKMUn3McowsjBxMd0yWLHX12m+1Am7I5Ka3jaG/PZt277WgVvzbjcsJPLu20 + wcxYpjtf3HqVtf2xy6791g2021hXLktjzEPabdZmt6NNStvebo6ytp+z7LpFyHTl4lVK0VH5KEMI + hsZd/fh+rsM2h/JpM6ch5vWa7ZbM2qc1lzm9YXvM55mDX2ZPPxU9wWRcGWh9KPdgnu0ln+V2vTY+ + mN5tNoMf8hCSs9uN9W633RneHBPHwGxCWGbSHrscuWCtCT7F8dOyiS9ZRu9iXGfb97bfbNbZDbuQ + 1tv1LlvOA4Wej/lAy6EMfqmdXXo98mw119165Nu7HplWNt3q9cjl3K+zHjn88uTng0ueaA387G/E + euS4KjfDuuuRfSzklWFz3Hrk8ddNUyJDy4dwTCLDtExw/M+0YHBadDgtOZwWHE7LDafFhuIxLhbj + 4jAuFtjiLy724uIuLubie4fy6b/TSr3xP9OSv2nB37Tcb1rsNy31mxb6iSm2eGKLJbY4Yoshtvhh + ix22uGHvLbVv1TpcPy2AHf1onHM25LGXX7oMN9pVuRK21vuQbXbmilW4YQo0o+hzueQrpw7yV63C + 9SvKJpkx1yyRyW7OKtzwoeX9P8PkO2X1KT105iG7VfmUjl59ejjmbvVp6+KAOSfUkxZ0NbzRl159 + c/KxuU0Lb2YdrJMXdLW+242aUncLuuYesROXx7e9142aU7d9efysg6WxPP6EN/yiy+PVDtSNmlqf + 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 + 1ZE5VFQVnQNSdYQOFVVF6YBUHalDRW3SOlyfxAHOKXGkSOWOOyQbPu5pHsiUX8q8Wfvse8o2bAYy + qcyaQOR3x6TMWyr3okcnsDf71Vzu4B5XPviYoiVvQ5oi7z+2q9bYSH0a1maXctnBjRv84HaJBzOk + yMeY1cdsbcEsta9XBw/Y0Y+/fKbjp+kvT5BwaeeGLec+5a3bbJNlu1nvYt7Y9W7Tp/Uxn2iIYUby + wEyXtCt3kn2kFNL4AaXLwxV4s9saO1jP6+jWPmxzX343523Y9lteHzNrOeSQFtnHT6Yr8CqGMmO9 + pzjFZFyeOJA3JvS0LeW1NUP5M0frkxscc9nroT8qcSCbRfbycyUOzDZ1vEscuL2JA2lVritvceJA + LudPrcSBRz8de612rRMH7CpT0EwcKMwwJg5EzsckDky/7twqWGpIHJj/IRyROFD7ZsfJcztKbvvk + uR0nz+04eW6nyXM7TZ7baRqbprFpGpumsWkamyT0fRqbprF5GpunsXkam6exeRqbp7F5GpunsVkS + 4/eR8ZIZbyQ03khqvJHYeCO58UaC440kxxuJjjeSHW+E8jZ5Xij77Pl9+Pw+fX4fP7/Pn98H0O8T + 6EkoLBTeB9gLhYUiRu0kTu0kVu0kXu0kZu0kbu0kdu0kfu0khu0kju0klu0knu0kpu0kru0ktu0k + vu0kxu0kzu0k1u0k3u0k5u0k7u0k9u0k/u0kBu4kDu4kFu4kHu4kJu5oED5Ojem/k7l4nMzF42Qu + Hidz8TSZi6fJXDxNY9M0Nk1j0zQ2TWPTNDZNY9M0Nk9j8zQ2T2PzNDZPY/M0Nk9j8zQ2T2PzNLZM + DXkheWF5sfLi5MXLS5CXKC9JXoRCQiGhkFBIKCQUEgoJhYRCQiGhsFBYKCwUFoo40pNY0pN40pOY + 0pO40pPY0pP40pMY05M405NY05N405OY05O405PY05P405MY1JM41JNY1JN41JOY1JO41JPY1JP4 + 1JMY1ZM41ZNY1ZN41ZOY1dPoVn+LMiQyrXIq97/WMo0haOUu4dIMiXIpWI6gi8xjhphJPl2eIVGm + 52rUH2fO1o26znxFiISLq/FLhsSUM5ebWudaUyTuzvZ3Z/u7s/39u7P9/Rln+5NzQTiU85eflwsy + jQl3uSAnWTYff8dwYpzD7Df68nbWJx6b6+hkfS0OloJDetu73agpdaMc0q/FEZMvdD/DlJI3+mLB + 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 + ljngnbnN68qISWtd2U9Pj71gv87rysisvHXK68r8Q8qrcjl35LoyPwrxiUPDurL5H8IR68qOX7oh + bv5i5i9e/mLlL07+YuQvPv5i4y8u/mLiLx7+YuEvDv5i4B+msUHe98jlE+OWTP+dll6I579Y/ovj + vxj+i9+/2P2L27+Y/YvXv1j9i9N/mMaGaWyIt2p91bhmimNyFGkMfaCr1le5MstzLOcUT1MwRHRX + rK+KKyqX48GNdwM5hXzV+ipa5ZwiZ1duTxK3Lq+6m8fVPD5xmdG0YNa7WcuM9mPS3TKjk8TFx5/p + NSTYbe/25SXYGkfpOupkr8URO3mxSMt73ag5dbdYZN7xOm0d2+w3+mLr2E48JDdzHdtpix7mHTKF + 1SHNb/iFV4coHai7c9QlB+20Rduz3+hG9bubsmj7bpnRMiLeRfS2N0gaC1uqIo1dRm8LW6qht11I + xAtbqiLiXUYZ/B1AmpTBi8iNAQqqrQBlGlrK1INoSwcKmq0AZRpaytSDZEsHCoqtAGUaWsrUg2BL + Bwpn/gBlGprKFORaOlBoJwHKNDaVKYi1dKDQoyKUaWwqU+hROlDoURHKNDaVKfQoHSj0qAhlGpvK + FHqUCjRAj4pQprGlTAP0KB0o9KgIZRpbyjRAj9KBQo+KUKappUwD9CgdKPSoBGWaWso0QI/SgUKP + SlCmqaVMA/QoHSj0qARlmprKFNpJgopKTRUFZ/4Ekz+16b+X0VQvo36+UTpllTu0z6R+VrlH+0ya + apW7tM+k1Fa5T9PRf3+KqnOnVlFVbtWQqnOvVlFVbtaQqnO3VlFVbteQqnO/VlFVbtiQqnPHVlFV + btmQqnPPVlFVbtqQqnPXVlFVbtuQqnPfVlFVbtyAqnTnVlFVbt2QqnPvVlFVbt6QqnP3VlFVbt+Q + qnP/VlFVbuCQqnMHV1FVbuGQqnMPh1Sdmziktt3FXZfVe1Pq1HieCYY5TwuiLlnAtwt9THHY+txT + P+xcDGvv133Onni92R616IstpeNXCc1XS129uC1StDGUtpqTs5elwoXtenAc+sFuA22t82uKvC6H + x/RuTXY4ZjeTMcvs5qcW8LGhwD6xzdMtjr3koyxzsmCHFHa76Nym90OIbhjsZtOHzY6OWtdG5HjG + UsxGaclVq/iODTTc9XG3STGUffOWd9ls4oY2oXyc6/Vmnf0xe3t8oGGbcPTy/aSV41jafrA2plwg + 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 + uaQf3+Zttv2FHNH3ITkHofffWrLJcC6F8UHo/bu8+vF3yonmrGz8H4OM+ETh5V++f/RBoWXDJsLP + 7wrvbRj85t2ce3CwcY85jgHFyRr7wcbtw4HO5Xfe/71c3kypPK9e7I/313+cbeWgbn4/X5WD+j/2 + wTfv9nB7GD1qzTNDD214SHFVrmWmKVGGjQf0mWT6fBAR3fVnvw7v59Xf7z+ZopY/NtPGXX9o+KHJ + 5cKjYL+6/y/Dr8/Pzj7163FVLlLKVpTN2J+Gfu6W+RAebbfPx0PWv3h0IReN+4DXqbNMCUMkycok + 0cok2cok4cok6cok8cok+cokAcskCcskEcskGcskIcssIcssIcssIcssIcssIcssIcssIcssIcss + IcssIcssIcssIcssIcssIcssIcssIcssIcssIcssIcssIcssIcssIcssIcssIcssIcssIcssIcss + IcssIcssIcssIcssIcssIcssIcssIcssIcssIcssIcssIcssIcvls5IXoTihOKE4oTihOKE4oTih + OKF4oXiheKF4oXiheKF4oXiheKF4oQShBKEE+aQlcJkkcZkkcpkkc5kkdJkkdZkkdpkkd5kkeJkk + eZkkepkke5kle5kle5kle5kle5kle7lMBnkJ8hLlJcmLUCR7mSV7mSV7mSV7mSV7mSV7mSV7mSV7 + mSV7mSV7mSV7mSV7mSV7uUwGeRGKZC+zZC+zZC+zZC+zZC+zZC+zZC+zZC+zZC+zZC+zZC+zZC+z + ZC+zZC+zFYoTihOKE4oTihOKE4oTihOKE4oTiheKF4oXiheKF4oXiheKF4oXihdKEEoQSiiU/3zX + mp49/e7Jvvv1r9+cD9sf+/PyLxdvL+H+9dFPF/3FlLT8r49+HM435Uz61+dT6x5vYstl7lfv/+GH + Nxc/7Kb8+tf7fxz781vg/h2///qR9OBX/Riy9v7k/D/Lpcd/vzy76F/s/+mbl7/3z6cO/O3wsiDO + /xz/PPHL23elAZXT+Yv9Se/fhtcXb//p8cuX5+V1ahQPyu3cqtzOcbSlM/lyp1vuNn56+ebit4/9 + NruVTeNjy1IQ5Xjb+NX9J/0l4BxW5TMs8zqW3+NofDmo5bLio9xgVtnaUkLkKRmb//Gf5cg8O+83 + /zXu0uM/N+MXARTHo/X69X6PfpwSrktvKL/5/MXdCf3uhH53Qr87od//+Am9nFDGS84f95fa4yWq + nEX292flvmg4H68avzm8fB7vqPxDDg8trUyk/5ju9/Zjfn41XWsfMaaczt/fhnbDbjgf7yanbzne + 3fLwarzxxjsvuCY+n66Jx18dd+bd3e/jF9O58O/jX72/NT4ce//DAe/utv8x3m6WO8Rh+/P5Czki + 1yoJec6F/0mR2g1v9KXzj08+Ntcxn/ZaHCz5/uwzTCR5o/1R/PbJs3vXdv587JCozZ+3e37vb08f + 3fvmaffk8bN7jx4/fvLTT9csQ3vuITs5Q/uEN/yiGdpqB+ruHHXJQbs00H6RqfXBu92otnfpUbqb + V5ccsf2j5s8yq969142aU5ccoes4o17bzfkwPXLqy9U9bnH/6vm94Wz76uXzs4txa86Hi/Pnwx/D + vQt5MnD+570Pht/7o3/xfHtv9/L83utyj/HgfPh1fJq238fXdr937/fjb0+f/Nu97sl3j56VfXn6 + /V9+6P766NnTH76f7oeenr16c7F/AjB9dTN9Qvu/+PHliz9/fXn2+pfvX/4uepHM9KzczJIxv/xh + wtuS/qh+5QMbx/wLHS5MPeYa5yhotwA04Zamw59nW7hOUNxSDWiGLSWAzrZwnaCdOpQPl6SOEIDO + tnCdoN0CUIIttQB11ALtFoDawy21MPnnB/VN0G4BqMMtPdz9+UF9ExS3VAPqYUth8s8P6pug3QLQ + AFsKk39+UN8E7RaAwpnfwuSfH9Q3QbsFoHDmP7Q5KD/PNkWeoN0CUDjzH5ocZDM/qG+CdvpQgjO/ + gzKdH9Q3QbsFoHDmd1Cm84P6Jmi3AJRhS6FM5wf1TdBuASj0KAdlOj+ob4J2C0ChRzkoU9dSpgQ9 + SgcKPcpBmfqmMoUepQOFHuWhTOdHCk7QbgEo9CgPZeqbyhR6lA4UepSHMvVNZQo9SgcKPcpDmc4P + P5ygnT6UoUd5KNP54YcTtFsACj3KQ5nODz+coN0CUOhRAcp0fvjhBO0WgEKPClCm88MPJ2i3ABR6 + VIAynR9+OEG7BaDQowKU6fzwwwnaLQCFHhWgTOeHH07QbgEo9KgAZTo//HCCdgtAoUdFKNP54YcT + tFsACj0qQpnODz+coJ0+1EKPilCm88MPJ2i3ABR6VIQynR9+OEG7BaDQoyKU6fzwwwnaLQCFHhWh + TOeHH07QbgEo9KgEZTo//HCCdgtAoUclKNP54YcTtFsACj0qQZnODz+coN0CUOhRCcp0fvjhBO0W + gEKPSlCm88MPJ2i3ABR6VIIynR9+OEE7faiDHpWhTOeHH07QbgEo9KgMZTo//HCCdgtAoUdlKNP5 + 4YcTtFsACj0qQ5nODz+coN0CUOhRGcp0fvjhBO0WgEKPOjR9yHRk2BFCuwWghz2KDqOOys9NZXrY + o5SgEbaUANpUprFbAJpgSxmgTWWaugWgGbbUArSpTHOnD/UGttQBtKVMvekWgBJsKZTpkQFHCO0W + gB72KCIo0yPjjRDaLQC1sKVQpkeGGyG0WwDqYEuhTI+MNkJotwDUw5ZCmVJTmfpuASj0KIIyPTLW + CKHdAlDoUQRl2iJsG9doLQCFHgXCNmoRto3LyBaAQo8CYRs1Cds89CgVaIAeBcI2ahK2BehROlDo + USBsoyPDjBDaLQCFHsVQpkdGGSG004AeKqC1pLIVVUUri1QdsWxFVVHLIlVHLltRVfSyh1QtwWxF + VVHMIlVHMltRVTSzSNURzVZUFdUsUnVksxVVRTeLVB3hbEVVUc4iVUc6W1FVtLNI1RHPVlQV9SxS + deSzFVVFP4tUHQFtRVVR0AJVSUJbUVU0tEjVEdFWVBUVLVJ1ZLQVVUVHi1QdIW1FVVHSIlVHSltR + VbS0SNUR01ZUFTUtUnXktBVVRU+LVB1BbUVVUdQiVUdSW1FVNLVI1RHVVlQVVS1QlWS1FVVFV4tU + HWFtRVVR1iJVR1pbUVW0tUjVEddWVBV1LVJ15LUVVUVfi1QdgW1FVVHYIlVHYltRVTS2SNUR2VZU + FZUtUnVkthVVRWeLVB2hbUVVUdoCVUlqW1FVtLZI1RHbVlQVtS1SdeS2FVVFb4tUHcFtRVVR3CJV + R3JbUVU0t0jVEd1WVBXVLVJ1ZLcVVUV3i1Qd4W1FVVHeIlVHeltRVbS3SNUR31ZUFfUtUJXktxVV + RX+LVB0BbkVVUeAiVUeCW1FVNLhI1RHhVlQVFS5SdWS4FVVFh4tUHSFuRVVR4iJVR4pbUVW0uEjV + EeNWVBU1LlJ15LgVVUWPi1QdQW5FVVHkAlVJkltRVTS5SNUR5VZUFVUuUnVkuRVVRZeLVB1hbkVV + UeYiVUeaW1FVtLlI1RHnVlQVdS5SdeS5FVVFn4tUHYFuRVVR6CJVR6JbUVU0ukjVEelWVBWVLlCV + ZLoVVUWni1QdoW5FVVHqIlVHqltRm7S61yk/2fpQ3olTSMGzvSxa2NN6u+GQh+h3jsM2pG3cbXfr + tRm43AwdFdTqKR+dudvi2XxlHO2YD51CqdEyvyLlSwKUd9yvadtbu6XsN2u7y+s1rcd4cbMOwR2z + l9HEfHQcbbOT/pURw8EH78e0r5jKDLw0YngIiQazjpTcNhrjdybvyjQztCv3YbvdURHD2Syyq0dF + DBvnTc6lZ7hyOvPkw8d3M+SUN4PfxrzZ7jZ5Q0MIMbkQozMDbddH7KaLS+3o1XHRbmWSNzGW3Ysh + BMOXBGLnfl2owVtrNnazLS3f73jbD0z9Otp0zB5yKvV5dOz37HSRReOTG7JO7uKTb2N8sn9I6SHz + qpwtbnV8cmCt+ORHR18DX+v45LzyTjk+mbh0x1Uag7qPiU8uv05pn+s9Nz55/odwRHzyVeGLHCTC + MUiEY5AIxyARjkEiHINEOAahRKFEoUShRKFEoUShRKFEoUShRKEkoSShJKEkoSShJKEkoSShpLdx + kpckCE57JC+SQxgkhzBIDmGQHMIgOYRBKFEoUShRKFEoUShRKFEoUShRKFEoSShJKEkoSShJKEko + SShJKGP65a0KsjVmVfbdUyhXtM5n8l9dHmTr08pzJmcoGFMu9viKINvoVj5HF2Mwlsd3uCLINtqV + jalckZUpVKaBSa1Jtne1de1r6+RMUY4rl3hepug0xt5lip4U9nR8Nzw9Dqvlvb58HNbpR+g6xmFd + i+Mld5efYTrJG32xcNETD8ltDBedd8gUwkWb3/ALh4sqHai7c9QlB00hXLTt3W5U57sLF517xE5L + aJ/9RjdqNt2UhPZbnym6jKPXMuZbdz5Z+lCQjDGIZZqiKgMoxnSgIBgDyx1qiqoMoBfTgYJcDAx3 + /j9759oct5Gk67+i0Ncz7qmse+mbRtbMUZzxZWF5dmNObDjQANpmrEw5KNpxPBPz30+hsnXpt0gK + XZ2QyCF3J9hukfmgCqhEFhJ5oaZWlR6ixWSgECwG5XaoqVWlh1gxGSiEikGxHWpqVekhUkwGCoFi + UGqHmlpVeogTk4HCnR8K7ZAl1QLtboa26H4AcwJldsjqhpEGiBGTgYKNgiI7ZE0TtFsBCjYKSuyQ + tU3QbgUo2CgosEPWNUG7FaBgo6C8Ds0Rbw3QbgUo2CgorkOuRfcD2CgZKNiouezPwfcmNQUbBfV6 + GqFgo+aiP4dQ0wLtPgLVx0Mj3E+dMwfffcuSinA/lYESjvRw+r5lSUXCkUpA4X7qYZ36liUV4X4q + A4X7qYcl5VvMSYT7qQwU7qdzSZqD7y3mJML9VAYK99O5IM3B9xZzEuF+KgOF++lcjubD76FJTeF+ + KgOF+6kHNQ1Nagr3Uxko7PmDQqhrgXYS0E+SG7JSFsdDvsUatdGlnD4VVcTrg1QZt09FFfH7IFXG + 8VNRRTw/SJVx/VRUEd8PUmWcPxVVxPuDVBn3T0UV8f8gVcYBVFFFPEBAFXIBVVQRHxBSZZxAFVXE + C4RUGTdQRRXxAyFVxhFUUUU8QUiVcQVVVBFfEFJlnEEVVcQbhFQZd1BFFfEHIVXGIVRRRTxCQBVy + CVVUEZ8QUmWcQhVVxCuEVBm3UEUV8QshVcYxVFFFPENIlXENVVQR3xBSZZxDFVXEO4RUGfdQRRXx + DyFVxkFUUUU8REiVcRFV1CYf0W2px6A3MZ9dM++78xN31Nck7htr5/IE2sboe5XMFIhoUOM0eTNt + nXu8oEyBUi7f0Zfnex8Z8H1j3r4m7fJTkIvkrE4+xmumacIu75SNViGG0e92kyaatj4O22z0t0sS + 97XOqrbKJG9O3M+TzDyTJ+lJK6+c9deUnBh2u4HmxFet4uiUTVMalJpsvjykaDALJkkuL5pVJvnR + whp6E/K+VkVnbcqgcH2xCW2N1yHtaEi9scnuvPcxeZN3Z870u3HJxVzpUi4qNqGzrPY+pJS0nytr + XD3NfMcZB5oMDX4c7OS3u3xRYxp2424aU79bMs18etQ61/Oggsi6FRmOThB5qMhwfysy5Nul1/e6 + IkOwUhUZ/nKoeNHqw+/vd8G3uSJDXhLZOghXZIhPXNbZ6BZWZIhPrN7kR8mGigzHX4QlFRkS518n + zr9OnH+dOP86lSzuvK3jD+IPzR+GPyx/OP7w/BH4Y0/hfOjE+dCJ86ETZ1WnklWdj8AfxB+aPwx/ + WP5w/OH5I/DHPatY4PXG5f2c83Ntgbzo0k0VC4LbGK9ScCbkfbF19oaKBc5vlAvOxrx/oryLurFi + Qdio/KQSos2byfxk4ZsrFtz9tSeR0R99ODqjPz5k9J+YZ7X8bnpi/vXRB/ps+dcnnpK7mX/9Kc/a + yaUhWo71+VMaTz9DtzGrcaVE9eOUUCCjv/mAnzmjX+hE3aml9SlV8bTM66MPdKduU3cl8/pWnCyB + 0hBtR7tTS+pOlYZ4yOhP8Fr045vlRdBjd+BLoBFHevj6MrWkDaSII5WAQqhkdCLQTgIK74SFLn9F + Fbn+SJVZABVVZAUgVWYJVNSmNXBb3uCrjZobhydjvSFj51L82l1Tfp/mN4WDV9vonA9T6u0ujnmM + fd/vSKsFrwq9PaYs/ZGbphvfbkelNVHwZIP1Kl3z0teryffTMCnrSU2DHa02Q7KT3vZjcG7J29Bo + ieIqc/xYmAJZTSFfGGtNLBfy6jlu00S6H4L3wxh2KliVhhh32/yfc9+BtOQFvp07tq41yUU9I3xQ + Osa5n6m54SX+RLvtGMYw2K0fh+1Wa73zRNO0C7s5uWHRS/x1VuyyjhHKkE/KzY52S+H60BNn/Nbu + wjbP1Lrttg9bGlNKfRr6fNfwSyZqjDarzPRtUMa67++PdjA+vL+/t+/vyW/IqHv9/j4lkff3WasO + FU8raw+/u3fR7Lf6/b3ZeEWy7++1euL0RpNa9v4+/7m1G+/Mse/vmy7Cgvf3XFm9vPKcf5Q3ouV9 + aHkbylXKy+vK+Ud5m1neZfr79d7c0CY/5WcLnXf6+dPbm16b+00gciEZb1yILt7w2pzCxpMO3ngK + UYdgb3ptHjc65X1nzHtcq/Nm/ojX5k598Nr8hEt+yutq88TQk2yZQ1n8y15Xv5exD6+r2z2JR908 + TnHctxzoM3tZTz83t9HBeitO1mmvqxuPdaeW07/D6+pPeb5OiKRpOdDniaQ5/ZTcx0ia487aqe8U + m492p25Pd+qd4hphIker4qnxNKcc8HPG08idqNu4tO736+p8bZU6zOZfYJEWQY81c0ugGkbq6OA7 + qSZotwL0MJM/QwBKTdBuBaiFkRJAj61vytBuBaiDkWqAmiZotwLUw0gNQo8sRMvQTgJ6eGOXUv6K + KqL9SJVR/4oqov9IlbkBVFSROwBSZW4BFVXkHoBUmZtARRW5CyBV5jZQUZvuA7coYCWSN8b5EPNe + xcVrwhzcSNvUkxkna5wdo9rFYdTDYE3st2la8kY8OpeW5rUf/2B+enRDPuk7Y/oYJh30OKZhDuQh + r2not7rXQTS6ofHp8OboBuutciFpbbzRka6LPEoUo5nsbnDb0fc+X8wh7vxgXKKQhkVhOTb6pcUY + mtx0N88zqmCi8sFrn5whffU0Q6+2zu7saFOvYup32631yeSr6uy2D0tKa0S70jQ/FmBFTs/DtPn2 + Ym4IPnJ+Msn6XRzduN1FM2qjTT+NPmtpP+5oSfCRS6WaxTpq+UnKTbR48R7CVe5juIrZBxGYQPc5 + XCXfUqTCVZ5/f6Bojvzh9/e7ylsdruI3Zl+BRC5cxT3RehMWh6u4OY7Kx5ZwleMvwpJyE5zjv0/O + 50z98pPz+zmqgbP7Obmfc/s5tZ8z+4usKbK2yNoia4us5ZCIImuLrC2ytsjaImuLrCuyrsi6IuuK + rON4iiLriqwrsq7IuiLri6wvsr7I+iLri6znYIwi64usL7K+yIYiG4psKLKhyIYiG4psKLKhyIYi + G4psLLKxyMYiG4tsLLKxyMYiG4tsLLKxyKYim4psKrKpyKYiy5UYuBAD12HgMgxchYG4CgNxFQbi + KgzEVRiIqzAQV2EgrsJAXIWBuAoDKaYQU4gpxBRiCjGFmEJMIaYQU4gpmimaKZopmimaKZopmim8 + 5ogXHfGqI152mgtC7OtBcFmH8pOLQXAYDZeC4EoQXAiC60BwGYgia4qsLbK2yNoiazkGp8jaImuL + rC2ytsjaIuuKrCuyrsi6Ius4gKfIuiLriqwrsq7I+iLri6wvsr7I+iLrOfqnyPoi64usL7KhyIYi + G4psKLKhyIYiG4psKLKhyIYiG4tsLLKxyMYiG4tsLLKxyMYiG4tsLLKpyKYim4psKrKpyHLZDq7a + wUU7uGYHl+wgLtlBXLKDuGQHcckO4pIdeTnyh+ePwB+RP5hCTCGmEFOIKcQUYgoxhZhCTCGmaKZo + pmimaKZopmimaKbwmiNedMSrjuZld48C8ihunFI0p6ho4/KFNDcE5Bm1ybuLmB+yIkWvor0hIs/6 + TcpPNyopsiZfzHBjIZsMtsEpSyn6aHVzRN6DVXuwag9W7cGqPVi1K6zayTHH+Tkqkj4u5rjIPJTI + Oi3SaPkT4ImBfUcf6LMF9p14Su5pYN8RZ+3kmOOWY33+oL7Tz9BtjLtaKVLtOCUUCOlrPuBnDukT + OlF3aml9SlUUiEJuO9qdumH9e0Qhf8ozdloG19EHulOr6a5kcD3EHOvDukMLNsuLoN0K0AQjhdAw + 1xIgqlMnDzUKRgqBYc42QbsVoBB06ixAW4LDDcScykAh5NRBcKhvCQ43EHEqA4WAUw+hob4lONxA + vKkMFMJNPQSG+hY1NRBtKgOFYFMPauqb1BRiTWWgEGrqQU19k5pCpKkMNMBIQU19k5qGbgUo2CgP + ahqa1BRslAwUbFQANQ1Nago2SgRqwUYFUNPQoqYWbJQMFGxUADUNLWpqwUbJQMFGBVDT0KKmFmyU + DBRsVAA1DS1qasFGyUDBRgVQ09iiphZslAwUbFQENY1Nago2SgYKNiqCmsYmNQUbJQMFGxVBTWOT + moKNkoGCjYqgprFJTcFGyUDBRkVQ0+gacuIs2CgRqAMbFUFNk2qCditAwUYlUNNETdBuBSjYqARq + mpZ1YkdotwIUbFQCNU0tuZsObJQMFGxUAjVNtgnarQAFG5VATVOTmoKNkoGCjUqHampUk5qCjZKB + HtqoDAFok5oe2ighaISREkCb1DR2K0ATjFTrw+9Napo6eahXMFID0BY19apbAUowUgvQFjX11K0A + 1TBSdwilFjX1ulsBemijzJyifvC9RU39oY0SgloYKQG0RU297VaAOhgpqGlTzQbvuhWgHkYKakpN + auq7FaBgowjUlJrUFGyUDBRsFIGa6iY1BRslAwUbpUFNdZOago0SgQawURrUVLeoaQAbJQMFG6VB + TXWLmgawUTJQsFEa1FS3qGkAGyUDBRulQU11i5oGsFEyULBRGtTUtKhpABslAwUbZUBNTZOago2S + gYKNMqCmpklNwUbJQMFGGVBT06SmYKNkoGCjDKipaVJTsFEyULBRBtTUNKkp2CgRaAQbZUBNbYua + RrBRMlCwURbU1LaoaQQbJQMFG2VBTW2LmkawUTJQsFEW1NS2qGkEGyUDBRtlQU1ti5pGsFEyULBR + FtTUNqkp2CgZKNgoC2rqmtQUbJQMFGyUAzV1TWoKNkoGCjbKgZq6JjUFGyUDBRvlQE1dk5qCjRKB + JrBRDtTUtahpAhslAwUb5UBNXYuaJrBRMlCwUQ7UtCkEL4GNkoGCjfKgpr5FTRPYKBko2CgPaupb + 1DSBjZKBgo3yoKa+SU3BRslAwUZ5UFPfpKZgo2SgYKM8qKlvUlOwUTJQsFEe1DS0mGhoeSsEBRsV + QE1Dk5qCjZKAzuUSAALQBjWdk95XgIKNChqhqQXaSUCh0qtQkkRF7dagyqRJVNRuBapQokRF7dag + yqRKVNRuDapMskRF7dagyqRLVNRuDapMwkRF7dagyqRMVNRuDapM0kRF7dagyqRNVNRuDapM4kRF + 7dagyqROVNRuBapQ8kRF7dagyqRPVNRuDapMAkVF7dagyqRQVNRuDapMEkVF7dagyqRRVNRuDapM + IkVF7dagyqRSVNRuDapMMkVF7dagyqRTVNRuBapQQkVF7dagyqRUVNRuDapMUkVF7dagyqRVVNRu + DapMYkVF7dagyqRWVNRuDapMckVF7dagyqRXVNRuDapMgkVF7dagyqRYVNRuBapQkkVF7dagyqRZ + VNRuDapMokVF7dagyqRaVNRuDapMskVF7dagyqRbVNRuDapMwkVF7dagyqRcVNRuDapM0kVF7dag + yqRdVNRuBapQ4kVF7dagyqReVNRuDapM8kVF7dagyqRfVNRuDapMAkZF7dagyqRgVNRuDapMEkZF + 7dagyqRhVNRuDapMIkZF7dagyqRiVNRuBapQMkZF7dagyqRjVNRuDapMQkZF7dagyqRkVNRuDapM + UkZF7dagyqRlVNRuDapMYkZF7dagyqRmVNRuDapMckZF7dagyqRnVNRuBapQgkZF7dagyqRoVNRu + DapMkkZF7dagyqRpVNRuDapMokZF7dagyqRqVNRuDapMskZF7dagyqRrVNRuDapMwkZF7dagyqRs + VNROniqVtFFRuzWoMmkbFbVroX7T/fmHp//1X8++fr7/45hReZOmZmGjgp7/QwWnGDZfnfxoZ4jm + Pr5zo919Q425N+BTbhny9Hz88uwNd0Y/e33+4pz7zZeOIP/3n4+/O/vH9P352dx//qs/zcPI3x8/ + URtlQgrzI2wyyvs8lD88fvbTNPzPm19LU/nSXD3LbLfR7LxParJpZ+1WKTuFZNXod0PaJZeJT1/9 + +Pri7PKnn+dDfOnmFoTzQV6c/+n30pTRpEjxXRdiPLkCTcvmbirXTtOpYGPU+WP2OVK6eprK9UNv + /LijnkaaUlLWjWmIA9HUK9otmGbeZZFdZZpzc5rr50hqk69gvpj5NM+h9ypcPcXJpWna5T9LeV89 + BEXbIW3tkLVuGGk3pgVTJBXz2fS0yixnLbnpSppoZ19stF75ZMw165XM0Gtyu2FIgfK6jSFtUx92 + dspqlqZ+wSytmiND15rju35o189Vb6KlZJPNt4eUMe75F/bq2Wrvog5T2PZbbafdaLdbQ3nVDr0f + 3TaGBbPVaR3dfNef61/lzvX712c//nT551f9j3Oj1fM3v0zD2e5sGvMIX5SGRPnLvg/5++8rrLAP + D7dva/Ttxevx12G62N9aX4zl0hyMYiZcJfqse/Fl/de0oav++JvLn/KvP/zF29P+9Lu/cRvXq47N + fV2P4b1vC3sV78Wzvyl69L597f5PH+3O8r9cHDfw4Wzue/tuid1wVHXcKeFrcvns9a/nl/kv5jXU + Tb9cvJ4bUp2d//jtq/78PC+eJ4+/fn0+d9ra/30++Ny79+XZz3X/Xq2eOL/J96+/l167r/rL2VDu + l9x5NqC//pwHwd8/7Nr7f/ruBa9i7OVb/vGr6bKfe3R9xyt62Fte7O81jOdX9fP69eef/7jvF/bH + 32jjN/7xO238/quvvvhL/vq3dy1++Q/mxsf/fJz1q58PM7zOV+CXyy8u+Yy+bz729hdn82n6iyET + lU5e2S++/ebZX7/5/sv8JxfTb2czuvxNvuOd58H/NrHERxRP//CXDzZAROrgYbh8928V74e5qVkZ + 0ds198XB4J7pbJSsiUaZDwa3b7p2wX/z/t95e1O6nf3yan++//jb+cgndfj5YpNP6v/aNxR7N8Px + sKWzUS8VPTH+iQmbvPEqSyKLzSf0JfdKe/X8/13m9TD/S9ef/zi9X1f/fPz8fMyL8KqVNk/9iXLz + SiOKf88j+NP049n5+cf+XG+yVcujyMPY34a+79a5CE/H8Ww+Zf2rp5e8adw3zi42pXRuK93iS6/4 + 0im+9IkvXeJLj/jSIZ4b3nPDem44zw3juV98+cnt5bm7PDeX597y3Fq+dJEv7eBLX/fSoL10Wi8t + 00vv89LEnJuQcxNxbgLOPcDLT24Zzh3DuWE49wvPov/9To1evvjr872m9m9+vZjGb/uL/JvLt+bm + P55+d9lflm7b//H02+liyFf9q7Nym5k33Hnr8Yf3v/jm18tvdn/Kd6Xxzf6X873kLXB/xK//+JTv + F7/0c6O99wvpf+fb5D9en1/2r/a/+vL1z/1ZuVv8ZXqdERe/z/9d+PnwXVaWvPRe7S/Qf05vLt/+ + 6tnr1xf5syzqL7Tf2OiTJwoh75GSzzvA717/evnTVX8dzMZHl/9wfsSOPm+jnvfXcClsosnbLjI+ + Rm9izNyv8y3waq7b5M1hHoTN+y5rvfvXf+dT8/KiH/5nntOz34f5qYXCfLrevNlP6dvS5jwv5PyX + Z6/+jVbfCe3pSZVW83pD3ixtT/9eJqqH9vQnNA095o56UkPVhgN97oaqJ5+b29hQ9VacLH4w+QQL + iQ+0P4t/ef7y0a1dP1edErH183bmj/724umjL190z5+9fPT02bPn3313xxfSya3DW492p+5N/x6t + w3/d5qefT6SK75xWn+ou9cEBT15at+JE3aml9SmVce/D/yQL692x7tTt6pozdBtX1D1vT6/z54cR + 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 + bJQMFGwUhOCZphC8BDZKBgo2CkLwTFMIXgIbJQGdCw4ABKANajrnba8ABRsFIXimJQRvTi1fAQo2 + CkLwTEsIXpbvVoCCjYIQPNMSgjcn6K8ABRsFIXimJQRvriGwAhRsFITgmZYQvLnMwQpQsFEQgmda + QvDmSgwrQMFGQQieaQnBm4tFrAAFGwUheCaSboF2EtDD7DepBKmKKpIhBVShFKmKKpIjhVSZJKmK + KpIlhVSZNKmKKpInhVSZRKmKKpIphVSZVKmKKpIrhVSZZKmKKpIthVSZdKmKKpIvhVSZhKmKKpIx + hVSZlKmKKpIzhVSZpKmKKpI1BVShtKmKKpI3hVSZxKmKKpI5hVSZ1KmKKpI7hVSZ5KmKKpI9hVSZ + 9KmKKpI/hVSZBKqKKpJBhVSZFKqKKpJDhVSZJKqKKpJFhVSZNKqKKpJHhVSZRKqKKpJJBVShVKqK + KpJLhVSZZKqKKpJNhVSZdKqKKpJPhVSZhKqKKpJRhVSZlKqKKpJThVSZpKqKKpJVhVSZtKqKKpJX + hVSZxKqKKpJZhVSZ1KqKKpJbhVSZ5KqKKpJdBVSh9KqKKpJfhVSZBKuKKpJhhVSZFKuKKpJjhVSZ + JKuKKpJlhVSZNKuKKpJnhVSZRKuKKpJphVSZVKuKKpJrhVSZZKuKKpJthVSZdKuKKpJvhVSZhKuK + KpJxBVShlKuKKpJzhVSZpKuKKpJ1hVSZtKuKKpJ3hVSZxKuKKpJ5hVSZ1KuKKpJ7hVSZ5KuKKpJ9 + hVSZ9KuKKpJ/hVSZBKyKKpKBhVSZFKyKKpKDhVSZJKyKKpKFBVShNKyKKpKHhVSZRKyKKpKJhVSZ + VKyKKpKLhVSZZKyKKpKNhVSZdKyKKpKPhVSZhKyKKpKRhVSZlKyKKpKThVSZpKyKKpKVhVSZtKyK + KpKXhVSZxKyKKpKZBVSh1KyKKpKbhVSZ5KyKKpKdhVSZ9KyKKpKfhVSZBK2KKpKhhVSZFK2KKpKj + hVSZJK2KKpKlhVSZNK2KKpKnhVSZRK2KKpKphVSZVK2KKpKrhVSZZK2KKpKtdUiVSteqqCL5WkiV + SdiqqCIZW0iVSdmqqCI5W0iVSdqqqCJZW0iVSduqqCJ5W0iVSdyqqCKZW0iVSd2qqCK5W0iVSd6q + qCLZW0iVSd+qqE35W990f/7h6X/917Ovn+//OP5AKj9UqFnYqKDn/1DBKYYFMj+oOL/pe/zfpTVx + v2+qNfcHfsptw56ej1+evbm8ONv+OrcCe3G+e33xc89dwf7vPx9/d/aP6fvzs8vHTx5/9ad5GPn7 + 4yd6E3Q+SnTWJp0fdN3zL+wfHj/7aRr+582vP5dmxv2rX+fGX1vXb3cmjGOM3ienyUy9jd4MNo/K + DiYjn7768fXF2eVPP8/H+NLNfYjno7w4/9PvpTOzjv4Pj6/vg3x4Zlua384t1a6ep9qovAMmnULw + SqkUst27ep4+6jSNW+u02XnT57mOOxtC2g7aDja6BfN0+eZPq8x0bsx64yStSmTzc4nT2nqVrruW + Yx9HMxg1qp0Ou17pYPL5SZbsFPodLZij1UnpVea47xZ6/TTdZt4aRLJZ+VK0+fZw9SxpmAavpm1e + sDuatr0aElHfh7iddsOo45IraWI+i+us2vlucNO1tCpLW5Os1l4Fq6+e5Kh3owumH33+k8mOefFO + dhh7ykbehH5YdCnzIcJac3zXo/Nf5c71+9dnP/50+edX/Y9zs/XzN79Mw9nubBrzOF+UpoT5ywX3 + LH//fYUz/+Hh9q0Nv714Pf46TBf7W+uLsVyeg1HMhKtEn3Uvvqz/mjZ01R9/c/lT/vWHv3h75p9+ + 9zdu5X7Vsbm3+zG8963hr+K9ePY3RY/et7Df/+mj3Vn+l4vjBj6cTefD9G6h3XBUddwp4Wty+ez1 + r+eX+S/mNdRNv1y8nptSnp3/+O2r/vw8L54nj79+fT633dz/fT54NpLTy7MCmdfBF8p/odNLUk80 + PTFhk4z5+6wJmXA5G8r9kjvPBvTXn/Mg+Pt3P72+uNwP5f/03YvzMoIP/3Vel+Ufv5ou+7lP53e8 + ooe95cUen8N4flVPz19//vmP++ahf/yNNn7jH79TyO+/+uqLv+Sv+7NaFtb8B//613x2s/Hr58MM + r/MV+OXyi0s+o+87kb79xdl8mv5i5i2KUfnm+cW33zz76zfff5n/5GL67WxGl7/Jlus8D/63iSU+ + onjxh6cfboB8VkUF398p3g9zY9Myordr7ouDwT3TISVrolHmg8HtO7Be8N+8/3fe3pSOp7+82p/v + P/52PvJJHX6+2OST+r/2TUXfzTCf9g+XhFEv1bwenqi48U6XJZHF5hP6kvulvnr+/y7zepj/pevP + f5zer6t/Pn5+PuZFeNVKm6f+hNwT7fNKc3/PI/jT9OPZ+fnH/lxt8iYsjyIPY38b+r5b5yI8Hcez + +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 + exLLfv/uQPGMPyw7YT4or3ars9/nNs5KNvvd+Cc6bPTcE3FJ9vv852pjgm7Ifj/+IizIfidOxSXO + xSVOxiXOxiVOxyXOxyVOyCXOyCVOySXOySW377DGFE7LJc7LJU7MJc7MJU7NJc7NJU7OJc7OJU7P + Jb9v1MYUztAlTtElztElTtIlztIlTtMlztMlTtQlztSlsO/3xpTAlMCUyJTIlMiUyJTIlMiUyJS4 + bxvHlMiUxJTElMSUxJTElMSUxJTElLTvPrdvP8f95xQ3oFPcgU7t29dxfzfOKyZOLCbOLCZOLSbO + LSZOLibOLiZOLybOLya37xLHFE4xJs4xJk4yJs4yJk4zJs4zJk40Js40Jk41Jr9vNscUzjYmTjcm + zjcmTjgmzjgmTjkmzjkmTjomzjqmsO9Zx5TAlMCUyJTIlMiUyJTIlMiUyJS4b33HlMiUxJTElMSU + xJTElMSUxJTElLTvoLdvocc99BQ30VPcRU/dsyaSzmzyo0feYocQ/b5D/LVlCb7QfqN1PsVKu0TK + RXNDWYK5LkhK+VnMmeBjmNuyX1uWwG28siYoT/npwOT9fmtZgocb4MMN8OEGePIN8PRyEXlzpo4t + F5FlrL3f5SJOzuZbvq2UyOlvO9rnT5uVOEv3K3H2iDN2WuLs0Qf6bImzJ56SW504eyvO2mnFIY4+ + 0J26Ld354hCn1fs5TvcECiM1H/AzF0YSOlF3aml9Sj08ue5Iy7Hu1J3qDtUdufflIma/yZGbmkXQ + bgWox5H6w+8N2TMEySNC0AAjNQBtyPEjSB0RgkYYqQVoQ44fQeKIEDTBSA8j5ExL+z2CtBEZKGSN + GGi4YkJDjh9B0ogQlGCkBNAWNYWUESGohpGCmoYWNYWEESGogZGCmoYWNYV0ESGohZGCmoYWNYVk + ESEo2KgAahqb1BRslAwUbFQENY1Nago2SgYKNiqCmra03iRIExGCgo2CRkumpfUmQZKIEBRsFLRZ + MrFJTcFGiUAhQyRDANqippAgIgQFGxVBTVOLmkJ6iBAUbFQCNU0tagrJIUJQsFEJ1DS1qCmkhghB + wUYlUNPUoqaQGCIEBRuVQE1Tk5qCjZKBgo1KoKYttfwIkkKEoGCjIFvettTyI0gJEYIe2igLufJ2 + Ya48QrsVoAlGSgBtUtPUyUODgpFqgLaoaVDdClCCkRqAtqhpoG4FqIaRWoC2qGnQ3QpQAyMFNW2p + 5TcHb6wAPbRRFvLjbUstP4IEKyGog5GCmrbU8iNIrxKCehgpqGlLLb85SmcFaICRgpq21PKbA4lW + gIKNgrx421LLb451WgEKNgqy4m1LLb85HEseGsFGQU68banlN0eMrQAFGwUZ8ballt8c1LYCFGwU + 5MPbllp+c9zdClCwUZANb1tq+c2hgStAwUZBLrxtqeU3Ry+uAAUbBZnwtqWW3xxguQIUbBTkwduW + Wn5zDOgKULBRkAVvWyrkzWGqK0DBRkEOvDVNago2SgYKNsqAmpomNQUbJQJNYKMMqKlpUdMENkoG + CjbKgJraFjVNYKNkoGCjLKipbVHTBDZKBgo2yoKa2hY1TWCjZKBgoyyoaUt1zDk2fgUo2CioKGFt + k5qCjZKBgo2yoKa2SU3BRslAwUZZUFPXpKZgo2SgYKMcqKlrUlOwUTJQsFEO1NQ1qSnYKAnonJgC + EIAaswR6GLImFdtUUUWCm5AqE91UUUXCm5AqE99UUUUCnJAqE+FUUUVCnJAqE+NUUUWCnIAqFOVU + UUXCnJAqE+dUUUUCnZAqE+lUUUVCnZAqE+tUUUWCnZAqE+1UUUXCnZAqE+9UUUUCnpAqE/FUUUVC + npAqE/NUUUWCnpAqE/VUUUXCnpAqE/dUUUUCn4AqFPlUUUVCn5AqE/tUUUWCn5AqE/1UUUXCn5Aq + E/9UUUUCoJAqEwFVUUVCoJAqEwNVUUWCoJAqEwVVUUXCoJAqEwdVUUUCoZAqEwlVUUVCoZAqEwtV + UUWCoYAqFA1VUUXCoZAqEw9VUUUCopAqExFVUUVCopAqExNVUUWCopAqExVVUUXCopAqExdVUUUC + o5AqExlVUUVCo5AqExtVUUWCo5AqEx1VUUXCo5AqEx9VUUUCpIAqFCFVUUVCpJAqEyNVUUWCpJAq + EyVVUUXCpJAqEydVUUUCpZAqEylVUUVCpZAqEytVUUWCpZAqEy1VUUXCpZAqEy9VUUUCppAqEzFV + UUVCppAqEzNVUUWCpoAqFDVVUUXCppAqEzdVUUUCp5AqEzlVUUVCp5AqEztVUUWCp5AqEz1VUUXC + p5AqEz9VUUUCqJAqE0FVUUVCqJAqE0NVUUWCqJAqE0VVUUXCqJAqE0dVUUUCqQ6prZFUt6fbldGU + j5efRAxpRXMF8Kua6Yxh0v0URqOjDWrKA1O9DtoOejfY6Jb0usr7hERueS+dxsJ6N/ZHMolMiLNL + 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 + NgoSTJY2wkZotwIUbBSklyxtg43QbgUo2ChILlnaBBuh3QpQsFGQWrK0BTZCuxWgYKMgsWRpA2yA + gjmBDJD8PTVAD3XfKiL43jLSQ92XgWqFI/WH3/XxGZbzS7MVoAZG6gDaoqbadCtA7c0jXdjwFqE3 + j7QNerj4od1tWNruFqHdClAPI4UltbDZLUK7FaABRqoB2mKidehWgEYYqQFoi4nWsVsBCvfTwza3 + YWmbW4R28lAD91MCNV3Y5Bah3QrQw70UtLgNS1vcIrRbAaphpKCmCxvcIrRbAQo2SoOaLmxvi9Bu + BSjYKA1qurC5LUK7FaBgozSo6cLWtgjtVoCCjdKgpgsb2yK0WwEKNsqAmi5sa4vQbgUo2CgDarqw + qS1CuxWgYKMMqOnClrYI7eShFmyUATVd2NAWod0KULBRBtR0YTtbhHYrQMFGGVDThc1sEdqtAAUb + ZUFNbYuaWrBRMlCwURbUdGEjW4R2K0DBRllQ04VtbBHarQAFG2VBTRc2sUVotwIUbJQFNV3Ywhah + 3QpQsFG29El9/31hA1uEditAwUY5UNOF7WsR2slDoZQSNK8NS5vXIrRbAQo2yoGauhY1hTpKQlCw + UQ7U1LWoKVRREoKCjXKgpq5FTaGGkhAUzIkDE+2biscIRWJUVJFQDKTKxGJUVJFgjEOqVDRGRRUJ + x0CqTDxGRRUJyECqTERGRRUJyUCqTExGRRUJykCqTFRGRRUJy0CqTFxGRRUJzECqTGRGRRUJzUCq + TGxGRRUJzkCqTHRGRRUJz0CqTHxGRRUJ0ACqUIRGRRUJ0UCqTIxGRRUJ0kCqTJRGRRUJ00CqTJxG + RRUJ1ECqTKQGUmVCNZAqE6tRUUWCNYAqFK1RUUXCNZAqE69RUUUCNpAqE7FRUUVCNpAqE7NRUUWC + NpAqE7VRUUXCNpAqE7dRUUUCN5AqE7lRUUVCN5AqE7tRUUWCN4AqFL1RUUXCN5AqE79RUUUCOJAq + E8FRUUVCOJAqE8NRUUWCOJAqE8VRUUXCOJAqE8dRUUUCOZAqE8lRUUVCOZAqE8tRUUWCOZAqE81R + UUXCOZAqE89RUUUCOoAqFNFRUUVCOpAqE9NRUUWCOpAqE9VRUUXCOpAqE9dRUUUCO5AqE9lRUUVC + O5AqE9tRUUWCO5AqE91RUUXCO5AqE99RUUUCPJAqE+FRUUVCPJAqE+NRUUWCPIAqFOVRUUXCPJAq + E+dRUUUCPZAqE+lRUUVCPZAqE+tRUUWCPZDaFu1x91qE7Kbe+9H1ZAY/xt2WBptG5QeVgu1V3D6W + bhHSUK/oxmYLxitFWuWZ5m2rS9dM0wS1Dbu4G4ad8VtSaWeDMsGN262nnVYLpmlCPqOrTPTmrhlh + 442LwQYbtU4pqmvaoAx6N1mz26rdLq8rP0zO5CvYT1PcTeOYlnTNiEr5kI7pmnFcibybLqRRJvk8 + SxcTEZlrWoPE5Ea3HZQfg/c7o/OS9dSHmPpdNCkt6fVisj7M+HXmuKzXi/b5npoCRa9D0ilcp5sx + brd5TUc3qClEs+0N9dPWjJPSo1rS6kWHYNIqc/1EDUKOrcH40CDk3jYIcXYTkrnXDUICSTUI+e7F + 0l3VbW4QomljQ5RtEGLdExc2UdGyBiH5z63fBKUaGoQcfxEWNAg5rM+uHVd5d1zl3XGVd8dV3h1X + efdc5d1zlXfPVd49UzxTPFM8UzxTPFM8UwJTAlMCUwJTAlMCUwJTAlMCUwJTIlMiUyJTIlMiU+J+ + Ru8rnZdp8gfXS3dcL91xvXTH9dI910v3XC/dc710zxTPFM8UzxTPFM8Uz5TAlMCUwJTAlMCUwJTA + lMCUwJTAlMiUyJTIlMiUyJTo7lfTCh03lPenNj/NKJWfnfJDx7VNK1w2q3lvZUvfiuhUsDc0rXC0 + SXkfZo3N197lfeUNXSuC3iib/8ST9/mupl1r04oHLfw30sLTGynMzVD8kY0U3so8NFJoL5+83MKe + WK386AN9/tLSJ56b21j6d6ViyUecqX+IVJVuPuBnriotdKLu1NL6lHrIPpBPs6oef8bWHCeeknva + muOIsybQUaHtaHfK7P17dFT4lGfs5G5ULce6U2vqDnWjuveNFO5U+QIYaVv5glVqIgAUwrA8BKD4 + ZQEoCO1WgEIQlofwE99UZQRisGSgEILlIfjEN1UZgQgsGSgEYHkIPWnpIjJ7mFaAQvgVFK6wTV1E + HERfiUA9BF9B2Qrb1EXEQ+yVDBRCr6BohW3qIuIh8koGCoFXULLCNnUR8RB3JQMFGwUFK2xTFxEP + NkoGCjYKylXYpi4iHmyUDBRsFBSrsE1dRDzYKBko2CgoVWGbuoh4sFEyULBRUKjCNnUR8WCjZKBg + o6BMhW3qIuLBRslAwUZBkQobTWyBdvLQADYKSlTYaJug3QpQsFFQoGJ+4dgC7VaAgo2C8hQ2qSZo + twIUbBQUp7CJmqDdClCwUVDwwibdBO1WgIKNgiIaNjWpKdgoGSjYqJQ3Dwffm9QUbJQMFGxUsgBt + UlOwUTJQsFHJHUCdalJTsFEy0EMblSEAbVLTQxslA40KRkoAbVHTqLoVoAQj1QBtUdNI3QpQDSM1 + AG1R06i7FaAGRmoB2qKm0XQrQC2MFNSUWtQ02m4F6KGNcgRqSmRaoJ0E9E5nL4k4e2Vyoj5GlXH3 + VlQRfy9SZRy+FVXE44tUGZdvRRXx+SJVxulbUUW8vkiVcftWVBG/L1CFHL8VVcTzi1QZ129FFfH9 + IlXG+VtRRby/SJVx/1ZUEf8vUmUcwBVVxAOMVBkXcEUV8QEjVcYJXFFFvMBIlXEDV1QRPzBSZRzB + FVXEE4xUGVdwRRXxBQNVyBlcUUW8wUiVcQdXVBF/MFJlHMIVVcQjjFQZl3BFFfEJI1XGKVxRRbzC + SJVxC1dUEb8wUmUcwxVVxDOMVBnXcEUV8Q0jVcY5XFFFvMNIlXEPV1QR/zBQhRzEFVXEQ4xUGRdx + RRXxESNVxklcUUW8xEiVcRNXVBE/MVJlHMUVVcRTjFQZV3FFbfIV35Y6T3MpmXw/SN46n1SicF0p + GUU0OTf6fhxM3G63U9x6tyOnejP2aWseLygl47U5ojTQkdmD15fLWV7Lqqc+6d04hp3tsxGf8kz7 + lJ+egjPTqMdFkzymllVLpsiNZYEo5On5vFpi/pH/8+pphrEfbDDZRCU75kuqfL+dtv1EYTvGadG1 + zHBrV5no27JAN0xTW5tPs5s7kClLivzV0/Rbu92qrFPTbmeyouYlriY1mCn2Zmd9WnI1nSd3RKmn + xvTE6yebNiYmStbG6LSbKzFdNVMX9eAGsxt2KeW5Ud755zm6RDT0Ou+iFsw0RevyjXetqa5d5uno + fL6HMk/3t8yT3vhwr8s8HVZSai/z5NUPTw+3P9lSHnyPeUezV7xbXebJbrS2smWeXHyi1MbphWWe + XP6f2bhwdJmnpouwoMwTlbotVMq2EFdt4aItXLOFS7ZwxZZ9CRouE8NlXriES/lZZE2RNUXWFFlT + ZE2RNUXWFFlTZE2RNUXWFllbZG2RtUXWFllbZG2RtUXW8phLQRYq9ViIy7FwNRYuxsK1WLgUy762 + DNd/4fotXJul/CyypsiaImuKrCmypsiaImuKrCmypsiaImuLrC2ytsjaImuLrC2ytsjaImvjvSrM + 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 + BJe4Cy5xG1ziPrjEjXCJO+ESt8Il7oVL3AyXuBsucTtc4n64xA1xiTviErfEJe6JS9wUl7grLnFb + XOK+uMSNcYk74xK3xiXujUvcHJe4Oy5xe1zi/rjEDXKJO+QSt8gl7pFL3CSXuEsucZtc4j65xI1y + iTvlau6Uq7lTruZOuZo75WrulKu5U67mTrmaO+Vq7pSruVOu5k65mjvlau6Uq7lTruZOuZo75Wru + lKu5U67mTrmaO+Vq7pSruVOu5k65mjvlau6Uq7lTruZOuZo75WrulKu5U67mTrmaO+Vq7pSruVOu + 5k65mjvlau6Uq7lTrua1q3ntal67mteu5rWree1qXrua167mtat57Wpeu5rXrua1q3nt6v3arbum + FiXhD+69arn3quXeq5Z7r1ruvcrde4nb9xL37yVu4EvcwZe4hS9xD1/iJr7EXXyJ2/gS9/ElbuRL + 3MmXuJUvcS9f4ma+xN18idv5EvfzJW7oS9zRl7ilL3FPX+KmvsRdfYnb+hL39SVu7Evc2Ze4tS9x + b1/i5r7E3X2J2/sS9/clbvBL3OGXuMUvcY9f4ia/xF1+idv8Evf5JW70S9zpl7jVL3GvX+Jmv8Td + fonb/RL3+yVu+Evc8Vdzx1/NHX81d/zV3PFXc8ffrCT84fkj8EfkD6Zwx1/NHX81d/zV3PFXc8df + zR1/NXf81dzxV3PHX80dfzV3/NXc8Vdzx9+sJPzBFO74q7njr+aOv5o7/mru+Ku546/mjr+aO/5q + 7virueOv5o6/mjv+au74q3ntal67mteu5rWree1qXrua167mtat57Wpeu5rXrua1q3ntal67el67 + 96lpfUgbl3XM+Pzkba1V7g/Xd63/wqaN0sEmHXyyQZG7oW299xvjKatFUtHP71lvaFuf9zL5+d8m + MtY67b1r7Vv/sAN42AE87AAeP+wAHj/sAB4/7AAeN+8AsgGan2m/3T/Lz8/AbHX2DqAX52+mi/mx + 9MvD53N22ejwRMWNTvHvxaG0l/n+l/Iw/xGZ9Pdi/9/7ubppN13M7qriP33nU9Gb2bOHrh146L4o + D93zn86Teedee/aq2M5/zv/03vd2KPv4Q4F37rx/zf6sV3n84/cXr/iM3LIey8s9C2999u2dcFuO + 9fn7K59+hm5jC9yVmgYfcbL+IdJdufmAn7m7stCJulNL61Oq4vzC+JOsKj7QnbpNXXVuHhbSjcEn + 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 + RaRyZhcbKmV6Eaik+cWGSplgRCpnhrGhUqYYkcqZY2yolElGpHJmGRsqZZoRqZx5xoZKmWhEKmem + saFSphqRyplrbKiUyUakcmYbGypluhGpnPnGhkqZcEQqZ8axoVKmHIFKmnNsqJRJR6RyZh0bKmXa + EamceceGSpl4RCpn5rGhUqYekcqZe2yolMlHpHJmHxsqZfoRqZz5x4ZKmYBEKmcGsqFSpiCBSpqD + bKiUSUikcmYhGyplGhKpnHnIhkqZiEQqZyayoVKmIpHKmYtsqJTJSKT2zUY2fsP5I37DbvIbtpbs + N2xWkmJ0uWQfc92pcI1FrfE7I2nt1mmslZj8eut32cW9dcZvnDw+xW247lA61dK025LiI4a8JVtT + 99dLSs676/Z2n4M52Gy2yQcjW7fzO5tTtHLYx8POnLC3Tnw+2ZB3tl3CjTtZu3P99ljPIpfqr5Ou + 3sed87ttOtiy2e/2JR3CPm5j2ogJcZPqp0/5RV2UZX7Qj5oOx5WvVWGsvzxvrzHiNda6/TbvkuyM + 329TPc+zPeS13+x2G7M/ZSdjCi7EsNR5e8M+yip7W3zx9epQ6sev9wLP6RBLkOJtLcqtrDe7vau7 + mQ+mrOtz0Pqk6jzZWblvAf2ilsMdfhEPlsP30HLYpAtfLrxZueLus+VwbeEsy+Fvn516t3qrLYdr + Q0mRazks8aJebaSE0yyHJVyEejtmTIfl8Pwf4QTL4ZvsKytbX9QE06sJplcTTK8mmF5NML1SvFK8 + UrxSglKCUoJSglKCUoJSglKCUoJSglKiUqJSolKiUqJSolKiUqJSolKiUpJSklKSUpJSklKSUpJS + klKSUpJSslKyUrJSslKyUrJSslKyUrJSslLUelXUelXUelXUelXUelXUelXUelXUelXUelXUetWp + 9aq7tF691i5z+jX1RU03vZpuejXd9Gq66dV00yvFK8UrxSslKCUoJSglKCUoJSglKCUoJSglKCUq + JSolKiUqJSolKiUqJSolKiUqJSklKSUpJSklKSUpJSklKSUpJSklKyUrJSslKyUrJSslKyUrJSsl + K0WtXkWtXkWtXkWtXkWtXkWtXkWtXkWtXkWtXkWtXp1avbrR6vU+WSqnVUremJDFjMGD7ovrLZV9 + XNU/tPVpOeXxuc3d4Kjs6t1ZKvXptZjxL0u4wVE5uVWMqcRQZJIVlF5L5Ycr6sMV9eGK+vg2XlHP + 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 + S15Hc4hi/OaUX1LG1JCw1A95ggm0rJLU3aj92RexOV3v7F3P1sM2buwu2PXBhxyLk/267vN64906 + nmJ5LeORXGBX3zt7L+kC3eEa8uACfR9doNNFsBc2r2pt32cX6CiW5QL99PujQrthtvxWu0CnVW2Y + ZBdof2F9PdPMiS7Q/sK4VZ62Yq4L9Pwf4QQX6G7f1S630fvk+JtWtQpLPU425DIlTVzr+OvqHY/P + Iddfs2RXnymvN/yNZVXsGFxR7//qU35MNxj+jvbkUuqDRn1q9TFkF3odfz/xWXK2u2u9Acg+z3N3 + nT5THtxdz/J1O/0adXmH1mtONvuLPpvV3ZmH5G5a3X3Ko3aeTfDsL/r8DpxnHpvbaGx3Kw4WwdS1 + 79vu1Cn172Hqep7F5LxrOsGLs/sLP7MXJ+lA3alT61MW49nO5j3fdacuV3fI2fzeu7su5Jy3hMnd + Mn50i1jHPbi88aH3zeXt0yzKWmT51EILnZZZkvSweOhh8VBfxd4iuUkthnJT2vjWbNN278SufbJp + u12bbRbZ7nII222SU9LGfTw9bLzndvFGBYZJKRRT6oUkS752L3fBlp3Z2nVKstnvxfkSvct2ux7V + CnFzwl7W32fGhP3MYaGbdtHWMoux2Hzz7+hT2uz8zttNjBvnjS31bSjuEP1mU/wpSpqQUlpmH0/T + X9SfM9uYXJR66bHOp+sSx8uhntfrkvb7fT1n/T6J9/udxJjL1pmT5Bc5RG+X2tcbNSYxGcnZ5Prb + 3KAwseuNbMxh44vUn0XWu7g9TKdAcrIWd0pdSj45O75v0GlhhcnswfoHhcn9VZiEVTT2XitMfGAp + TL59dqoe+DYrTIJZSbRkhUmZJvJzOlFhUi7ErXLOHQqT+T/CKQqTo+Rb8aoW8KoW8KoW8KoW8Jqf + 6zU/16vmwKvmICglKCUoJSglKCUoJSglKCUoJSglKiUqJSolKiUqJSolKiUqJSolKiUpJSklKSUp + JSklKSUpJSklKSUpJSslKyUrJSslKyUrJSslKyUrJSulKKUopSilKKUopVwe3ff5udPvoC+qvvCq + vvCawus1hddrCq9XDYdXDUdQSlBKUEpQSlBKUEpQSlBKUEpQSlRKVEpUSlRKVEpUSlRKVEpUSlRK + UkpSSlJKUkpSSlJKUkpSSlJKUkpWSlZKVkpWSlZKVkpWSlZKVkpWSlFKUUpRSlFKUUq5XwqoJKvk + 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 + s7CnoVJW9iCVs7SnoVLW9iCVs7inoVJW9yCVs7ynoVLW9yCVs8CnoVJW+CCVs8SnoVLW+CCVs8in + oVJW+QCVtMynoVLW+SCVs9CnoVJW+iCVs9SnoVLW+iCVs9inoVJW+yCVs9ynoVLW+yCVs+CnoVJW + /CCVs+SnoVLW/CCVs+inoVJW/SCVs+ynoVLW/SCVs/CnoVJW/gCVtPSnoVLW/iCVs/inoVJW/yCV + s/ynoVLW/yCVswCooVJWACGVswSooVLWACGVswiooVJWASGVswyooVLWASGVsxCooVJWAiGVsxSo + oVLWAiGVsxiooVJWAwGVtByooVLWAyGVsyCooXatCPrL8IfnT/7jP7765unlH5fn1rhgzPhhZ5KM + /2BSMApL1j832TofxkjvMXP7Mv1nDDJ9ovlGT17tvn7x89s3Lza/jJlFz14dXr/5ca3xRf/7X4+/ + ffHP/fevXrx9fPH4z78fN6O+f3zhVjnUduVSCL64+uTwxeOv/r7f/tfPv/w4Ra6uX/4yxhNZuzdl + V2Jyh3rl25Swc/tD3O/FbWPcm1B5T17+8PrNi7d//3H8gq/DmJY6fsWzV7//x5QfO94Z2eDfBZLj + wT03uXPMfbp6H83KhPrn3uZRKRVNfRwK1+ym2fn6G+zqxXwfdsHlQ4qbQ3D7rT1sU8gn7GYIwcZF + dnIMk7x+J2WVYojjt6eQspXw9MtrfstdWu+ylLXk9Xq7dodizVrM3h7cWnwK2xN2UopZZBffhRve + 9GO6+hN6yeJSscG4cvVelnIoTuz+IMnW33K9PqzDPrutd5tc7Hp3yhlrg2S71An7LhvtxhO37mwu + JtbHjJDT+E9X7+3amK3dhXW9Y0pbW2zeuBT9fu1ku/EunLa3cYylX2BnL+MF/3u6cv3jmxc//P3t + H16ufxhToV/9/NN+++LwYj9u4bMpPa2+eaPhyu/fL3C5+PDrLjPY/vrm9e6X7f7N5aX12W76aY62 + YiRc9dGvhmdft39tV/aqP/7L27/X//zhf/jtoD/59m+aOX3Vd2sI9Rze+wzrq3jPvvqbsY/eZ21f + /umjw4v6b97M2/DtizGk+90pdsO3mnmHRH+Tt1+9/uXV2/oX4zk07H9683pMz3vx6oe/vly/elVP + novH37x+NcYCXv59/fIxaPy7Fz+2YeMuXdi4KuL/cwoGf7l+OzbKy1PuVW2gv/xYN0Lffxgx/j/X + w7NX0xZg8Pj0L/+8f7seAwW/1TN6e9l5MYxwu3t1VfjgLz/++LvLcMPf/WpXcRUfv6vF7//85y// + WN/+7V0euf7BmNL+r8f1mrkev2b7uv4CP7398q0e0fdJib/9hxfjYfrjuNDJOBNT/vKvf/nqT3/5 + /uv6J2/2v74Y0dPf1Cveq7rxv+71Ex8tvKffH93wpONFi/6DycfnYwLjtEW/nXNfHm3cV5JK8S47 + 4z7YuMuEyDf6N+//vd7eTNGMP728PN6/+/XVTg/q9sc3q3pQ/8dl+uG7Pdwd5887852x4ykRcm0s + Zjol6sfGA/qdBju+fPr/va3nw/hvhvWrH/bvz6t/PX76aldPwqvOtHHXL3y68HkVjfxn3YLf7394 + 8erVx/7crurNWN2KuhmXl6Hvh2V+hCe73YvxkK1fPnmrN417PeennjLFTNqc/lT/0uasL2V6KUZf + rL6Ivjh98foS9CXqi1KKUspEqTe3+mL1RfTF6YvXl6AvUV+SvmR9UYpVilWKVYpVilWKVYpVilWK + VYpViihFlCJKEaWIUkQpohRRiihFlOKU4pTilOKU4pTilOKU4pTilOKU4pXileKV4pXileKV4pXi + leKV4pUSlBKUEpQSlBKUEpQSlBKUEpQSlBKVEpUSlRKVEpUSlRKVEpUSlRKVkpSSlJKUkpSSlJKU + kpSSlJKUkvSsy2nQU1FfyqCnor5YfRF9cfri9SXoS9QXpRSllIlST0V9sfoi+uL0xetL0JeoL0lf + sr4oxSrFKsUqxSrFKsUqxSrFKsUqxSpFlCJKEaWIUkQpohRRiihFlCJKcUpxSnFKcUpxSnFKcUpx + SnFKcUrxSvFK8UrxSvFK8UrxSvFK8UrxSglKCUoJSglKCUoJSglKCUoJSglKiUqJSolKiUqJSolK + iUqJSolKiUpJSklKSUpJSklKSUpJSklKSUpJlfJ/3rXl75796ell51///Mub/e6v6zf1v7z97fb1 + /33y7dv1eB8x/uNf92+2tYv8+cV02zI+wNfb+y/e/4e//PL2L4ff17uc3c+X/3G8N/kNePmN3/zu + id5//LQeU4bfN6b/p952/fP1q7frl5f/6evXP65fTHcff9y/rog3/xj/eeLXrx9q862t7OXlBf9/ + 7X9++9t/+ur16zf1dWqSXlZjlnA906wZx43r8+S3r395+/er/tbJKiRXf4NiZBzHkC8eP11fjY1p + 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 + /2DMPPzX43rBXI9f81sA/Vs9ou9zR46S6f/oxvTZekkr4YNk+neh8uPf1OvLq7rxv+71Ex8tvG+f + nToe8lti+/bdOffl0cZ9VW+miq93IsZ9sHGXeStv9G/e/3u9u5mCTn56eXm8f/frq50e1O2Pb1b1 + oP6PyyyRd3u4O05zdOY7Y+tV/qJeFsTJdErUj40H9DuNSfkgnXhYv/ph//68+tfjp1PO71Vn2rjr + FyFehLwqNv9n3YLf73948erVR/7cp1W2Yw5l3YzLy9D3wzI/wpPd7sV4yNYvn7zVe8bLzMypoUyh + LQtmx0pWSlZKVkpWSlZKVkpWiuYei+Yei+Yei+Yei+Yei+Yei+Yei+Yei+Yei+Yei+Yei+Yei+Ye + O809dpp77DT32GnusdPcY3eZe7xUgul0QPRFKVkpWSlZKVkpWSmaviuaviuaviuaviuaviuaviua + viuaviuaviuaviuaviuaviuavus0fddp+q7T9F2n6btO03frAblXEeIhrUa1iin1tjO5Uu+Srk0Q + j7Ly3mc/jmIbY8VdnyBuTVzVc6oWsPXBpejDDRHiabw21JvBmOv9bLQ59EaIP5T1Q1nfWNbnxylL + baZhZpzy+Jn4EKd8Vs7d6bcBlw9BvTGAs7/os8Upn3lI7mac8nkhnPMOGSGttPsLP3NaKelA3cZs + yVtRkISA5b5v+/yJpYyj9HBeXXPEzk7B7fmuO3VO3aEU3FtxvMYB7k9yOukX3alz6apjcxtPpIc4 + 5YU8RxexB31w8jxf1PVJnDwXMd1cxB9zESvLRVwnFzGIXMTLcRHbRYpD4jE0Q+0XE+F9x5ZmqH0O + 1OKWHsuYSs8plS1uKQMKItHRAuzofc95muGCwoGCRHQ0ADt633PyZ7hKcaAgEB3tv47e+9gDHRaA + HskYnTHWwPvQAx3o0HGG4AgiR1aL4/v5P9Q4yr4AVHBL8/H7juvpOBGwANTBlnqABumBDgzoJ1rR + sczai4dVEndplcQy6xmWWXmwzBqBZdT8y+jul1HIL6NlX8IlnHQT3FApd8FI5dwGN1TKfTBSOTfC + DZVyJ4xUzq1wQ6XcCyOVczPcUCl3w0jl3A43VMr98DGVdUPcUCl3xEjl3BI3VMo9MVI5N8UNteuu + +LasQDp92crOh7SzJeVDyckYt09u5zYxr+3Ge9mcsghp1rKVnjnYm5bnxFhvK6PL4n2UfM0aJLM5 + 7E1x0e1dDOu1PWRnZVMmgWDeSD5lJ1OJ2csiO/qxlVY2Z2OKRDH1xiaacs1PeUjJ7mOpX2UPMYf1 + Lm23UjdnFw/Ou005YS/riWCX28nTluaYejKmEEqou5yS89ettyqHXRGbxPnDNm3STsTsNvt1fXoL + cbs+5Te1RqJbZGc/uq6s7qf1sdaoqWdlqj9aPSGv3s+tiwd/2B22+106GJfXh130zhvjwz6Z3SkF + asfTfJH9/ARrkGZrzR7WIN3fNUh2lby/z2uQkrecNUjp+ZM//FZo4bt6z1tC+fB9vY15dwd0q9cg + xVVtDLQ1SOOuX4i5MPXOw5uPrkGa/ryem6Gscs6z1yD1/AgnrEGyfpL2W5/1ZZL222D0xeqL6IvT + F68vQV+iviglKCUoJSolKiUqJSolKiUqJSpFF05YXThhdeGE1YUTVhdOWF04YXXhhNWFE1YXTlhd + OGF14YTVhRNWF05YXThhdeGE1YUTVhdOWF04YXXhhNWFE1YXTlhdOGF14YTVhRNWF05YXThhdeGE + 1YUTVhdOWF04YXXhhNWFE1YXTogunBBdOCG6cEJ04YTowgm5XDhhdPmF0eUXRpdfGN0WPy1BqD+c + vkxLEOoPpy9WX0RfnL54fQn6EvVFKUEpQSlRKVEpUSlRKVEpUSlRKbrAw+oCD6sLPKwu8LC6wMPq + Ag+rCzysLvCwusDD6gKP+sPpi1J0gYfVBR5WF3hYXeBhdYGH1QUeVhd4WF3gYXWBh9UFHlYXeFhd + 4GF1gYfVBR5WF3hYXeBhdYGH1QUeVhd4WF3gYXWBh+gCD9EFHqILPEQXeIgu8Kg/nL7oMhGjy0SM + LhMx5V6t6bL1aaU+7pacx4bk603uDau6vnSrOPrs19v94nI9EUeXh2vXdaWVZBmtA7wdja3zDcu6 + nF25Uh8Ocon1gc97l+as60ofrOt6uFQ+XCofLpWf8FJ5zjo5f+HKeGdWLygnr5N7/5n8sE7uDPXy + nFvVs9bJdXzRZ1ond/YhuZvr5D7lUTt7MVPvt33uxQKco3QbVwwssqxwbimevf7yjC/8rOsvaQfq + Tp1an7IYz1nV1PFFd+pCdVdWNd2Kg3Xmgsu+77pTp9MdWnB5z9fJ1f//QTrWiTfLJ0GHBaDlTwCx + x+9tF3TgQz9IxrqEAFS6oMMCUAtbKgB1XdBhAajAljqA+i7osADUwZZ6gM5eLjBBhwWgHrY0HENt + T5l+EIhFhIY/AQSgXWUahgWgEbYUytR2lWkcFoAm2FIoU9tVpmlYAJphS6FMbVeZ5mEBKPQoC2Vq + u8oUehQFGqFHWShT6SnTCD2KA4UeJVCm0lOmEXoUBwo9SqBMpadMI/QoDhR6lECZSk+ZRuhRHCj0 + KIEylZ4yjdCjOFDoUQJlOn+Z4AQdFoBCjxIoU9dVptCjOFDoUQ7K1HWVKfQoDhR6lIMydV1lCj2K + A4Ue5aBMXVeZQo+iQBP0KAdl6nrKNEGP4kChRzkoU9dTpgl6FAcKPcpBmfqeMk3QozhQ6FEeytT3 + lGmCHsWBQo/yUKa+p0wT9CgOFHqUhzL1XWUKPYoDhR7loUx9V5lCj+JAoUd5KFPfVabQozhQ6FEe + yjR0lSn0KA4UelSAMg1dZQo9igLN0KMClGmoxdABHejQUaD1IcQZE+D9XG+MCTowoMdzDaxB6YZK + GZVGKmdYuqFSxqWBShqYbqiUkWmkcoamGyplbBqpnMHphkoZnUYqZ3i6oVLGp5HKGaBuqJQRaqRy + hqgbKmWMGqmcQeqGShmlRipnmLqhUsapkcoZqG6olJFqpHKGqhsqZawaqKTB6oZKGa1GKme4uqFS + xquRyhmwbqiUEWukcoasGyplzBqpnEHrhkoZtUYqZ9i6oVLGrZHKGbhuqJSRa6Ryhq4bKmXsGqmc + weuGShm9Ripn+LqhUsavgUoawG6olBFspHKGsBsqZQwbqZxB7IZKGcVGKmcYu6FSxrGRyhnIbqiU + kWykcoayGyplLBupnMHshkoZzUYqZzi7oVLGs5HKGdBuqJQRbaRyhrQbKmVMG6ikQe2GShnVPqay + hrUbate49u0xoqsnbbHG2FzE5JKvc/Pa7s0uRbs+xHHYdrMp27hxKZmtL1tv149PcGgLyU5+A6f5 + XM1enXmzmVd2MeRQSg61W4d4jZnXLmzdfucklLWXndT/2zl3SNuNM4d9PQIn7KYtEk428+pZLnGT + 296proJ2E8x6/CVD2O3LzuZ1Kc5t99t661I3QU75OU93FexbDHnj7zkZjdWHclestU7y1bu5DsbZ + YvL4Z+I39XtyTDYdDnvvDmYfT9nNmMvJHnSzF1PdtI/iU5LKFBOyNcGnq/dxv1unQ/IHWy9FYVus + 24T91gQT3VbqSeBOqsySQliqMN+7Ci5pRNexmPvBiO4+GtH5C2cunKycCffaiC4VlhHd0++P7nic + Pb4D+mD05lYb0eVVyYVrROfcFPEtcpoRXf1zG1b1ytVhRDf/RzjBiE5E7XxE7XxE7XxE7XxE7XxE + TYGcmgI5NQVyagrk1BTIKcUpxSnFKcUpxSnFK8UrxSvFK8UrxSvFK0Xtn0Ttn0Ttn0Ttn0Ttn0Tt + n0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Tt + n0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Tt + n0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn0Ttn+TS/knUKUjUKUjUKUjUKUjUKUjUb8ip35BTvyGnfkNO + /YacUpxSnFKcUpxSnFK8UrxSvFK8UrxSvFK8UtRZStRZStRZStRZStRZStRZStRZStRZStRZStRZ + StRZStRZStRZStRZStRZStRZStRZStRZStRZStRZStRZStRZStRZStRZStRZStRZStRZStRZStRZ + StRZStRZStRZStRZStRZStRZStRZStRZStRZStRZStRZStRZStRZStRZStRZStRZStRZStRZStRZ + StRZStRZStRZStRZSso9s8/LqzG6I4ToYn12qkf2i+vt87xdhVBi8an+OvWxw9/gnhftyvn6sJLr + 06kd2Te456WwCma82w/1aTbH0uud93B1f7i6f/Fwdf/i4er+xU1X9/Md/9KqHsWZjn+/febB8a/f + iuX0Z4LzzWp6vuvzm9Wcf4Ruo1nNrTheBOu/vm+7U2fVg/XfrMP1T4r1X/cXfmbrP9KBulOn1qcs + xvOs/2Z/0Z26UD1Y/82rvk92eXr8Gf2Tzzwkt9o/+d47/o1DQDN/3pOgwwJQkPaAKNf1mEqMwxx8 + qDOwpQ6gHQvLx5GYBaAWttTDD9WxsHwcLFoAKrClxzI812MqMY5nLQA9lvg6EOO6HlOJcchtAaiH + LbUA7SlT54cFoAG2FMq0x1RiHLhcABphS6FMe0wlxrHVBaAJttQDtKtM07AAFHoUSHBdj6nEOEK9 + ABR6FAhwXY+pxDiIzod66FEgv63X6C7osAAUelSAMg09ZeqhR3Gg0KMClGnoKVMPPYoDhR4VoExD + T5l66FEcKPSoAGUae8rUQ4/iQKFHRSjT2FWm0KM4UOhREco0dpUp9CgOFHpUhDKNXWUKPYoDhR4V + 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 + Ibn91M4sUJ3YmdG0fbettqY+XfiRSAD51JNI1XkmbqgqD8WXVK2n4oaq8liMVJ3n4oaq8mAMVKUn + 44aq8miMVJ1n44aq8nCM1L6n46ey1JoO3qTgbSi/4WJ5/rD3LOW0ZctsMuNxtid3PJE/+zE4mtkG + O8VV63N9omzT2uWcm3V/71mG7DiXu1MqT67+3uW5szmO6RjGcBz9cZ6P3p/SPJl48pFP9kxrtjLb + ZbH6Dtv48HLy9aty3TGyt+bEEzvyY4p8NsdpZDvZ8mh8WnMoN6zK7ZPYPbjU2qTySJTJmLxYk6V7 + NjO4QMafzWjO5/JzfvEzZHPMkWY7BnNcs5mU0vp1892ir4dPXI5lb2ciQyVCmfK7t3ZKZzfnMZoj + T8mbyUze83gKdp5zmsOarS0B7vbZ2J/Xz++51LpDJnxbav0Sl1qH1za/dunAll/0UuvktJZaf/71 + xR2Pcxa+/3IP+KSXWseDDcpLrcm9dv6QmNcttV7+3B58yB1LrbcfhBVLrUu6qav8WFYAsqwAZFkB + yLICkGUdIcs6QpZ1hCzrCFnWEbJQrFCsUKxQrFCsUKxQrFCsUKxQrFCcUJxQnFCcUJxQnFCcUJxQ + nFCcULxQvFC8ULxQvFC8ULxQvFC8ULxQglCCUIJQglCCUIJQglCCUGTdKcu6U5Z1pyzrTlnWnbKs + O2VZd8qy7pRl3SnLulOWdacs605Z1p2yrDtlWXfKsu6UZd0py7pTlnWnLOtOWdadsqw7ZVl3yrLu + lGXdKcu6U5Z1pyzrTlnWnbKsO2VZd8qy7tTKulMr606trDu1su7UyrpTK+tOraw7tbLu1N6tOyVZ + LsmyXJJluSTLckmW5ZIsiy5ZFl2yLLpkWXTJsuiShWKFYoVihWKFYoVihWKFYoVihWKF4oTihOKE + 4oTihOKE4oTihOKE4oTiheKF4oXiheKF4oXiheKF4oXihRKEEoQShBKEEoQShBKEEoQii3RZFumy + LNJlWaTLskiXZZEuyyJdlkW6LIt0WRbpsizSZVmky7JIl2WRLssiXZZFuiyLdFkW6bIs0mVZpMuy + SJdlkS7LIl2WRbosi3RZFumyLNJlWaTLskiXZZEuyyJdlkW6VhbpWlmka2WRrpVFulYW6ZazTj6C + fET5SC9rEX86hLJzYyjHIpXHfk4PrOG34ZCo/C05H10qidnfv4g/HGxyLqRoXS7/s3DvXcMf+OCS + Tdm48kwTg8++dxH/LUfdctTHtxz18S1HffyPnqOut4ewhxi32kMsY/zNHuKqdXvrn86uX9nY81uP + v7Lx+j30FFc2Pon9pbC8v+/XntVZ9Y+xvP9D7rHrjGw2/9CzOptuRjYbdtZ1Rjabf+jRjGyu3CXP + 08jmOh+NbbtMwXCk+wcf2XBEaUc9xWvUi7eHWF5xbbxyrIIO+lA2ONNLkdX2FuUVijPVgILI7LJT + DNP2FuUVOuwAvZRG02WfmPK9Z/3ZZdNfLaiFmYLEbnuL8goddoA6mCkDtGed5GXDXy2oh5mCHHR7 + i/IKHXaAgnTXQ5j6rjAF5a4OFIS7HsI0dIUp6HZ1oJfLeAoEoF1hermKRwkKOSpAmIauMIUcpQK1 + kKMChGnoCVMLOUoHCjkqQJiGnjXSFnKUDhSOfvTx4nvqOfktHH0VqIOjD0utKPWc/A6Ovg4UDhQs + tKLU4zrgIPElb+B7z0wh8elAPc70cvN7jCyWAtgOUEh8sGqHeowslhrdDlBIfLBmh3LP9dRB4tOB + QuLLcD3NPddTB4lPBwqXvgzX09xzL+Xg0qcC9XDpy3AvlXvC1MOlTwcKiS9fhikbQz3QQR8aLq9S + 5X8MfO/Y/HB5lVKCBoT6Hiiuf9J5NdFQVd5NAFXp5URDVXk7gVSd1xMNVeX9BFJ1XlA0VJU3FEjV + eUXRUFXeUSBV5yVFQ1V5S4FUndcUDVXlPQVSdV5UNFSVNxVI1XlV0VBV3lUgVedlRUNVeVuBVJ3X + FQ1V5X0FUJVeWDRUlTcWSNV5ZdFQVd5ZIFXnpUVDVXlrAVSl1xYNVeW9BVJ1XlwgVefNRUNVeXWB + VJ13Fw1V5eUFUnXeXjRUldcXSNV5f9FQVV5gIFXnDUZDVXmFgVSddxgNVeUlBlCV3mI0VJXXGEjV + eY/RUFVeZABV6U1GQ1V5lYHUvncZT8V1ZfF1sOWoLfeDOQYfFsuQd9o60HEOR6KczufszikkY+Mp + 50QpxXAeX62wdXDB8npbh+067IftK5aVYOXJ3aRyYfKLv8Q7vTrC0dN4TEearTmPU5pnF+eQY46T + OR/dis1kkyPtspnv811J1rkcXDkmJmZ69wbmVLaD5xSiK39+9Cb4PFmXONBpHs/zmg3Mccn4u2zi + ++xzyk0sL/YyaVmzVzaC77HPcbM7Rz9Px+MYzt5McQyJynE8l2eL8yms2UqOiTe4kHTK3h46nqGc + quWZMpYH+iUw7/fRyac8lpP7yFO005hS9uV/j+Sn09HGadUxTftE5q8+OvtarmwWtN4sV16u5Uo4 + ROtesuVKeaxQsVyJ5psvv3g70Aqf4Xt6DpYrbA7klS1X7EI++GTWWa4sf75Yp6WtlitdB2GF5Upd + XSw94KUFvHSAlwbw0v9dWq5L9/e7RvT137vW73V58l3LdlnaLkvTZWm5LA2Xpd2yNFuWVsvSaFnh + XP+VddGyLFpWRcuiaFkTLUuiZUV0HSsr32Xhu6x7l2XvsupdFr3LmndZ8i4r3mXBu6x3l+Xustpd + FrvLWndZ6i4r3WWhe11RK+3dpbu7NHeX3u7S2l06u0tj97se8/Xfu67udUnuXTd2WYgtC6llIbQs + ZJaFyLKQWBYCy0JeWY9b/5VVvLKIV9bwyhJeWcErC3hl/W4dK+u0ZZm2rNKWRdqujpUl2rJCWxZo + y/psWZ4tq7NlcbaszZal2bIyWxZmy7rsZVn2C7KzyKFcRAIt5RWbDefwgJuF94eUXHn2is76cnsX + 7zezKNFb7gTLxbH8hxLLKT7kZhHDwS93O67cz6cyhw1eFtG85WVxC/5b8CsE/zU+Aem1z685HjLn + 1T4Bl2NuPgGdKwQ33VJc6RPQ+VuPvAZXZQ89xSVuT2J/XesT0P1rz+qs+sfwCbhisem23aWwKvea + H3zMVbl6O+pZnVofMhivsKDo+aFndaF64RYUm6Pvg12eXj2WBcX1u+RJW1C8bJ+AuBy0SyH2isO7 + CjrsALU403j53XVBcaYaUAczdQD1XdBhB6iHmV4KDy2bLuiwA/RSclYgAKUu6LADNMJMCaDcBR12 + gCaYKQN0a9d3gQ47QDPM1Bn43rP5edCHwoKhAoHN7wlTWC+kBCWYKYSp7QlTWC2kBIUcZSFMbU+Y + wlohJSjkKAthanvClCFH6UAhR1kIU9uTomGdkBIUcpSFFG27whRylA4UcpSFMLVdYQo5SgcKOcpC + mLquMIUcpQOFHOUgTF1XmEKO0oFCjnIQpq4rTCFHqUBhcVCBALQnTGFtkBIUcpSDMHU9YQorg5Sg + kKMchKnrCVMLOUoHCjnKQZj6njC1kKN0oJCjPISp7wlTCzlKBwo5ykOY+q4whRylA4Uc5SFMvc09 + 0OE90J6ZQo7yEKbe9cwUcpQOFHKUhzD1vgs67ACFHOUhTIPpgg76UFi8WCAApS7osAMUclSAMA3c + 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 + SENVKYIgVacK0lBVyiBI1amDNFSVQghSdSohDVWlFIJUnVpIQ1UphgBVqRrSUFXKIUjVqYc0VJWC + CFJ1KiINVaUkglSdmkhDVSmKIFWnKtJQVcoiSNWpizRUlcIIUnUqI0jVKY00VJXaCFJ1iiMNVaU6 + AlSl8khDVamPIFWnQNJQVSokSNUpkTRUlRoJUnWKJA1VpUqCVJ0ySUNVqZMgVadQ0lBVKiWXVK1S + SUNVqZUgVadY0lBVqiVI1SmXNFSVeglSdQomDbWrYvKUHBZjqg90IUSXjLvHqy5P+eR4PLk8TbOf + Q/L5eErl5vU8TscwpldrPNwo+/UubhuXPD1kVGdtNs75WDLMckEJ795Ek4/WBjoTG++NC3TkMqGy + zyf20bq8ZhOd5xA2uEhuXCn4oBsfl9MleedKuKR4vxtfzvbkZ7JjOR5lO/3RmPLPZE/H5P3xeF6z + mWmfTfzVje8hq0yfy608+VC206Zwz/nKbjbEbObRTvPRxdM5zt7bfBxHP8/ztGYryz2ns3sdy3Vm + meUikIwPoVLucVfMLpYpzCefZ5/Op5hO6cRjPk1l9u5Ia7aUym/ssqE/W5/u6664eb3tzV3x5bor + lj1p3It2V3RGzV3x67cDzbrLhyD7VsnlKbsrllOiZG1dd0XrFnfF6Gmdu2L5c8uH4LrcFTcfhBXu + imTF7cuK25cVzzArnmFWPMOseIZZ8Qyz4hlmxTPMimeYE4oTihOKE4oTihOKE4oTihOKE4oXiheK + F4oXiheKF4oXiheKF4oXShCK+L6RGL+ROL+RWL+ReL+RmL+RuL+R2L+R+L+RGMCROMCRWMCReMCR + mMCRuMCR2MCR+MCRGMGROMGRWMGReMGRmMGRuMGR2MGR+MGRGMKROMKRWMKReMKRmMKRuMKR2MKR + +MKRGMOROMORWMOReMORmMORuMOxuMOxuMOxuMOxuMOxuMOxuMOxuMOxuMOxuMOxuMOxuMPxnTuc + FZszKzZnVszSrJilWTFLs2KWZsUszYpZmhWzNCtmaU4oTihOKE4oTihOKE4oTihOKE4oXiheKF4o + XiheKF4oXiheKF4oXihBKGJ4R+J4R2J5R+J5R2J6R+J6R2J7R+J7R2J8R+J8R2J9R+J9R2J+R+J+ + R2J/R+J/R2KAR+KAR2KBR+KBR2KCR+KCR2KDR+KDR2KER+KER2KFR+KFR2KGR+KGR2KHR+KHR2KI + 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 + af+aDvSuP/79T/9Z/uu3/4ufd/unX/67dEV8129Lm8QtvF+7LL6L98Vn/27oo1+7Qd796Ufzt+X/ + 8mbbxE/fLm0kfznFHvhVs22XyDH56bMf/vL9T+UvlnNoOP/5zQ9Lf5dvv//jH74bv/++nDyvX/3u + h++XxjV3f19+fGmF+dW3f2rbYXJ8Tfngo/+P2rryu/GnJUnenXLfl+T5lz+VScj3t5tg/s9x+ELO + YmyNedf1+qdxaXnzpZzRp7usi+1yTtP372qP85c//emf7trv/NNf6RAOy6Xp7ie+/rd/++Rfy9d/ + /6VjpvzB0kf0v16V+BqXnzn9UI7An3/65CfZo7/28vn5v/h22U3/Wh5Skin/kPvkD7//7Le///o3 + 5U/enP/67YKuf0Mfv/q+TP6vZxnx3sD73UXgOWvT5fdfH4K+WXoE1Rn9fM59cjG5zzjmkp6TNfat + yd31MHojf/Pr/11ubWrzoD9/d7e//+mv30+yU09/enMoO/V/3PXn+WULp8sOqdZ8Zahc4187f0g5 + 1lOiDFt26FfSeuittuLD+P0fz7+eV//16vPanvtdZ9qy6a+dLf/vYLL9jzKDfz7/8dvvv3/Pn9t0 + cDGVWZRp3F2Gvh72OQifTtO3yy4bv/v0J7lhvOtDW3NKbYRE0uabpM83SaNvkk7fJK2+SXp9kzT7 + Jun2TdLum6TfN0nDb5KO3yQtv0l6fpM0/Sbp+k3S9puk7zdL32+Wvt8sfb9Z+n6z9P1m6fvN0veb + pe83S99vlr7fLH2/Wfp+s/T9Zun7zdL3m6XvN0vfb5a+3yx9v1n6frP0/Wbp+83S95ul7zdL32+W + vt8sfb9Z+n6z9P1m6fvN0vebpe83S99vlr7fLH2/Wfp+s/T9Zun7zdL3m6XvN0vfb5a+3yx9v1n6 + frP0/ea7vt/S6pqk1zVJs2uSbtck7a5J+l2TNLwm6XhN0vKapOc1SdNrkq7XJG2vSfpekzS+Jul8 + TdL6mqT3NUvva5be1yy9r1l6X7P0vi7HTz6CfET5SPIhFOl9zdL7mqX3NUvva5be1yy9r1l6X7P0 + vmbpfc3S+5ql9zVL72uW3tfl+MmHUKT3NUvva5be1yy9r1l6X7P0vmbpfc3S+5ql9zVL72uW3tcs + va9Zel+z9L5m6X3N0vuapfc1S+9rlt7XLL2veel9/X9/SQBfffHbz+9yzPjjX96cpz+Mb8p/89PP + N0r/69Mvfxp/qm2X/9enfzi/OZXr1b99WxPk8phYbpg//vW/+P1ffvr9/M8ln04/3v2XSxb8GXj3 + i7/7p08l0/15XDqu/XoJ/P9Kgv/7D9//NH5391/95oc/jd/WPPev5x8K4s3flv9c+eXnh3KZLxfN + 7+4uLf/7/ONPP/9Xn/3ww5vyWS/Hn/h4MGRieVpxyZgUlwenL3/4y0//+a6/dvHAIVK5rsacKLqS + sD4f7wO7Q7knjsmWZ9Zsy4NC2akleb+bm8v9tuFyt13+lsqp7f77/5Z989Wb8fT/lo367G+n5WGb + 4rK/fvzxbpv+UBtel2tw+ctvv7tdOG8XztuF85EvnCVslxuoP9zdOC43XBKrd08b5S7//Ga5B/rN + 5c2gPB/Y+NrYA3vzH/Xp5W7M13+ud44rxpTL5q8PVcN5Pr9Zno3q0/ovN/B8WB4j8TkC7vDe1Du8 + 5U+XjfnlWe6z7+oV57+W/9OvD3qXY1+9PeCXZ8f/Xh6eyvPOefr6zXeyR55Yd9j1t7FXdrDe/EOP + 3xf2yn3zFJvC7tSYecOe+rtKB+vuH3zkDtZKO+pZnVofMg7lReOHOat+3Yv/+vlXHz3ZS9O7dona + +fPzln/07198+tFvvhg+/+yrjz797LPPv/zymZ9IV7dC7/mtZ5XynlEr9Cexv34py3yQc+qtX3tW + Z9W9e+kpnlc/2tObcy2gjOXuHmc8/vnbj87fT3/+4dvvf1pm8+b805tvz389f/STvOd+87eP3hr+ + 0V/H776dPpp/ePPRj+UZ45M35z8utaG7bfzR3m3dr9vx7198/r8/Gj7/7adflW354nf/8vvh3z79 + 6ovf/64+D33x/Z//8tPd++z6gqQeo7v/wx9++O5vf/zh+x+/+d0PfxLlQ2b6qjxVkjHf/NWEnw/A + O5UYFzaHDMsWVySiVdBhB2iGmV7KsVxPC1OGNYs6UFiy6MDMxfW0MGVYsagEvRQiObBycT0tTBnW + KypBGWZKCI090EEDenmt1AqphqoSU0jVCaqGqhJVQFUKq4aqEldI1QmshqoSWUjVCa2G2hVbT0fh + Z4wjX8iOc7YUylzeLSSySwk+BIpnO8XJM5vk5jLD8XQM9hSWt5bvExItAbFeSbT9Fv8hXZg1IRsf + XXC+bIbJ98mlznl287xIF6dIkyUy43Qmk/3ZBCK/YistUyK3y3a+T95HbtlGm5I1Ptx/KGkc58kd + 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 + KKCRqiOBbqgqGmik6oigG6qKChqpOjLohqqigwaqkhC6oaoooZGqI4VuqCpaaKTqiKEbqooaGqk6 + cuiGqqKHRqqOILqhqiiikaojiW6oKppopOqIohuqiioaqTqy6IaqootGqo4wuqGqKKORqiONbqgq + 2migKomjG6qKOhqpOvLohqqij0aqjkC6oaoopJGqI5FuqCoaaaTqiKQbqopKGqk6MumGqqKTRqqO + ULqhqiilkaojlW6oKlpppOqIpRuqiloaqTpy6YaqopcGqpJguqGqKKaRqiOZbqgqmmmk6oimG6qK + ahqpOrLphqqim0aqjnC6oaoop5GqI51uqCraaaTqiKcbqop6Gqk68umGqqKfBqqSgLqhqiiokaoj + oW6oKhpqpOqIqBuqiooaqToy6oaqoqNGqo6QuqGqKKmRqiOlbqgqWmqk6oipG6qKmhqoSnLqhqqi + p0aqjqC6oaooqpGqI6luqCqaaqTqiKobqoqqGqk6suqGqqKrRqqOsLqhdimrn0oTeHMwLoSQczCG + Kdfnw3c3mx6zdcGdgvEmpvM55GNwyYx8HJnmnOdX72827VLJt2t7TW9u3fBQQ20bmOKygY7/f/be + tlmO28jz/SoMvl2zjcQz+I4jaXwVa8u+Jck7sRsTiq6HlhkjkQqK8l57Yr77RSFbFPsPdrMKncVz + zpyejT3tpjp/hUIhkVWoPzLJRB/OlEY3xkxBmzjQPj9EWeOm/WTGUdneTdEsqRpuQgp+cdHw5loC + 58817HSM5KxXulypM1Xg9ThGnyZvUj/t+2EYvclX0xIN7pCmKSw41eBzZ0a71bleLnZvbMinaSiU + y0npTBl4cpT60ZGa1+n8FNQh/1Nve2Umk9Kw5IL6fKRNzvGjxe71Lkalks/jMF/PGNwXz+yHz3Ny + +0mPlC/jkNzk843+3riQPbPv8yH7/ZLzVIurwLeVKdi0BHxDLapbCfjHVgKe6+Fpeq7CLg+Lx1wC + 3luxEvAvTu9/SBv4/u5e7V6XgA8754xsCXhDz3XYkVXLSsDPPzc7KgNzbQn49RdhQQl47bmiqueK + qp4rqgauqBq4omrgiqqBK6oGrqgauC5r4Lqs4Ujhspmey2Z6LpsZuGxm4LKZgctmBi6bGbhsZuDi + m4GLb4bwuIo5B70L+b47WJrV6HEumHy2mLPPNwxq3nJgVMoPCyleqOXszS7k4RHIueCcS+FSLeeY + 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 + NTFFM0UzRTNFM0UzRTNFM0UzRTNFM8UwxTDFMMUwxTDFMMUwxTDFMMUwxTLFMsUyxTLFMsUyxTLF + MsUyxTLFMcUxxTHFMcUxxTHFMcUxxTHFMcUzxTPF85XmRPzEmfiJU/ET5+InTsZPnI2fOB0/cT5+ + 4oT8xBn5iVPyE+fkJ07Krzkpv+ak/JqT8mtOyq85KX8eE/zh+SPwR+QPpnBSfs1J+TUn5declF9z + Un7NSfk1J+XXnJRfE1OIKZopmimaKZopmimaKZopmimaKZophimGKYYphimGKYYphimGKYYphimW + KZYplimWKZYplimWKZYplimWKY4pjimOKY4pjimOKY4pjimOKY4pnimeKV4/qhoqz4jszs7PSDZ6 + mx8i6GIVFb/Lz5s+2HxZ8hXND1fny6g8S3EXVH4Od16Z/HNvLtRR8WrnU3YalZKxKuYH+DWFVMJ7 + hVRuM/xthr/N8E9vM/zTizP8NaVq7HPKd9d2Rz4sLlVzanMrVdOaRXzNc8FxVaQtzXrDge4oaf/V + XfIok/av6rVrah41HOiuU/Vf3Tf3MUv/veisq6s/tB7tQQ2pB1X9YZOCPmvn9KsrH11xwDutfCTW + UQ9qaH1KZ7yyTFvbsR7UdPWAyrQ98lI1YTb+48qb5UXQbgOowZam0++r8+MUKLZUAmqhpQagq/Pj + FGi3AdRBSy1CQwu02wAaT1tqTxS5+XvTkIrdBtCELU0AXVtboECxpQLQU41vhrhTN12fZ7RAuw2g + Glt6evrr84wWKLZUAgqz1OkOkvx9dWa0Au02gMIsdbp/JH9vGfwEs5QMFGYpB4N/fZ7RAu02gHpo + KUzS6/OMFmi3ATRAS2GSXp9ntEC7DaAw8ztwU9/kpjDzy0Bh5vfgpr7JTWHmF4FqBS0FN12fEbVA + uw2gEKM8uKlvcVMNMUoGCjHKg5uuz4haoN0GUIhRHtx0fUbUAu02gEKM8uCm6zOiFmi3ARRiVAA3 + XZ8RtUC7DaAQowK46fqMqAXabQCFGBXATddnRC3QbgMoxKgAbro+I2qBdhtAIUYFcNPY5KYQo0Sg + BmJUADeNLW5qIEbJQCFGRXDT2OKmBmKUDBRiVAQ3jS1uaiBGyUAhRkVw09jipgZilAwUYlQEN11f + l7lAuw2gEKMiuOn6uswF2m0AhRgVwU3X12Uu0G4DKMSoBG66vi5zgXYbQCFGJXDT9XWZC7TbAAox + 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 + UbstqDKS7IrabUGVEWVX1G4Lqowsu6J2W1BlhNkVtduCKiPNrqjdFlQZcXZF7TagCsmzK2q3BVVG + oF1Ruy2oMhLtitptQZURaVfUbguqjEy7onZbUGWE2hW124IqI9WuqN0WVBmxdkWFtraptZEqI9eu + qNDWZXrtP3f/+t2Lf/u3z7764vjj9B2pfJOmZmOTn+Tn/5Ef5hTD5qujIuU7zqelJPXb/TGZ9lwX + 6AWnC3/xavz85c9cF3WuZPyKq82WbOD/53yt7uz9nlJU1kQ9r8R8uFQ3BVJ5mjB+GEaaejLB9sma + g00u7jPi6cdLdZtIOq6o1d1Y9eZ8XfK0i/nxwsV8f0n5vs2dqTGvadhrM0y5/2k4xDTsbUwHFw77 + 3uz95Bacar6UpCmsqL++sjTL+ZPUu2gp2WS9jmk2/+LZmfPM/835KSjv9+ngnSNFh0l5NyaTlNsv + OU+d4ian+K6ww8Ui8/MzjdHaKzKUL2o6c55hUDafUHTuMPp+vjkzyaVko++DDnrJeRofjNvkTI/l + Bi6ep/UpWp9bar2J+fPDp3mg3o57l3/r0p5omj8GrbOFc24cl3ioTdpvM2bn4i//VWauf3z18vu/ + vf3XH/bfz0XWXv3Mpcen8en7ldSPlc3fL8Iu7UEfqOjOhdinN8ep9UOl4GfCh0w/6778vP417dZV + jv/6xdd/PV+Gnmu6rapE/64k3Id4X372V0VPfitdd/zpk8PL/C9v1jV8eDnXvHs3vi4cVa3rEr4m + bz97/curt/kX8xjqpp/evJ6LUbx89f1ffti/ejXNRda/ev1qrrJx/H0++IdqlpfafeSek955CqVy + eia8nQPlcci9ygH0lx9zI/j7+xX7/ue++/IVl7CFOn7HQrpv93N9jq95RA/HyIu1PYbx1Ydqefzy + 44+/P9YK+f3faed3/uk7R/z2T3969of89a/vyvvxD+aih//5NM+V+/kwv5alf8s9+lvhkZN69X8w + ZKIyWkX1Xr36d6Xm59/Q756+yo3/+8QWH3G89N1XL35zNFLO2HD63b1bbPy1jvvwbsw9O2ncZzrk + edlEo8x7jTsWXHnDv/nt3/n2plQ6+emHY3///u+vRu7U4cc3u9yp/+NYTOTdGY6n5RyN+kbRc5Py + FL+LKpUhkc3mDv2G66S8V6m427/6fvptXP3n0y9Kyd8PjbT51J8789zlS6XzSPvd03+Zvn/56tVH + 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 + ooqsuyJVZuG1ooqsvCJVZum1ooqsvSJVZvG1ooqsviJVZvm1ojatv96jRFfamqRpTjehOLfOmTxJ + KsV9b2iMMSR1sHo47Pd28sqmOE7jkjxJOt9whOWJdVZudLuYByrPI9HZqMOxFFn88EnG8RDMRG44 + 2D5Nfhz2Qwz5/4/J5RPVi8rKxXz9NjnJj+a70jub8pBJubHGpejNmeJ5cTgcvI2jz8OKDnrah6gp + X8Yw6d7ky7zkUnqKUadNznN2k0sXM1vFPBpNUtrFENOZmnnhkC9mCj0dTD5K72nSbjyklGLck1+U + Bspp51ckvWrcRnfpgkZLyaZ3KczOJr3aT9NoglJ9GvaHPG+M2cIOyg/lzkQtKbim04okZi2bcDZO + erV6S8ct6dXjTXrld8k87qRXzkglvXrxr+87mlYmnX63797o3eukV2EXo3DSK63mkeaiX5b0Kv/c + pJ3VsSHp1fqLsKTmmuLiVYqrVykuX6W4fpXiAlaKK1gpLmGluIaV4iJWiqtY/VoCiynHIljHKljH + MljHOljHQljHSljHUljHWliaKfpYSYspmimaKZopnPaGOO8NceIb4sw3xKlviHPfkDkW5GIKp78h + zn9DnACHOAMOcQoc4hw4xElwiLPgEKfBIXus68UUzoRDnAqHOBcOcTIc4mw4xOlwiPPhECfEIc6I + Q+5YHowpnBSHOCsOcVoc4rw4xIlxiDPjEKfGIc6NQ5wch/yxyhhTOD8OcYIc4gw5xClyiHPkECfJ + Ic6SQ5wmhzhPDoVjsTKmcKoc4lw5xMlyiLPlEKfLIc6XQ5wwhzhjDnHKHIrHmmdM4aw5lJiSmJKY + kpiSmJKYkpiSmJKOpdM49w6PXc1jV/PY1Tx2NY9dzWNX89jVPHY1j13NY1fz2NU8dvVx7Coutaa4 + 1priYmuKq60pLremuN6a4oJriiuuKS65prhe268F25hyLNl2rNl2LNp2rNp2LNt2rNt2LNxGTNFM + 0ce6b0zRTNFM0UzhbETE6YiI8xERJyQizkhEnJKIzLF8HFM4KxFxWiLivETEiYmIMxMRpyYizk1E + nJyIODsR2WMVOqZwgiLiDEXEKYqIcxQRJykizlJEnKaIOE8RcaIicsdidkzhXEXEyYqIsxURpysi + zldEnLCIOGMRccoi4pxF5I818ZjCaYuI8xYRJy4izlxEnLqIOHcRcfIi4uxFxOmLKBxL6zGFMxgR + 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 + SJXZJ1lRRTZKIlVmp2RFFdkqiVSZvZIVVWSzJFJldktWVJHtkkiV2S9ZUUU2TAJVaMdkRRXZMolU + mT2TFVVk0yRSZXZNVlSRbZNIldk3WVFFNk4iVWbnZEUV2TqJVJm9kxVVZPMkUmV2T1ZUke2TSJXZ + P1lRRTZQIlVmB2VFFdlCiVSZPZQVVWQTJVCFdlFWVJFtlEiV2UdZUUU2UiJVZidlRRXZSolUmb2U + FVVkMyVSZXZTVlSR7ZRIldlPWVFFNlQiVWZHZUUV2VKJVJk9lRVVZFMlUmV2VVZUkW2VSJXZV1lR + RTZWnlKldlZWVJGtlUiV2VtZUUU2VyJVZndlRRXZXolUmf2VFVVkgyVSZXZYVlSRLZZIldljWVFF + NlkiVWaXZUUV2WaJVJl9lhVVZKMlUmV2WlZUka2WSJXZa1lRRTZbAlVot2VFFdluiVSZ/ZYVVWTD + JVLbdlz+ufvX717827999tUXxx+n70gZp0rMMiroclMQnGJYIPudivP6y9N//93Tz/dv98dqlU+f + /+fTF1yP88Wr8fOXP79987L/Za6x+eWrw+s3P+653Ob/+c+nX7/85/Ttq5dvnz5/+qd/mZuRvz99 + rnbK5qcO5YKOZJOl3JbfPf3sb9PwHz//8uNM/+v+h1/mipo0xkm53DLbT1M6jJ5GpYZo9P4wanvY + Z+SLH75//ebl27/9OB/jc/f0v/goX776l3+8nQtt2nyU9LunX+1/nIHYuwL1dedapR8+T73Lt1BO + RWdt0hSD++KZ/fB5Gh8Oap/vwkeXR8jB2TEmMx5or8gfcgcsOE8d/SZn+a7E+fnzzNfTheSt0TY5 + ojCf6ofPM9I+TYMfkg6HaZ+vuwnTMDk/jL3ZD31acJ75qT+qTc50rnF7/iTdTs1PGvk6UshX5cyA + 1eQOxudh2htrx32YnNGO+j5SOpDShwUn6ObNBs5scorzZHDpOlo9vyVUimLK4SvFM8NV98n6uJ9o + UD6meehSP1g9+ik/RKg4LnFLa2LYxi/zSe5e/vyanbPMXP/46uX3f3v7rz/sv8+H+vbVzz9Nw8vD + y2lu55el2m/+8ubnMmP99n2Drn//cMeawX9583r8ZZjeHKfWL8dyfU5aMRM+ZPpZ9+Xn9a9pRx/6 + 8Z/f/i3/5/f/w689/+Lrv+aTnyfvDxw7j/qdXcX7yx++uMD78rO/Knry2esffpiGOUocf/rk8DL/ + y5t1DR9eTq+G6d1Au3BUta5L+Jq8/ez1L6/e5l/MY6ibfnrzeq72/PLV93/5Yf/qVR48z59+9frV + XMb6+Pt88Bwkp29eFsg8Dp4p/0ynb7R+7nz26132lv89e0ImvJ0D5XHIvcoB9JcfcyP4+9d/e/3m + 7bEp/3PfffmqtOD9f53HZfnHP01v93MB7K95RA/HyIvFs4fx1YeKZf/y44+/Pxbj/v3faed3/uk7 + h/z2T3969of89dirZWDNP/iv/5p7NweF/XyY4XW+Aj+9ffaWe/S3yt6//oeXczf9wcwPQEYbcs/+ + 8ufP/vjnbz/PP3kz/f3ljC6/od89fZUb//eJLT7iePq7P7x/A6Tt/Jj6/veY72mOjvfdXDG8tOjX + MffspHGf6ZBSnoyMMu817ljR/A3/5rd/59ubUkr8px+O/f37v78auVOHH9/scqf+j2O17ndnmLv9 + /SFh1DeKnps0D4mQbBkS2Wzu0G+4EPkPX/x/b/N4mP+l27/6fvptXP3n0y9ejXkQfmikzaf+3Mbn + KvusSf87t+Bfpu9fvnp18efhuQu75ExuRW7GcRr6ttvmIrwYx5dzl+1/ePGWbxonHvMlspSy6O6P + +Xd+/hPmP3H+k+Y/+WFi/kvlry5/Tflry99iR8WQiiUVUyq2utjqYquLrS62utjqYquLrS62utjq + YmuKrSm2pti6bm7i/CfMf+L8J3WlieUvlb+6/DXlry1/ix0VQyqWVEyp2Opiq4utLra62Opiq4ut + Lra62Opiq4utKbam2Jps++/v3PibL//4xXGm2P/8y5tp/Mv+Tf4vb38Nd//vi6/f7ud5Z/6ff5ne + DHnU/ellmebmG/58T/C73/7Dn395++fDv+RZcfz5+B/nuexX4PGIX/3+Bc9XP2XneH8g/z95mv7n + 61dv9z8c/9Pnr3/cvyyz1R+m1xnx5h/z/y78fPguO2se+j8cB8j/mn5+++t/+uz16zf5szjVs0D5 + Ltt5CvmWJSg93zh9/fqXt3/70I992Lkwb+603jmbb3J+9/SL/RmujruUgrIhP55ok4zOfZpn4A9y + Q9hFHaN2wVtv84PNf/177plv3uyH/5hP6bN/DPNDE4W5t37++XhG8//M/xgzeH7Guw1+qcGfO3+e + yv5ynMLnqY97/Bj3c7yd3syz0een03KO1Mo9V+G5VrsUSqR+Z/PtT2UO/4hNnnPnof/b7U03HaY3 + 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 + KlBJ5dSGSqmnIpVTUG2olIoqUjkl1YZKqakilVNUbaiUqipSOWXVhkqpqyKVU1htqJTKKlI5pdWG + SqmtIpVTXG2olOoqUjnl1YZKqa8ilVNgbaiUCitQSSXWhkqpsSKVU2RtqJQqK1I5ZdaGSqmzIpVT + aG2olEorUjml1oZKqbUilVNsbaiUaitSOeXWhkqptyKVU3BtqJSKK1I5JdeGSqm5ApVUdG2olKor + Ujll14ZKqbsilVN4baiUyitSOaXXhkqpvSKVU3xtqJTqK1I55deG2lV//SxDhdzF+hpStjgxMeX0 + xkyhEszNLjFN7ua8v/qpvkaGOLpoluma3Z5xO05KMmm3Lfdhifa7U2jqY6Osr+2lGDWr/vlhLutQ + HTNlyXVny80s3kpxYYljud3yuGdCi4SQdvs3H27me+8g62PdxmzqG1TdhXUi38+P0du5TEvK5nqN + /iYpTdd6n9klXdNctwy7jlHy5tR4ypXcabCeXA4+S8o6KOoNO/kSb7dY7JLFTFPyJS9+8hKWMIu5 + Jtk1cyfXgDzlYIkO67d0s74sk/jr7XqtWbP+/iI3iWO6jiaQHdb7OgZPnip0uKXje6rQ804Vspfs + nnqqUDKGNVXon3eB56IX+Pk/gfeppwq5S30B5U4VcvHF54t1ad9UofXX10d+z1Sh4xdhx1Qhq0NO + rE45sTrmxOqcE6uDTqxOOrE66sTqrBOrw06sTjux4dVIWSk68MTqxBOrI0+szjyxOvTE6tQTq2NP + rM49sTr4xMZXP2al6OwTq8NPrE4/sTr+xOr8E6sDUKxOQLE6AsXqDBSbXm2dlZKUkpSSlZKVkpWS + lZKVkpWSlZJf3aGVkpVSlFKUUpRSlFKUUpRSlFKUUl5Npl9dptVm2qjPtFGjaaNO00atpo16TRs1 + mzbqNm1er5FaP+tQF6tTXayOdbE618XqYBerk12sjnaxOtvF6nAXG14NpJWi812sDnixOuHF6ogX + qzNerA55sTrlxeqYF6tzXmx89aFWio56sTrrxeqwF6vTXqyOe7E678XqwBerE1+sjnyx6dXOWilJ + KUkpWSlZKVkpWSlZKVkpWSn51RVbKVkpRSlFKUUpRSlFKUUpRSlFKeXVXPvVXVvttY36axs12Dbq + sG3UYtuox7ZRk22jLtsmP9fMqBDra2lO3of6YayE/3p7aFRN6pfgXC51mZydT9ubyZtjo3y51NcF + 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 + 6Me41CdFtul2HX2ec76G255ruRoylrNu2N/m2nZ0Yvq3a9vzurblixX71K5tWViubf/8773rqs/s + 2iY1WLPlurb5uN5pcTWD2+PaVn/dpksorsO17fhF2OHadu+EI0H9dIL66QT10wnqpxPUTyeqn05U + P52ofjpRKVEpUSlRKVEpUSlRKUkpSSlJKUkpSSlJKUkpSSlJKUkpWSlZKVkpWSlZKVkp+fWI/jST + 2Y5WP9SSJqglTVBLmqCWNFEtaaJa0kS1pIlKiUqJSolKiUqJSolKSUpJSklKSUpJSklKSUpJSklK + SUrJSslKyUrJSslKyUrJ8bm8wyRcavJ3dcVYz1yw71mHhZpji3MmJJvr0tGVd5zDgr0YI7kEEbcq + Dt5zDktyqQvVUHxdNdd3O1t6jcO+I/IvG5GP21el+v4XD9pXrdukb/uqh5wF9ufeBz1iDn/Rx7su + PHhuPqPhwqc4WQQjj75v+1K31Jcy8vgUZ0xLI7/hltIv+jB/vQdPyZP66x04aw/76/V815d6OP0V + /PUec/s6FoQEW7TuL/xgWzTSifqMt9bT21d9qXEssKd941hOmfECUJBowYAT3+OJtdYfToCCQAvG + m/geT6y1RHICFORZMNzE93hirVWcE6AgzoLRJr7HE2stNJ0ABWkWDDbxXZ5YAZRZFGgEYRaMNfFd + nlgRdFkcKMiyYKiJ7/LEiqDK4kBBlAUjTXyXJ1YETRYHCjkKBpr4Lk+sCDmKA4UcBeNMfJcnVoQc + xYFCjoJhJr7LEytCjuJAIUfBKBPf5YkVIUdxoJCjYJCJ7/LEipCjOFDIUTDGxHd5YkXIURwo5CgY + YuK7PLEi5CgKNEGOghEmvssTK0GO4kAhR8EAE9/liZUgR3GgkKNgfInv8sRKkKM4UMhRMLzEd3li + JchRHCjkKBhd4rs8sRLkKA4UchQMLgldnlgJchQHep+jAowtCcaWHuhwAjTBnlqAShd0OAGaYU8F + oK4LOpwALbCnDqC+CzrwodnAnnqAhi7ocALUwp5CmFrTBR1OgN7nqArJ9z/3hGm+z1HBQuz3QR3s + qYU97QnT7IYToB72VADaE6bZDydAA+ypA2hXmIbhBCjkqHWEzt3PIfZABwb0S/dgUcrSnM6uX1E5 + hemGSqlMI5VTmm6olNo0UjnF6YZKqU4jlVOebqiU+jRSOQXqhkqpUAOVVKJuqJQaNVI5ReqGSqlS + I5VTpm6olDo1UjmF6oZKqVQjlVOqbqiUWjVSOcXqhkqpViOVU65uqJR6NVI5BeuGSqlYI5VTsm6o + lJo1UjlF64ZKqVoDlVS2bqiUujVSOYXrhkqpXCOVU7puqJTaNVI5xeuGSqleI5VTvm6olPo1UjkF + 7IZKqWAjlVPCbqiUGjZSOUXshkqpYiOVU8ZuqJQ6NlI5heyGSqlkA5VUym6olFo2UjnF7IZKqWYj + lVPObqiUejZSOQXthkqpaCOVU9JuqJSaNlI5Re2GSqlqI5VT1m6oXXXtzzJZy1zEp1hiTjFIyCmX + n8/vsfMcU/GmXLMXHxaTb9N1XsaUc6yPPvPHjrlaoSQ5ML+ns5vg7WFF+6eIWXsdvZvyksX6kMNU + wjjX9VO5JePmm9tztEemiPX0Cr47ecpmF+urVHR2vatseGMqU5KrX+Z62ZfJTNm5MU/z7MdldGWJ + cl12HKctEtIpR7pnwpaEWLcxJdl6d9ab+K1JYnMSf5tut/l2vcV0qxvd4jQVWeRmb/a653rGXOSU + 43x/wla++FjCWs61qT4Y35qvZeMcgjd5mqzx883MNaxFTJytGX29lXccYc7ZlHhgItzB5sSTB2sd + bpX8Hqz1vIO14sVZ99SDtUrgDNYq9xPtii3G3v9s5d+B96kHa7lLMp45WKu8rP8jl5of9wzW2n69 + PpzqmvHwYK2ei7BjsFbN7et8G1ucfnj9CPoR9SPpR9YPnaBjdIKO0Qk6RifoGJ2gY3SCjtEJOkYn + 6Bidw2N0Do9RilWKVYpVilWKVYpVilWKVYpVilWKKEWUIkoRpYhSRCmiFFGKKEWU4pTilOKU4pTi + lOKU4pTiXs/LNk+nnkH98PoR9CPqR9KPrB86lcfoVB6jU3mMTuUxOpXH6FQeo1N5jM72MTrbx+hs + H6MUqxSrFKsUqxSrFKsUqxSrFKsUqxRRiihFlCJKEaWIUkQpohRRiijFKcUpxSnFKcUpxSnFKcWl + pxoAlsvF1kVmtNG5HEupj+E3B4CtUwAl17vD1WdWyFHeHgBW0sUX6yXG+k5Z/DZA9a35Xz5drHXB + ravN6A/O/yo/zP/6fnB8Pzg++MHxwJwym16Cqdn4YtaRmPvmlME233PKemeTHFnKPDSnrOOLPnpu + y8Pn5jNO1vgUJ+vhOWW93/albqnvOWVHz5hWmn7DLaVf9EFzyh4+JU85p+zQWXtwTlnfd32ph9Oz + zyk7GoQPzyl74As/dE4Z7UR9xlvryeeUlX+tpYeDuWgP1AHUAlS6oMMJUA97KgB1XdDhBGiAPXUA + 9V3Q4QRohD31AA1d0OEEaII9DXdQMaYLOpwAvVM7rhCAdoXpndiRBS2wpxagXWFaBjp0rZ4CBKAd + YboWFE+AWthTB9COMF1rnidABfbUA7QjTNey7AlQB3sKYWo7wnStHJ8Avc9RFQLQjjBdi9snQAPs + KYSp7QrTMJwAjbCnEKa2K0zjcAI0wZ5CmNquME3DCVDIURbC1HaFKeQoDhRylIUwla4whRxFgVrI + UQJhKj1haiFHcaCQowTCVHrC1EKO4kAhRwmEqfSEqYUcxYFCjhIIU+kJUws5igOFHCUQptITphZy + FAcKOUogTF1XmEKO4kAhRzkIU9cVppCjOFDIUQ7C1HWFKeQoDhRylIMwdV1hCjmKA4Uc5SBMXVeY + Qo6iQAVylPPu/ueeMBXIURwo5CiHYXp4muIGHU6AwpPf17C8+7nn5hd48nOg8OT3cPP7nptf4MnP + gcKT38PN77tufnjyc6Dw5PeQ+HzXzQ9Pfg4Unvw+UKADH+rg8OvH/c89t5SDPY1w9eO+q3//9xZW + TR6pnKJ8Q6VU5ZHKKcs3VEpdHqmcwnxDpVTmkcopzTdUSm0eqZzifEOlVOeRyinPN1RKfR6pnAJ9 + Q6VU6O+prBJ9Q6XU6JHKKdI3VEqVHqmcMn1DpdTpkcop1DdUSqUeqZxSfUOl1OqRyinWN1RKtR6p + nHJ9Q6XU65HKKdg3VErFHqmckn1DpdTskcop2jdUStUeqKSyfUOl1O2RyincN1RK5R6pnNJ9Q6XU + 7pHKKd43VEr1Hqmc8n1DpdTvkcop4DdUSgUfqZwSfkOl1PCRyiniN1RKFR+pnDJ+Q6XU8ZHKKeQ3 + VEolH6ikUn5DpdTykcop5jdUSjUfqZxyfkOl1PORyinoN1RKRR+pnJJ+Q6XU9JHKKeo3VEpVH6mc + sn5DpdT1gUoq7CO1r7L/eQbVGYmhmHU4QTHGFbNOPfjZKKyx7p/3fnFlGZOxkyu365SDv+Zx8s7t + GWomKefdw74Od+W+N+zL+OiiT+uQvXpu3c+PUK75VsqYxrJc6y/l4MJcXHb5ZqdplHHHEWbvUn0s + nHKM693z3hS+7G3xZZ3ItV7Et6fw3eYw5rHkMI0u1TQVg81uMU5ivaz1P+65kCWfcog7p/AVa+r7 + eAwhRZtszj8/zjhGuc7LzY51nWuycaMJdskxT+nm6y2/5zhrRJhTjnTHFL761pNiCvV6xlhf6ctb + QxWnPMkidlpy8nE0c/b1il7Hq72GeZnnPYcZQw2Qs27aP0dInjmprqNZ9ntS3RNOqrPpxZUXLxfv + wjNPqsuGNqnubkTku+uqTz2pLl2CjdxJdRJfnFzqo2jfpLr66xJe9+LopLrjF2HHpLqfzlCqKyP9 + 0ElMXicxeZ3E5HUSk9dJTF4nMXmleKV4pXileKUEpQSlBKUEpQSlBKUEpQSlBKUEpUSlRKVEpUSl + RKVEpUSlRKVEpUSlJKUkpSSlJKUkpSSlJKUkpSSlJKVkpWSlZKVkpWSlZKVkpWSlZKVkpRSlFKXo + /C/R+V+i879E53+Jzv8Snf8lOv9LdP6X0/lf7nX+VzvWabuo+qHDobwOh/I6HMrrcCivw6G8Dofy + SvFK8UrxSvFKCUoJSglKCUoJSglKCUoJSglKCUqJSolKiUqJSolKiUqJSolKiUqJSklKSUpJSklK + SUpJSklKSUpJSklKyUrJSslKyUrJSslKyUrJSslKyUopSilK0ZFkoiPJREeSiY4kEx1JJjqSTHQk + mehIMqcjydw6kuyJ5vmVcPHRelv/n4+xvpL+19vz/Hysb7c1zxupd08Izr49z89KucT6NrS+7vmQ + XXxnnl9yl1LvGe+lvi7FYqR3nt/34/X78fpf34/X//r0j9eHpx6Ku2Tnj009/M82Tzz18LGBNPvX + xHd1iv7JPd1f+MGTe0gn6jNO7jlviNaBk0aYg9j3bR8/aoxxlr7vq3f/TPV7nlZ/fOAcxAdPyZPO + QTxw1h6b+Hv4i77UY+l74u+Bk/XwQM2e7/pSt9MXGqj59FMP18oMQzPyWzpMYU/7OkxPaVsFKGgy + IyiRYlfXLkgyOVBQZEbQIaWeaR0OBJkUqAc9ZgKlb+qZ1uFBjsmBghozgc439cwW8CDG5EChhyCB + EjH1hKmHFgIOFFSjCcI09YSpB9EoBwqa0QRhmnrC1INklAMFxWiCMM1dYQqCUQ4UclSGMM1dYQo5 + igOFHJUhTHNXmEKO4kAhR2UI09wVppCjOFDIURnCNHeFKeQoCjRAjsoQprknTAPkKA4UclSGMC09 + YRogR3GgkKNA9CY9U7nXvySdAIUcBfM/pGcq9/rHrhOgkKNg+of0TOVe/x53AhRyFMz+kJ6p3Ouf + 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 + yFERwjR2hSnkKA4UclSEMI1dYQo5igKFSTMVAtCeMIVBMyQo5KgIYZp6whTGzJCgkKMShGnqCVMY + MkOCQo5KEKapJ0xhxAwJCjkqQZimnjCFATMkKOSoBGGausIUchQHCjkqQZimrjCFHMWBQo5KEKa5 + K0whR3GgkKMyhGnuClPIURwo5KgMYZrF9EAHPhSmylQIQHvCFIbKkKCQozKEae4JUxj+UiEA7Yko + mNJSIffQsu/mv/+bAKt+3FApBWSgkirIDZVSQkYqp4bcUClFZKRyqsgNlVJGRiqnjtxQKYVkpHIq + yQ2VUkpGKqeW3FApxWSkcqrJDZVSTkYqp57cUCkFZaRyKsoNlVJSRiqnptxQKUVloJKqyg2VUlZG + Kqeu3FAphWWkcirLDZVSWkYqp7bcUCnFZaRyqssNlVJeRiqnvtxQKQVmpHIqzA2VUmJGKqfG3FAp + RWakcqrMDZVSZkYqp87cUCmFZqCSKs0NlVJqRiqn1txQKcVmpHKqzQ2VUm5GKqfe3FApBWekcirO + DZVSckYqp+bcUClFZ6Ryqs4NlVJ2Riqn7txQKYVnpHIqzw2VUnpGKqf23FApxWegkqrPDZVSfkYq + p/6MVE4BGql9FehPNFlKgnPehSy2/odtwsxPxxH5ONuQp+ut7qtxk3NlMnO9viHGaxqXP3aM6Ykh + 7h25VA5L898duWSzlbUN3cV6km2Ib0zpmZY4mmxSLFcJ45SdC9e6bLyF+l9KHu2Og6x7buSUg9wx + cynmeoQ2JFlPtbw9cylOy21cxhSvc1xcvrprqf+EKdj636Rs9lzMfM5R7pq5JPUlqdiS8voyn0t+ + 4zCXud7by2LHq8xhrAcd4jzNefTXq4vZXfccZqipwZ5ypP/749ClNw82XNYpB8GWEG2KKeSfH6qd + So3G6zjdrrdlufogZfRmGe11XCRM045DDaHUAI9nHeupg6WO7833YKnnHCzlXrx9MeFSgnviwVLO + SGENlvq/f9+7tP7Ug6XcpZRMHiyV10lR0eedg6Xyi/GX4FPHYKnjF2HHYKk9s2PiNncmbnNn4jZ3 + Jm5zZ+K2bdy2Tdu2ads2bdumbdu0bZu2bdO2bdq2Tdu2ads2b9vmbdu8bZu3bfO2bd62zdu2eds2 + b9vmbduybVu2bcu2bdm2Ldu2Zdu2bNuWbduybVu2ba0x+mH1Q/TD6YfXj6AfUT+SfmT9UIpVilWK + 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 + bc722pwdtDk7KCUoJSglKCUoJSglKCUoJSglKiUqJSolKiUqJSolKiUqJSolKiUpJSklKSUpJSkl + KSUpJSklKSUpJSslKyUrJSslKyUrJSslKyUrJSulKKUopSilKKUopSilKKW8nl1tN/fabu613dxr + u7nXdnOv7eZe2829tpt7bTcP2m4elBKUEpQSlBKUEpQSlBKUEpQSlRKVEpUSlRKVEpUSlRKVEpUS + lZKUkpSSlJKUkpSSlJKUkpSSlJKUkpWSlZKVkpWSlZKVkpWSlZKVkpVSlFKUUpRSlFKUUpRSlFLS + U823SOYS7Pq3xJLzmj7knfkWPl9CrO+yvv6es3Xl+vZ8i/oieTGmXt/6ara+l0V5Z8BFihdxOdlk + 1oFtddPuARffz7TvZ9r3M+3nz7SHh5CIvSSJx4aQ/Geb7yEk/f2h+9d/D/b1H/6iD+vrf/CUPGlf + /4Gz9lhf/+Ev+vgm7AfPzWfsv/4UJ4vQ19/3bV/qlvpSff0nzfw59kwnDEfq/sIPHo5EOlFf6tb6 + ncH48CS3nu/6Uo+rLzTJ7XsIyWduoAGowJ5agPb0uXkZToA62FMBaE+fm3fDCVAPe+oA2tPn5v1w + AjTAnnqAdvW5heEEaIQ9BRWT7epzi8MJ0Hsl33r89z93hem9kI8EzbCnEKa2K0zzcAK0wJ5CmNqu + MC0DHxoM7CmEqe0J02CGE6CQoyyEqe0J0wA5igOFHGUhTKUnTAPkKA4UcpRAmEpPmAbIURwo5CiB + MBWJPdDhBCjkKIEwFdcFHU6AQo4SCNOab3qgwwlQyFECYVq/tQc6nACFHCUQps50QYcToJCjHISp + s13QgQ+NkKPA/tO6njCNkKM4UMhRDsLU9YRphBzFgUKOchCmridMI+QoDhRylPPh/ueeMI2QozhQ + yFEu3EN9T5hGyFEcKOQobwDaFaaQozhQyFHeArQrTCFHcaCQo7wAtCtMIUdxoJCjvANoV5hCjuJA + IUd5CFPfFaaQoyjQBDnKQ5iGnjBNkKM4UMhRAcI09IRpghzFgUKOChCmoSdME+QoDhRyVIAwDT1h + miBHcaCQo8BCub5VdkGHE6CQowKEaegKU8hRHCjkqABhGrvCFHIUBwo5KkKYxq4whRzFgUKOihCm + sStMIUdxoJCjIoRp7ApTyFEUaIYcFSFMY0+YZshRHCjkqAhhGnvCNEOO4kAhR0UI09QTphlyFAcK + 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 + Uuq/QNjyz3//A/f1/gBy9SEA + headers: + Access-Control-Allow-Origin: + - '*' + Access-Control-Expose-Headers: + - CMR-Hits, CMR-Request-Id, X-Request-Id, CMR-Scroll-Id, CMR-Search-After, CMR-Timed-Out, + CMR-Shapefile-Original-Point-Count, CMR-Shapefile-Simplified-Point-Count + CMR-Hits: + - '110' + CMR-Request-Id: + - 82ac2813-879e-4d22-8021-64b41cff65da + CMR-Search-After: + - '["pocloud",1719443366372,3138034484]' + CMR-Took: + - '393' + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-MD5: + - 2d902a382970e2f83487aa192e645c59 + Content-SHA1: + - 64fb509739aacd6d4bc5662df62254c7ddde86c9 + Content-Type: + - application/vnd.nasa.cmr.umm_results+json;version=1.6.6; charset=utf-8 + Date: + - Tue, 23 Jul 2024 21:52:55 GMT + Server: + - ServerTokens ProductOnly + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, User-Agent + Via: + - 1.1 60977766708edc6ce8219f52eb7a75ca.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - uKbpYzW8sCh6edfEbTT9wncGswevzjXmRyC-nsGp7IbiBzMgW9ZdYQ== + X-Amz-Cf-Pop: + - LAX50-C1 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-Request-Id: + - uKbpYzW8sCh6edfEbTT9wncGswevzjXmRyC-nsGp7IbiBzMgW9ZdYQ== + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1