From 5daa951cb86088f5aba24edd433c3e41550cac90 Mon Sep 17 00:00:00 2001 From: Alp Erkent Date: Wed, 14 May 2025 19:07:38 +0000 Subject: [PATCH 01/11] Update Python version requirements to include 3.11 and add orchestrator module --- .github/workflows/test.yaml | 2 +- pyproject.toml | 2 +- src/graphomotor/core/config.py | 4 + src/graphomotor/core/orchestrator.py | 219 +++++++++++++++++++++++++++ tests/unit/test_orchestrator.py | 51 +++++++ 5 files changed, 276 insertions(+), 2 deletions(-) create mode 100644 src/graphomotor/core/orchestrator.py create mode 100644 tests/unit/test_orchestrator.py diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index d3a1ec7..6baf6cb 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -12,7 +12,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] - python-version: [3.12, 3.13] + python-version: [3.11, 3.12, 3.13] dependency-mode: [lowest-direct, highest] runs-on: ${{ matrix.os }} steps: diff --git a/pyproject.toml b/pyproject.toml index 7bbec5d..e0fd7a7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ authors = [ ] license = "LGPL-2.1" readme = "README.md" -requires-python = ">=3.12" +requires-python = ">=3.11" dependencies = [ "pandas>=2.2.3", "pydantic>=2.11.1", diff --git a/src/graphomotor/core/config.py b/src/graphomotor/core/config.py index 6e98ddc..034be50 100644 --- a/src/graphomotor/core/config.py +++ b/src/graphomotor/core/config.py @@ -16,6 +16,10 @@ class _SpiralConfig: SPIRAL_END_ANGLE = 8 * np.pi SPIRAL_NUM_POINTS = 10000 + # TODO: edit the docstring + # TODO: think about a way to change these parameters + # (optional config parameter for orchestrator that modifies the config) + def get_logger() -> logging.Logger: """Get the Graphomotor logger.""" diff --git a/src/graphomotor/core/orchestrator.py b/src/graphomotor/core/orchestrator.py new file mode 100644 index 0000000..b718de9 --- /dev/null +++ b/src/graphomotor/core/orchestrator.py @@ -0,0 +1,219 @@ +"""Runner for the Graphomotor pipeline.""" + +import os +import pathlib +from datetime import datetime + +import numpy as np +import pandas as pd + +from graphomotor.core import config, models +from graphomotor.features import distance, drawing_error, time, velocity +from graphomotor.io import reader +from graphomotor.utils import center_spiral, generate_reference_spiral + +logger = config.get_logger() +VALID_FEATURE_CATEGORIES = { + "duration", + "velocity", + "hausdorff", + "AUC", +} # move to config + + +def _ensure_path(path: pathlib.Path | str) -> pathlib.Path: + """Ensure that the input is a Path object. + + Args: + path: Input path, can be string or Path + + Returns: + Path object + """ + return pathlib.Path(path) if isinstance(path, str) else path + + +def _validate_feature_categories(feature_categories: list[str]) -> set[str]: + """Validate requested feature categories and return valid ones. + + Args: + feature_categories: List of feature categories to validate. + + Returns: + Set of valid feature categories. + + Raises: + ValueError: If no valid feature categories are provided. + """ + unknown_categories = set(feature_categories) - VALID_FEATURE_CATEGORIES + valid_requested_categories = set(feature_categories) & VALID_FEATURE_CATEGORIES + + if unknown_categories: + logger.warning( + "Unknown feature categories requested, these categories will be ignored: " + f"{unknown_categories}" + ) + + if not valid_requested_categories: + error_msg = ( + "No valid feature categories provided. " + f"Supported categories: {VALID_FEATURE_CATEGORIES}" + ) + logger.error(error_msg) + raise ValueError(error_msg) + + return valid_requested_categories + + +def get_feature_categories( + spiral: models.Spiral, + reference_spiral: np.ndarray, + feature_categories: list[str], +) -> dict[str, float]: + """Feature categories dispatcher. + + This function chooses which feature categories to extract based on the provided + sequence of valid category names and returns a dictionary containing the extracted + features. + + Args: + spiral: The spiral data to extract features from. + reference_spiral: The reference spiral used for calculating features. + feature_categories: List of feature categories to extract. + + Returns: + Dictionary containing the extracted features. + """ + valid_categories = _validate_feature_categories(feature_categories) + + feature_extractors = { + "duration": lambda: time.get_task_duration(spiral), + "velocity": lambda: velocity.calculate_velocity_metrics(spiral), + "hausdorff": lambda: distance.calculate_hausdorff_metrics( + spiral, reference_spiral + ), + "AUC": lambda: drawing_error.calculate_area_under_curve( + spiral, reference_spiral + ), + } + + features = {} + for category in valid_categories: + logger.debug(f"Extracting {category} features") + category_features = feature_extractors[category]() + features.update(category_features) + logger.debug(f"{category.capitalize()} features extracted: {category_features}") + + return features + + +def export_features_to_csv( + spiral: models.Spiral, + features: dict[str, float], + input_path: pathlib.Path, + output_path: pathlib.Path, +) -> None: + """Export extracted features to a CSV file. + + Args: + spiral: The spiral data used for feature extraction. + features: Dictionary containing the extracted features. + input_path: Path to the input CSV file. + output_path: Path to the output CSV file. + """ + logger.info(f"Saving extracted features to {output_path}") + + os.makedirs(output_path.parent, exist_ok=True) + + participant_id = spiral.metadata.get("id") + task = spiral.metadata.get("task") + hand = spiral.metadata.get("hand") + + filename = ( + f"{participant_id}_{task}_{hand}_features_" + f"{datetime.today().strftime('%Y%m%d')}.csv" + ) + + if output_path.is_dir() or not output_path.suffix: + output_file = output_path / filename + else: + output_file = output_path + + features_df = pd.DataFrame([features]).T + + features_df["participant_id"] = participant_id + features_df["task"] = task + features_df["hand"] = hand + features_df["source_file"] = str(input_path) + + features_df.to_csv(output_file, index=False) + logger.debug(f"Features saved successfully to {output_file}") + + +def extract_features( + input_path: pathlib.Path | str, + output_path: pathlib.Path | str | None, + feature_categories: list[str], +) -> dict[str, float]: + """Extract features from spiral drawing data. + + Args: + input_path: Path to the input CSV file containing spiral drawing data. + output_path: Path to the output directory for saving extracted features. If + None, features are not saved. + feature_categories: List of feature categories to extract. Valid options are: + - "duration": Extract task duration. + - "velocity": Extract velocity-based metrics. + - "hausdorff": Extract Hausdorff distance metrics. + - "AUC": Extract area under the curve metric. + + Returns: + Dictionary containing the extracted features. + """ + # logger.info(f"Starting feature extraction for {input_path}") + # logger.info(f"Requested feature categories: {feature_categories}") + + logger.debug(f"Loading spiral data from {input_path}") + input_path = _ensure_path(input_path) + spiral = reader.load_spiral(input_path) + spiral = center_spiral.center_spiral(spiral) + + logger.debug("Generating reference spiral to calculate features") + reference_spiral = generate_reference_spiral.generate_reference_spiral() + + features = get_feature_categories(spiral, reference_spiral, feature_categories) + logger.info(f"Feature extraction complete. Extracted {len(features)} features") + + if output_path: + output_path = _ensure_path(output_path) + export_features_to_csv(spiral, features, input_path, output_path) + + return features + + +def run_pipeline( + input_path: pathlib.Path | str, + output_path: pathlib.Path | str | None, + feature_categories: list[str], +) -> dict[str, float]: + """Run the Graphomotor pipeline to extract features from spiral drawing data. + + Args: + input_path: Path to the input CSV file containing spiral drawing data. + output_path: Path to save the extracted features. If None, features are not + saved. + feature_categories: List of feature categories to extract. Options are: + - "duration": Extract task duration. + - "velocity": Extract velocity-based metrics. + - "hausdorff": Extract Hausdorff distance metrics. + - "AUC": Extract area under the curve metric. + """ + logger.info("Starting Graphomotor pipeline") + logger.info(f"Input path: {input_path}") + logger.info(f"Output path: {output_path}") + logger.info(f"Feature categories: {feature_categories}") + + features = extract_features(input_path, output_path, feature_categories) + + logger.info("Graphomotor pipeline completed successfully") + return features diff --git a/tests/unit/test_orchestrator.py b/tests/unit/test_orchestrator.py new file mode 100644 index 0000000..5276158 --- /dev/null +++ b/tests/unit/test_orchestrator.py @@ -0,0 +1,51 @@ +"""Tests for the orchestrator module.""" + +import pathlib + +import pytest + +from graphomotor.core import orchestrator + +## TODO: test all functions here, then add a smoke test as well for the whole pipeline + + +@pytest.mark.parametrize( + "feature_categories, expected_behavior", + [ + (["duration", "velocity", "hausdorff", "AUC"], "multiple_valid"), + (["duration"], "single_valid"), + (["duration", "unknown_category"], "contains_invalid"), + (["unknown_category"], "only_invalid"), + ], +) +def test_extract_features_categories( + feature_categories: list[str], + expected_behavior: str, + sample_data: pathlib.Path, + caplog: pytest.LogCaptureFixture, +) -> None: + """Test the feature extraction process with various categories.""" + if expected_behavior == "only_invalid": + with pytest.raises(ValueError, match="No valid feature categories provided"): + orchestrator.extract_features( + input_path=sample_data, + output_path=None, + feature_categories=feature_categories, + ) + else: + features = orchestrator.extract_features( + input_path=sample_data, + output_path=None, + feature_categories=feature_categories, + ) + + if expected_behavior == "multiple_valid": + assert len(features) == 25 + elif expected_behavior == "single_valid": + assert len(features) == 1 and "duration" in features + elif expected_behavior == "contains_invalid": + assert ( + "Unknown feature categories requested, these categories will be ignored" + in caplog.text + ) + assert len(features) > 0 From 7e6b9bf300ca5e2619691a8f2f6344d1f726fecf Mon Sep 17 00:00:00 2001 From: Alp Erkent Date: Thu, 15 May 2025 13:31:16 -0400 Subject: [PATCH 02/11] Refactor config.py to enable customizability of SpiralConfig and add FeatureCategories class, edit all related modules to use the new spiral config class properly, add tests for customizing spiral config, and add smoke test for orchestrator --- src/graphomotor/core/config.py | 94 ++- src/graphomotor/core/models.py | 2 +- src/graphomotor/core/orchestrator.py | 51 +- src/graphomotor/utils/__init__.py | 1 + src/graphomotor/utils/center_spiral.py | 5 +- .../utils/generate_reference_spiral.py | 61 +- tests/conftest.py | 4 +- tests/smoke/__init__.py | 1 + tests/smoke/test_orchestrator_smoke.py | 24 + tests/unit/test_config.py | 65 ++ tests/unit/test_orchestrator.py | 4 +- tests/unit/test_reference_spiral.py | 18 +- tests/unit/test_velocity.py | 11 +- uv.lock | 772 +++++++++++------- 14 files changed, 714 insertions(+), 399 deletions(-) create mode 100644 src/graphomotor/utils/__init__.py create mode 100644 tests/smoke/__init__.py create mode 100644 tests/smoke/test_orchestrator_smoke.py diff --git a/src/graphomotor/core/config.py b/src/graphomotor/core/config.py index 034be50..83bed47 100644 --- a/src/graphomotor/core/config.py +++ b/src/graphomotor/core/config.py @@ -1,24 +1,94 @@ """Configuration module for Graphomotor.""" import logging +import warnings +from dataclasses import dataclass +from typing import Callable import numpy as np +from graphomotor.core import models +from graphomotor.features import distance, drawing_error, time, velocity -class _SpiralConfig: - """Configuration for the reference spiral generation.""" - SPIRAL_CENTER_X = 50 - SPIRAL_CENTER_Y = 50 - SPIRAL_START_RADIUS = 0 - SPIRAL_GROWTH_RATE = 1.075 - SPIRAL_START_ANGLE = 0 - SPIRAL_END_ANGLE = 8 * np.pi - SPIRAL_NUM_POINTS = 10000 +class FeatureCategories: + """Class to hold valid feature categories for Graphomotor.""" - # TODO: edit the docstring - # TODO: think about a way to change these parameters - # (optional config parameter for orchestrator that modifies the config) + DURATION = "duration" + VELOCITY = "velocity" + HAUSDORFF = "hausdorff" + AUC = "AUC" + + @classmethod + def all(cls) -> set[str]: + """Return all valid feature categories.""" + return { + cls.DURATION, + cls.VELOCITY, + cls.HAUSDORFF, + cls.AUC, + } + + @classmethod + def get_extractors( + cls, spiral: models.Spiral, reference_spiral: np.ndarray + ) -> dict[str, Callable[[], dict[str, float]]]: + """Get all feature extractors with appropriate inputs. + + Args: + spiral: The spiral data to extract features from. + reference_spiral: Reference spiral for comparison-based metrics. + + Returns: + Dictionary mapping category names to their feature extractor functions. + """ + return { + cls.DURATION: lambda: time.get_task_duration(spiral), + cls.VELOCITY: lambda: velocity.calculate_velocity_metrics(spiral), + cls.HAUSDORFF: lambda: distance.calculate_hausdorff_metrics( + spiral, reference_spiral + ), + cls.AUC: lambda: drawing_error.calculate_area_under_curve( + spiral, reference_spiral + ), + } + + +@dataclass +class SpiralConfig: + """Class for the parameters of anticipated spiral drawing.""" + + center_x: float = 50 + center_y: float = 50 + start_radius: float = 0 + growth_rate: float = 1.075 + start_angle: float = 0 + end_angle: float = 8 * np.pi + num_points: int = 10000 + + @classmethod + def from_dict(cls, config_dict: dict[str, float | int]) -> "SpiralConfig": + """Create a configuration from a dictionary. + + Args: + config_dict: Dictionary with configuration parameters. + + Returns: + SpiralConfig instance with updated parameters. + """ + config = cls() + for key, value in config_dict.items(): + if hasattr(config, key): + setattr(config, key, value) + else: + valid_params = ", ".join( + f.name for f in cls.__dataclass_fields__.values() + ) + warnings.warn( + f"Unknown configuration parameters will be ignored: {key}. " + f"Valid parameters are: {valid_params}" + ) + return config def get_logger() -> logging.Logger: diff --git a/src/graphomotor/core/models.py b/src/graphomotor/core/models.py index 116f1bc..c4533b0 100644 --- a/src/graphomotor/core/models.py +++ b/src/graphomotor/core/models.py @@ -7,7 +7,7 @@ class Spiral(BaseModel): - """A class representing a spiral drawing, encapsulating both raw data and metadata. + """Class representing a spiral drawing, encapsulating both raw data and metadata. Attributes: data: DataFrame containing drawing data with required columns (line_number, x, diff --git a/src/graphomotor/core/orchestrator.py b/src/graphomotor/core/orchestrator.py index b718de9..474fc2c 100644 --- a/src/graphomotor/core/orchestrator.py +++ b/src/graphomotor/core/orchestrator.py @@ -8,17 +8,10 @@ import pandas as pd from graphomotor.core import config, models -from graphomotor.features import distance, drawing_error, time, velocity from graphomotor.io import reader from graphomotor.utils import center_spiral, generate_reference_spiral logger = config.get_logger() -VALID_FEATURE_CATEGORIES = { - "duration", - "velocity", - "hausdorff", - "AUC", -} # move to config def _ensure_path(path: pathlib.Path | str) -> pathlib.Path: @@ -45,8 +38,10 @@ def _validate_feature_categories(feature_categories: list[str]) -> set[str]: Raises: ValueError: If no valid feature categories are provided. """ - unknown_categories = set(feature_categories) - VALID_FEATURE_CATEGORIES - valid_requested_categories = set(feature_categories) & VALID_FEATURE_CATEGORIES + unknown_categories = set(feature_categories) - config.FeatureCategories.all() + valid_requested_categories = ( + set(feature_categories) & config.FeatureCategories.all() + ) if unknown_categories: logger.warning( @@ -57,7 +52,7 @@ def _validate_feature_categories(feature_categories: list[str]) -> set[str]: if not valid_requested_categories: error_msg = ( "No valid feature categories provided. " - f"Supported categories: {VALID_FEATURE_CATEGORIES}" + f"Supported categories: {config.FeatureCategories.all()}" ) logger.error(error_msg) raise ValueError(error_msg) @@ -86,16 +81,9 @@ def get_feature_categories( """ valid_categories = _validate_feature_categories(feature_categories) - feature_extractors = { - "duration": lambda: time.get_task_duration(spiral), - "velocity": lambda: velocity.calculate_velocity_metrics(spiral), - "hausdorff": lambda: distance.calculate_hausdorff_metrics( - spiral, reference_spiral - ), - "AUC": lambda: drawing_error.calculate_area_under_curve( - spiral, reference_spiral - ), - } + feature_extractors = config.FeatureCategories.get_extractors( + spiral, reference_spiral + ) features = {} for category in valid_categories: @@ -154,6 +142,7 @@ def extract_features( input_path: pathlib.Path | str, output_path: pathlib.Path | str | None, feature_categories: list[str], + spiral_config: config.SpiralConfig | None, ) -> dict[str, float]: """Extract features from spiral drawing data. @@ -166,6 +155,8 @@ def extract_features( - "velocity": Extract velocity-based metrics. - "hausdorff": Extract Hausdorff distance metrics. - "AUC": Extract area under the curve metric. + spiral_config: Optional configuration for spiral parameters. If None, default + parameters are used. Returns: Dictionary containing the extracted features. @@ -179,7 +170,10 @@ def extract_features( spiral = center_spiral.center_spiral(spiral) logger.debug("Generating reference spiral to calculate features") - reference_spiral = generate_reference_spiral.generate_reference_spiral() + config_to_use = spiral_config or config.SpiralConfig() + reference_spiral = generate_reference_spiral.generate_reference_spiral( + config=config_to_use + ) features = get_feature_categories(spiral, reference_spiral, feature_categories) logger.info(f"Feature extraction complete. Extracted {len(features)} features") @@ -195,6 +189,7 @@ def run_pipeline( input_path: pathlib.Path | str, output_path: pathlib.Path | str | None, feature_categories: list[str], + config_params: dict[str, float | int] | None = None, ) -> dict[str, float]: """Run the Graphomotor pipeline to extract features from spiral drawing data. @@ -207,13 +202,25 @@ def run_pipeline( - "velocity": Extract velocity-based metrics. - "hausdorff": Extract Hausdorff distance metrics. - "AUC": Extract area under the curve metric. + config_params: Optional configuration parameters for spiral drawing. If None, + default parameters are used. + + Returns: + Dictionary containing the extracted features. """ logger.info("Starting Graphomotor pipeline") logger.info(f"Input path: {input_path}") logger.info(f"Output path: {output_path}") logger.info(f"Feature categories: {feature_categories}") - features = extract_features(input_path, output_path, feature_categories) + spiral_config = None + if config_params: + logger.info(f"Custom spiral configuration: {config_params}") + spiral_config = config.SpiralConfig.from_dict(config_params) + + features = extract_features( + input_path, output_path, feature_categories, spiral_config + ) logger.info("Graphomotor pipeline completed successfully") return features diff --git a/src/graphomotor/utils/__init__.py b/src/graphomotor/utils/__init__.py new file mode 100644 index 0000000..7cff8c5 --- /dev/null +++ b/src/graphomotor/utils/__init__.py @@ -0,0 +1 @@ +""".. include:: ../../README.md""" # noqa: D415 diff --git a/src/graphomotor/utils/center_spiral.py b/src/graphomotor/utils/center_spiral.py index a1cf197..a028554 100644 --- a/src/graphomotor/utils/center_spiral.py +++ b/src/graphomotor/utils/center_spiral.py @@ -12,7 +12,8 @@ def center_spiral(spiral: models.Spiral) -> models.Spiral: Returns: Spiral object with centered spiral data. """ - spiral.data["x"] -= config._SpiralConfig.SPIRAL_CENTER_X - spiral.data["y"] -= config._SpiralConfig.SPIRAL_CENTER_Y + spiral_config = config.SpiralConfig() + spiral.data["x"] -= spiral_config.center_x + spiral.data["y"] -= spiral_config.center_y return spiral diff --git a/src/graphomotor/utils/generate_reference_spiral.py b/src/graphomotor/utils/generate_reference_spiral.py index 8672cce..6a85a80 100644 --- a/src/graphomotor/utils/generate_reference_spiral.py +++ b/src/graphomotor/utils/generate_reference_spiral.py @@ -3,53 +3,56 @@ import numpy as np from scipy import integrate, optimize -from graphomotor.core.config import _SpiralConfig +from graphomotor.core.config import SpiralConfig -def _arc_length_integrand(t: float) -> float: +def _arc_length_integrand(t: float, config: SpiralConfig) -> float: """Calculate the differential arc length at angle t for an Archimedean spiral. Args: t: Angle parameter. + config: Spiral configuration. Returns: Differential arc length value. """ - r_t = _SpiralConfig.SPIRAL_START_RADIUS + _SpiralConfig.SPIRAL_GROWTH_RATE * t - return np.sqrt(r_t**2 + _SpiralConfig.SPIRAL_GROWTH_RATE**2) + r_t = config.start_radius + config.growth_rate * t + return np.sqrt(r_t**2 + config.growth_rate**2) -def _calculate_arc_length(theta: float) -> float: - """Calculate the arc length of the spiral from _SPIRAL_START_ANGLE to theta. +def _calculate_arc_length(theta: float, config: SpiralConfig) -> float: + """Calculate the arc length of the spiral from start_angle to theta. Args: theta: The angle in radians. + config: Spiral configuration. Returns: - The arc length of the spiral from _SPIRAL_START_ANGLE to theta. + The arc length of the spiral from start_angle to theta. """ return integrate.quad( - lambda t: _arc_length_integrand(t), _SpiralConfig.SPIRAL_START_ANGLE, theta + lambda t: _arc_length_integrand(t, config), config.start_angle, theta )[0] -def _find_theta_for_arc_length(target_arc_length: float) -> float: +def _find_theta_for_arc_length(target_arc_length: float, config: SpiralConfig) -> float: """Find the theta value for a given arc length using numerical root finding. Args: target_arc_length: Target arc length. + config: Spiral configuration. Returns: Angle theta corresponding to the arc length. """ solution = optimize.root_scalar( - lambda theta: _calculate_arc_length(theta) - target_arc_length, - bracket=[_SpiralConfig.SPIRAL_START_ANGLE, _SpiralConfig.SPIRAL_END_ANGLE], + lambda theta: _calculate_arc_length(theta, config) - target_arc_length, + bracket=[config.start_angle, config.end_angle], ) return solution.root -def generate_reference_spiral() -> np.ndarray: +def generate_reference_spiral(config: SpiralConfig) -> np.ndarray: """Generate a reference spiral with equidistant points along its arc length. This function creates an Archimedean spiral with points distributed at equal arc @@ -70,29 +73,29 @@ def generate_reference_spiral() -> np.ndarray: - Arc length from 0 to θ: s(θ) = ∫₀ᶿ √(r(t)² + b²) dt - Cartesian coordinates: x = cx + r·cos(θ), y = cy + r·sin(θ) - Parameters used: - - Center coordinates: (cx, cy) = (_SPIRAL_CENTER_X, _SPIRAL_CENTER_Y) - - Start radius: a = _SPIRAL_START_RADIUS - - Growth rate: b = _SPIRAL_GROWTH_RATE - - Total rotation: θ = _SPIRAL_END_ANGLE - _SPIRAL_START_ANGLE - - Number of points: N = _SPIRAL_NUM_POINTS + Parameters are defined in the SpiralConfig class: + - Center coordinates: (cx, cy) = (config.center_x, config.center_y) + - Start radius: a = config.start_radius + - Growth rate: b = config.growth_rate + - Total rotation: θ = config.end_angle - config.start_angle + - Number of points: N = config.num_points + + Args: + config: Configuration parameters for the spiral. Returns: Array with shape (N, 2) containing Cartesian coordinates of the spiral points. """ - total_arc_length = _calculate_arc_length(_SpiralConfig.SPIRAL_END_ANGLE) + total_arc_length = _calculate_arc_length(config.end_angle, config) - arc_length_values = np.linspace( - 0, total_arc_length, _SpiralConfig.SPIRAL_NUM_POINTS - ) + arc_length_values = np.linspace(0, total_arc_length, config.num_points) - theta_values = np.array([_find_theta_for_arc_length(s) for s in arc_length_values]) - - r_values = ( - _SpiralConfig.SPIRAL_START_RADIUS - + _SpiralConfig.SPIRAL_GROWTH_RATE * theta_values + theta_values = np.array( + [_find_theta_for_arc_length(s, config) for s in arc_length_values] ) - x_values = _SpiralConfig.SPIRAL_CENTER_X + r_values * np.cos(theta_values) - y_values = _SpiralConfig.SPIRAL_CENTER_Y + r_values * np.sin(theta_values) + + r_values = config.start_radius + config.growth_rate * theta_values + x_values = config.center_x + r_values * np.cos(theta_values) + y_values = config.center_y + r_values * np.sin(theta_values) return np.column_stack((x_values, y_values)) diff --git a/tests/conftest.py b/tests/conftest.py index d6169a0..e0ef0cc 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -7,7 +7,7 @@ import pandas as pd import pytest -from graphomotor.core import models +from graphomotor.core import config, models from graphomotor.utils import generate_reference_spiral @@ -56,4 +56,4 @@ def valid_spiral( @pytest.fixture def ref_spiral() -> np.ndarray: """Create a reference spiral for testing.""" - return generate_reference_spiral.generate_reference_spiral() + return generate_reference_spiral.generate_reference_spiral(config.SpiralConfig()) diff --git a/tests/smoke/__init__.py b/tests/smoke/__init__.py new file mode 100644 index 0000000..7cff8c5 --- /dev/null +++ b/tests/smoke/__init__.py @@ -0,0 +1 @@ +""".. include:: ../../README.md""" # noqa: D415 diff --git a/tests/smoke/test_orchestrator_smoke.py b/tests/smoke/test_orchestrator_smoke.py new file mode 100644 index 0000000..b0159dd --- /dev/null +++ b/tests/smoke/test_orchestrator_smoke.py @@ -0,0 +1,24 @@ +"""Tests for main workflow of graphomotor orchestrator.""" + +import pathlib + +import pytest + +from graphomotor.core import orchestrator + + +def test_orchestrator_happy_path( + sample_data: pathlib.Path, + caplog: pytest.LogCaptureFixture, +) -> None: + """Test the orchestrator with a happy path scenario.""" + features = orchestrator.run_pipeline( + input_path=sample_data, + output_path=None, + feature_categories=["duration", "velocity", "hausdorff", "AUC"], + config_params=None, + ) + + assert "Graphomotor pipeline completed successfully" in caplog.text + assert isinstance(features, dict) + assert len(features) == 25 diff --git a/tests/unit/test_config.py b/tests/unit/test_config.py index 87df66b..1d72119 100644 --- a/tests/unit/test_config.py +++ b/tests/unit/test_config.py @@ -2,11 +2,76 @@ import logging +import numpy as np import pytest from graphomotor.core import config +@pytest.mark.parametrize( + "custom_params, expected_params, expected_warnings", + [ + ( + { + "center_x": 25, + "center_y": 25, + "start_angle": np.pi, + "end_angle": 2 * np.pi, + "num_points": 100, + }, + { + "center_x": 25, + "center_y": 25, + "start_radius": 0, + "growth_rate": 1.075, + "start_angle": np.pi, + "end_angle": 2 * np.pi, + "num_points": 100, + }, + [], + ), + ( + { + "growth_rate": 1, + "start_radius": 100, + "end_radius": 20, + "meaning_of_life": 42, + }, + { + "center_x": 50, + "center_y": 50, + "start_radius": 100, + "growth_rate": 1, + "start_angle": 0, + "end_angle": 8 * np.pi, + "num_points": 10000, + }, + ["end_radius", "meaning_of_life"], + ), + ], +) +def test_spiral_config_from_dict( + custom_params: dict[str, int | float], + expected_params: dict[str, int | float], + expected_warnings: list[str], + recwarn: pytest.WarningsRecorder, +) -> None: + """Test the SpiralConfig.from_dict method with various inputs.""" + spiral_config = config.SpiralConfig.from_dict(custom_params) + + for key, value in expected_params.items(): + assert getattr(spiral_config, key) == value + + if expected_warnings: + assert len(recwarn) == len(expected_warnings) + for i, param in enumerate(expected_warnings): + assert f"Unknown configuration parameters will be ignored: {param}" in str( + recwarn[i].message + ) + else: + assert len(recwarn) == 0 + + def test_get_logger(caplog: pytest.LogCaptureFixture) -> None: """Test the graphomotor logger with level set to INFO (20).""" if logging.getLogger("graphomotor").handlers: diff --git a/tests/unit/test_orchestrator.py b/tests/unit/test_orchestrator.py index 5276158..adb40e2 100644 --- a/tests/unit/test_orchestrator.py +++ b/tests/unit/test_orchestrator.py @@ -4,7 +4,7 @@ import pytest -from graphomotor.core import orchestrator +from graphomotor.core import config, orchestrator ## TODO: test all functions here, then add a smoke test as well for the whole pipeline @@ -31,12 +31,14 @@ def test_extract_features_categories( input_path=sample_data, output_path=None, feature_categories=feature_categories, + spiral_config=config.SpiralConfig(), ) else: features = orchestrator.extract_features( input_path=sample_data, output_path=None, feature_categories=feature_categories, + spiral_config=config.SpiralConfig(), ) if expected_behavior == "multiple_valid": diff --git a/tests/unit/test_reference_spiral.py b/tests/unit/test_reference_spiral.py index f0edf76..d2b7fc9 100644 --- a/tests/unit/test_reference_spiral.py +++ b/tests/unit/test_reference_spiral.py @@ -8,27 +8,27 @@ def test_generate_reference_spiral() -> None: """Test the generation of a reference spiral.""" + spiral_config = config.SpiralConfig() expected_mean_arc_length = generate_reference_spiral._calculate_arc_length( - config._SpiralConfig.SPIRAL_END_ANGLE - ) / (config._SpiralConfig.SPIRAL_NUM_POINTS - 1) + spiral_config.end_angle, spiral_config + ) / (spiral_config.num_points - 1) - spiral = generate_reference_spiral.generate_reference_spiral() + spiral = generate_reference_spiral.generate_reference_spiral(spiral_config) arc_lengths = np.linalg.norm(spiral[1:] - spiral[:-1], axis=1) mean_arc_length = np.mean(arc_lengths) assert isinstance(spiral, np.ndarray) - assert spiral.shape == (config._SpiralConfig.SPIRAL_NUM_POINTS, 2) + assert spiral.shape == (spiral_config.num_points, 2) assert np.array_equal( spiral[0], - [config._SpiralConfig.SPIRAL_CENTER_X, config._SpiralConfig.SPIRAL_CENTER_Y], + [spiral_config.center_x, spiral_config.center_y], ) assert np.allclose( spiral[-1], [ - config._SpiralConfig.SPIRAL_CENTER_X - + config._SpiralConfig.SPIRAL_GROWTH_RATE - * config._SpiralConfig.SPIRAL_END_ANGLE, - config._SpiralConfig.SPIRAL_CENTER_Y, + spiral_config.center_x + + spiral_config.growth_rate * spiral_config.end_angle, + spiral_config.center_y, ], atol=0, rtol=1e-8, diff --git a/tests/unit/test_velocity.py b/tests/unit/test_velocity.py index 534c1ba..82561a8 100644 --- a/tests/unit/test_velocity.py +++ b/tests/unit/test_velocity.py @@ -13,19 +13,18 @@ def test_calculate_velocity_metrics(valid_spiral: models.Spiral) -> None: time_total = 100 theta_end = 10 + spiral_config = config.SpiralConfig() t = np.linspace(0, time_total, num_points, endpoint=False) theta = np.linspace(0, theta_end, num_points, endpoint=False) - r = config._SpiralConfig.SPIRAL_GROWTH_RATE * theta - x = config._SpiralConfig.SPIRAL_CENTER_X + r * np.cos(theta) - y = config._SpiralConfig.SPIRAL_CENTER_Y + r * np.sin(theta) + r = spiral_config.growth_rate * theta + x = spiral_config.center_x + r * np.cos(theta) + y = spiral_config.center_y + r * np.sin(theta) data = pd.DataFrame({"x": x, "y": y, "seconds": t}) valid_spiral.data = data expected_angular_velocity_median = theta_end / time_total - expected_radial_velocity_median = ( - config._SpiralConfig.SPIRAL_GROWTH_RATE * theta_end / time_total - ) + expected_radial_velocity_median = spiral_config.growth_rate * theta_end / time_total expected_linear_velocity_median = np.median( np.sqrt(np.gradient(x, t) ** 2 + np.gradient(y, t) ** 2) ) diff --git a/uv.lock b/uv.lock index 2b4a7f0..694c7af 100644 --- a/uv.lock +++ b/uv.lock @@ -1,88 +1,109 @@ version = 1 -requires-python = ">=3.12" +revision = 2 +requires-python = ">=3.11" +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version < '3.12'", +] [[package]] name = "annotated-types" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, ] [[package]] name = "cfgv" version = "3.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114 } +sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114, upload-time = "2023-08-12T20:38:17.776Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249 }, + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249, upload-time = "2023-08-12T20:38:16.269Z" }, ] [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] [[package]] name = "coverage" version = "7.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/19/4f/2251e65033ed2ce1e68f00f91a0294e0f80c80ae8c3ebbe2f12828c4cd53/coverage-7.8.0.tar.gz", hash = "sha256:7a3d62b3b03b4b6fd41a085f3574874cf946cb4604d2b4d3e8dca8cd570ca501", size = 811872 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/aa/12/4792669473297f7973518bec373a955e267deb4339286f882439b8535b39/coverage-7.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bbb5cc845a0292e0c520656d19d7ce40e18d0e19b22cb3e0409135a575bf79fc", size = 211684 }, - { url = "https://files.pythonhosted.org/packages/be/e1/2a4ec273894000ebedd789e8f2fc3813fcaf486074f87fd1c5b2cb1c0a2b/coverage-7.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4dfd9a93db9e78666d178d4f08a5408aa3f2474ad4d0e0378ed5f2ef71640cb6", size = 211935 }, - { url = "https://files.pythonhosted.org/packages/f8/3a/7b14f6e4372786709a361729164125f6b7caf4024ce02e596c4a69bccb89/coverage-7.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f017a61399f13aa6d1039f75cd467be388d157cd81f1a119b9d9a68ba6f2830d", size = 245994 }, - { url = "https://files.pythonhosted.org/packages/54/80/039cc7f1f81dcbd01ea796d36d3797e60c106077e31fd1f526b85337d6a1/coverage-7.8.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0915742f4c82208ebf47a2b154a5334155ed9ef9fe6190674b8a46c2fb89cb05", size = 242885 }, - { url = "https://files.pythonhosted.org/packages/10/e0/dc8355f992b6cc2f9dcd5ef6242b62a3f73264893bc09fbb08bfcab18eb4/coverage-7.8.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a40fcf208e021eb14b0fac6bdb045c0e0cab53105f93ba0d03fd934c956143a", size = 245142 }, - { url = "https://files.pythonhosted.org/packages/43/1b/33e313b22cf50f652becb94c6e7dae25d8f02e52e44db37a82de9ac357e8/coverage-7.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a1f406a8e0995d654b2ad87c62caf6befa767885301f3b8f6f73e6f3c31ec3a6", size = 244906 }, - { url = "https://files.pythonhosted.org/packages/05/08/c0a8048e942e7f918764ccc99503e2bccffba1c42568693ce6955860365e/coverage-7.8.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:77af0f6447a582fdc7de5e06fa3757a3ef87769fbb0fdbdeba78c23049140a47", size = 243124 }, - { url = "https://files.pythonhosted.org/packages/5b/62/ea625b30623083c2aad645c9a6288ad9fc83d570f9adb913a2abdba562dd/coverage-7.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f2d32f95922927186c6dbc8bc60df0d186b6edb828d299ab10898ef3f40052fe", size = 244317 }, - { url = "https://files.pythonhosted.org/packages/62/cb/3871f13ee1130a6c8f020e2f71d9ed269e1e2124aa3374d2180ee451cee9/coverage-7.8.0-cp312-cp312-win32.whl", hash = "sha256:769773614e676f9d8e8a0980dd7740f09a6ea386d0f383db6821df07d0f08545", size = 214170 }, - { url = "https://files.pythonhosted.org/packages/88/26/69fe1193ab0bfa1eb7a7c0149a066123611baba029ebb448500abd8143f9/coverage-7.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:e5d2b9be5b0693cf21eb4ce0ec8d211efb43966f6657807f6859aab3814f946b", size = 214969 }, - { url = "https://files.pythonhosted.org/packages/f3/21/87e9b97b568e223f3438d93072479c2f36cc9b3f6b9f7094b9d50232acc0/coverage-7.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5ac46d0c2dd5820ce93943a501ac5f6548ea81594777ca585bf002aa8854cacd", size = 211708 }, - { url = "https://files.pythonhosted.org/packages/75/be/882d08b28a0d19c9c4c2e8a1c6ebe1f79c9c839eb46d4fca3bd3b34562b9/coverage-7.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:771eb7587a0563ca5bb6f622b9ed7f9d07bd08900f7589b4febff05f469bea00", size = 211981 }, - { url = "https://files.pythonhosted.org/packages/7a/1d/ce99612ebd58082fbe3f8c66f6d8d5694976c76a0d474503fa70633ec77f/coverage-7.8.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42421e04069fb2cbcbca5a696c4050b84a43b05392679d4068acbe65449b5c64", size = 245495 }, - { url = "https://files.pythonhosted.org/packages/dc/8d/6115abe97df98db6b2bd76aae395fcc941d039a7acd25f741312ced9a78f/coverage-7.8.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:554fec1199d93ab30adaa751db68acec2b41c5602ac944bb19187cb9a41a8067", size = 242538 }, - { url = "https://files.pythonhosted.org/packages/cb/74/2f8cc196643b15bc096d60e073691dadb3dca48418f08bc78dd6e899383e/coverage-7.8.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aaeb00761f985007b38cf463b1d160a14a22c34eb3f6a39d9ad6fc27cb73008", size = 244561 }, - { url = "https://files.pythonhosted.org/packages/22/70/c10c77cd77970ac965734fe3419f2c98665f6e982744a9bfb0e749d298f4/coverage-7.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:581a40c7b94921fffd6457ffe532259813fc68eb2bdda60fa8cc343414ce3733", size = 244633 }, - { url = "https://files.pythonhosted.org/packages/38/5a/4f7569d946a07c952688debee18c2bb9ab24f88027e3d71fd25dbc2f9dca/coverage-7.8.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f319bae0321bc838e205bf9e5bc28f0a3165f30c203b610f17ab5552cff90323", size = 242712 }, - { url = "https://files.pythonhosted.org/packages/bb/a1/03a43b33f50475a632a91ea8c127f7e35e53786dbe6781c25f19fd5a65f8/coverage-7.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:04bfec25a8ef1c5f41f5e7e5c842f6b615599ca8ba8391ec33a9290d9d2db3a3", size = 244000 }, - { url = "https://files.pythonhosted.org/packages/6a/89/ab6c43b1788a3128e4d1b7b54214548dcad75a621f9d277b14d16a80d8a1/coverage-7.8.0-cp313-cp313-win32.whl", hash = "sha256:dd19608788b50eed889e13a5d71d832edc34fc9dfce606f66e8f9f917eef910d", size = 214195 }, - { url = "https://files.pythonhosted.org/packages/12/12/6bf5f9a8b063d116bac536a7fb594fc35cb04981654cccb4bbfea5dcdfa0/coverage-7.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:a9abbccd778d98e9c7e85038e35e91e67f5b520776781d9a1e2ee9d400869487", size = 214998 }, - { url = "https://files.pythonhosted.org/packages/2a/e6/1e9df74ef7a1c983a9c7443dac8aac37a46f1939ae3499424622e72a6f78/coverage-7.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:18c5ae6d061ad5b3e7eef4363fb27a0576012a7447af48be6c75b88494c6cf25", size = 212541 }, - { url = "https://files.pythonhosted.org/packages/04/51/c32174edb7ee49744e2e81c4b1414ac9df3dacfcb5b5f273b7f285ad43f6/coverage-7.8.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:95aa6ae391a22bbbce1b77ddac846c98c5473de0372ba5c463480043a07bff42", size = 212767 }, - { url = "https://files.pythonhosted.org/packages/e9/8f/f454cbdb5212f13f29d4a7983db69169f1937e869a5142bce983ded52162/coverage-7.8.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e013b07ba1c748dacc2a80e69a46286ff145935f260eb8c72df7185bf048f502", size = 256997 }, - { url = "https://files.pythonhosted.org/packages/e6/74/2bf9e78b321216d6ee90a81e5c22f912fc428442c830c4077b4a071db66f/coverage-7.8.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d766a4f0e5aa1ba056ec3496243150698dc0481902e2b8559314368717be82b1", size = 252708 }, - { url = "https://files.pythonhosted.org/packages/92/4d/50d7eb1e9a6062bee6e2f92e78b0998848a972e9afad349b6cdde6fa9e32/coverage-7.8.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad80e6b4a0c3cb6f10f29ae4c60e991f424e6b14219d46f1e7d442b938ee68a4", size = 255046 }, - { url = "https://files.pythonhosted.org/packages/40/9e/71fb4e7402a07c4198ab44fc564d09d7d0ffca46a9fb7b0a7b929e7641bd/coverage-7.8.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b87eb6fc9e1bb8f98892a2458781348fa37e6925f35bb6ceb9d4afd54ba36c73", size = 256139 }, - { url = "https://files.pythonhosted.org/packages/49/1a/78d37f7a42b5beff027e807c2843185961fdae7fe23aad5a4837c93f9d25/coverage-7.8.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:d1ba00ae33be84066cfbe7361d4e04dec78445b2b88bdb734d0d1cbab916025a", size = 254307 }, - { url = "https://files.pythonhosted.org/packages/58/e9/8fb8e0ff6bef5e170ee19d59ca694f9001b2ec085dc99b4f65c128bb3f9a/coverage-7.8.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f3c38e4e5ccbdc9198aecc766cedbb134b2d89bf64533973678dfcf07effd883", size = 255116 }, - { url = "https://files.pythonhosted.org/packages/56/b0/d968ecdbe6fe0a863de7169bbe9e8a476868959f3af24981f6a10d2b6924/coverage-7.8.0-cp313-cp313t-win32.whl", hash = "sha256:379fe315e206b14e21db5240f89dc0774bdd3e25c3c58c2c733c99eca96f1ada", size = 214909 }, - { url = "https://files.pythonhosted.org/packages/87/e9/d6b7ef9fecf42dfb418d93544af47c940aa83056c49e6021a564aafbc91f/coverage-7.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2e4b6b87bb0c846a9315e3ab4be2d52fac905100565f4b92f02c445c8799e257", size = 216068 }, - { url = "https://files.pythonhosted.org/packages/59/f1/4da7717f0063a222db253e7121bd6a56f6fb1ba439dcc36659088793347c/coverage-7.8.0-py3-none-any.whl", hash = "sha256:dbf364b4c5e7bae9250528167dfe40219b62e2d573c854d74be213e1e52069f7", size = 203435 }, +sdist = { url = "https://files.pythonhosted.org/packages/19/4f/2251e65033ed2ce1e68f00f91a0294e0f80c80ae8c3ebbe2f12828c4cd53/coverage-7.8.0.tar.gz", hash = "sha256:7a3d62b3b03b4b6fd41a085f3574874cf946cb4604d2b4d3e8dca8cd570ca501", size = 811872, upload-time = "2025-03-30T20:36:45.376Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/77/074d201adb8383addae5784cb8e2dac60bb62bfdf28b2b10f3a3af2fda47/coverage-7.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e7ac22a0bb2c7c49f441f7a6d46c9c80d96e56f5a8bc6972529ed43c8b694e27", size = 211493, upload-time = "2025-03-30T20:35:12.286Z" }, + { url = "https://files.pythonhosted.org/packages/a9/89/7a8efe585750fe59b48d09f871f0e0c028a7b10722b2172dfe021fa2fdd4/coverage-7.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bf13d564d310c156d1c8e53877baf2993fb3073b2fc9f69790ca6a732eb4bfea", size = 211921, upload-time = "2025-03-30T20:35:14.18Z" }, + { url = "https://files.pythonhosted.org/packages/e9/ef/96a90c31d08a3f40c49dbe897df4f1fd51fb6583821a1a1c5ee30cc8f680/coverage-7.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5761c70c017c1b0d21b0815a920ffb94a670c8d5d409d9b38857874c21f70d7", size = 244556, upload-time = "2025-03-30T20:35:15.616Z" }, + { url = "https://files.pythonhosted.org/packages/89/97/dcd5c2ce72cee9d7b0ee8c89162c24972fb987a111b92d1a3d1d19100c61/coverage-7.8.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5ff52d790c7e1628241ffbcaeb33e07d14b007b6eb00a19320c7b8a7024c040", size = 242245, upload-time = "2025-03-30T20:35:18.648Z" }, + { url = "https://files.pythonhosted.org/packages/b2/7b/b63cbb44096141ed435843bbb251558c8e05cc835c8da31ca6ffb26d44c0/coverage-7.8.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d39fc4817fd67b3915256af5dda75fd4ee10621a3d484524487e33416c6f3543", size = 244032, upload-time = "2025-03-30T20:35:20.131Z" }, + { url = "https://files.pythonhosted.org/packages/97/e3/7fa8c2c00a1ef530c2a42fa5df25a6971391f92739d83d67a4ee6dcf7a02/coverage-7.8.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b44674870709017e4b4036e3d0d6c17f06a0e6d4436422e0ad29b882c40697d2", size = 243679, upload-time = "2025-03-30T20:35:21.636Z" }, + { url = "https://files.pythonhosted.org/packages/4f/b3/e0a59d8df9150c8a0c0841d55d6568f0a9195692136c44f3d21f1842c8f6/coverage-7.8.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8f99eb72bf27cbb167b636eb1726f590c00e1ad375002230607a844d9e9a2318", size = 241852, upload-time = "2025-03-30T20:35:23.525Z" }, + { url = "https://files.pythonhosted.org/packages/9b/82/db347ccd57bcef150c173df2ade97976a8367a3be7160e303e43dd0c795f/coverage-7.8.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b571bf5341ba8c6bc02e0baeaf3b061ab993bf372d982ae509807e7f112554e9", size = 242389, upload-time = "2025-03-30T20:35:25.09Z" }, + { url = "https://files.pythonhosted.org/packages/21/f6/3f7d7879ceb03923195d9ff294456241ed05815281f5254bc16ef71d6a20/coverage-7.8.0-cp311-cp311-win32.whl", hash = "sha256:e75a2ad7b647fd8046d58c3132d7eaf31b12d8a53c0e4b21fa9c4d23d6ee6d3c", size = 213997, upload-time = "2025-03-30T20:35:26.914Z" }, + { url = "https://files.pythonhosted.org/packages/28/87/021189643e18ecf045dbe1e2071b2747901f229df302de01c998eeadf146/coverage-7.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:3043ba1c88b2139126fc72cb48574b90e2e0546d4c78b5299317f61b7f718b78", size = 214911, upload-time = "2025-03-30T20:35:28.498Z" }, + { url = "https://files.pythonhosted.org/packages/aa/12/4792669473297f7973518bec373a955e267deb4339286f882439b8535b39/coverage-7.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bbb5cc845a0292e0c520656d19d7ce40e18d0e19b22cb3e0409135a575bf79fc", size = 211684, upload-time = "2025-03-30T20:35:29.959Z" }, + { url = "https://files.pythonhosted.org/packages/be/e1/2a4ec273894000ebedd789e8f2fc3813fcaf486074f87fd1c5b2cb1c0a2b/coverage-7.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4dfd9a93db9e78666d178d4f08a5408aa3f2474ad4d0e0378ed5f2ef71640cb6", size = 211935, upload-time = "2025-03-30T20:35:31.912Z" }, + { url = "https://files.pythonhosted.org/packages/f8/3a/7b14f6e4372786709a361729164125f6b7caf4024ce02e596c4a69bccb89/coverage-7.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f017a61399f13aa6d1039f75cd467be388d157cd81f1a119b9d9a68ba6f2830d", size = 245994, upload-time = "2025-03-30T20:35:33.455Z" }, + { url = "https://files.pythonhosted.org/packages/54/80/039cc7f1f81dcbd01ea796d36d3797e60c106077e31fd1f526b85337d6a1/coverage-7.8.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0915742f4c82208ebf47a2b154a5334155ed9ef9fe6190674b8a46c2fb89cb05", size = 242885, upload-time = "2025-03-30T20:35:35.354Z" }, + { url = "https://files.pythonhosted.org/packages/10/e0/dc8355f992b6cc2f9dcd5ef6242b62a3f73264893bc09fbb08bfcab18eb4/coverage-7.8.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a40fcf208e021eb14b0fac6bdb045c0e0cab53105f93ba0d03fd934c956143a", size = 245142, upload-time = "2025-03-30T20:35:37.121Z" }, + { url = "https://files.pythonhosted.org/packages/43/1b/33e313b22cf50f652becb94c6e7dae25d8f02e52e44db37a82de9ac357e8/coverage-7.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a1f406a8e0995d654b2ad87c62caf6befa767885301f3b8f6f73e6f3c31ec3a6", size = 244906, upload-time = "2025-03-30T20:35:39.07Z" }, + { url = "https://files.pythonhosted.org/packages/05/08/c0a8048e942e7f918764ccc99503e2bccffba1c42568693ce6955860365e/coverage-7.8.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:77af0f6447a582fdc7de5e06fa3757a3ef87769fbb0fdbdeba78c23049140a47", size = 243124, upload-time = "2025-03-30T20:35:40.598Z" }, + { url = "https://files.pythonhosted.org/packages/5b/62/ea625b30623083c2aad645c9a6288ad9fc83d570f9adb913a2abdba562dd/coverage-7.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f2d32f95922927186c6dbc8bc60df0d186b6edb828d299ab10898ef3f40052fe", size = 244317, upload-time = "2025-03-30T20:35:42.204Z" }, + { url = "https://files.pythonhosted.org/packages/62/cb/3871f13ee1130a6c8f020e2f71d9ed269e1e2124aa3374d2180ee451cee9/coverage-7.8.0-cp312-cp312-win32.whl", hash = "sha256:769773614e676f9d8e8a0980dd7740f09a6ea386d0f383db6821df07d0f08545", size = 214170, upload-time = "2025-03-30T20:35:44.216Z" }, + { url = "https://files.pythonhosted.org/packages/88/26/69fe1193ab0bfa1eb7a7c0149a066123611baba029ebb448500abd8143f9/coverage-7.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:e5d2b9be5b0693cf21eb4ce0ec8d211efb43966f6657807f6859aab3814f946b", size = 214969, upload-time = "2025-03-30T20:35:45.797Z" }, + { url = "https://files.pythonhosted.org/packages/f3/21/87e9b97b568e223f3438d93072479c2f36cc9b3f6b9f7094b9d50232acc0/coverage-7.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5ac46d0c2dd5820ce93943a501ac5f6548ea81594777ca585bf002aa8854cacd", size = 211708, upload-time = "2025-03-30T20:35:47.417Z" }, + { url = "https://files.pythonhosted.org/packages/75/be/882d08b28a0d19c9c4c2e8a1c6ebe1f79c9c839eb46d4fca3bd3b34562b9/coverage-7.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:771eb7587a0563ca5bb6f622b9ed7f9d07bd08900f7589b4febff05f469bea00", size = 211981, upload-time = "2025-03-30T20:35:49.002Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1d/ce99612ebd58082fbe3f8c66f6d8d5694976c76a0d474503fa70633ec77f/coverage-7.8.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42421e04069fb2cbcbca5a696c4050b84a43b05392679d4068acbe65449b5c64", size = 245495, upload-time = "2025-03-30T20:35:51.073Z" }, + { url = "https://files.pythonhosted.org/packages/dc/8d/6115abe97df98db6b2bd76aae395fcc941d039a7acd25f741312ced9a78f/coverage-7.8.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:554fec1199d93ab30adaa751db68acec2b41c5602ac944bb19187cb9a41a8067", size = 242538, upload-time = "2025-03-30T20:35:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/cb/74/2f8cc196643b15bc096d60e073691dadb3dca48418f08bc78dd6e899383e/coverage-7.8.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aaeb00761f985007b38cf463b1d160a14a22c34eb3f6a39d9ad6fc27cb73008", size = 244561, upload-time = "2025-03-30T20:35:54.658Z" }, + { url = "https://files.pythonhosted.org/packages/22/70/c10c77cd77970ac965734fe3419f2c98665f6e982744a9bfb0e749d298f4/coverage-7.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:581a40c7b94921fffd6457ffe532259813fc68eb2bdda60fa8cc343414ce3733", size = 244633, upload-time = "2025-03-30T20:35:56.221Z" }, + { url = "https://files.pythonhosted.org/packages/38/5a/4f7569d946a07c952688debee18c2bb9ab24f88027e3d71fd25dbc2f9dca/coverage-7.8.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f319bae0321bc838e205bf9e5bc28f0a3165f30c203b610f17ab5552cff90323", size = 242712, upload-time = "2025-03-30T20:35:57.801Z" }, + { url = "https://files.pythonhosted.org/packages/bb/a1/03a43b33f50475a632a91ea8c127f7e35e53786dbe6781c25f19fd5a65f8/coverage-7.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:04bfec25a8ef1c5f41f5e7e5c842f6b615599ca8ba8391ec33a9290d9d2db3a3", size = 244000, upload-time = "2025-03-30T20:35:59.378Z" }, + { url = "https://files.pythonhosted.org/packages/6a/89/ab6c43b1788a3128e4d1b7b54214548dcad75a621f9d277b14d16a80d8a1/coverage-7.8.0-cp313-cp313-win32.whl", hash = "sha256:dd19608788b50eed889e13a5d71d832edc34fc9dfce606f66e8f9f917eef910d", size = 214195, upload-time = "2025-03-30T20:36:01.005Z" }, + { url = "https://files.pythonhosted.org/packages/12/12/6bf5f9a8b063d116bac536a7fb594fc35cb04981654cccb4bbfea5dcdfa0/coverage-7.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:a9abbccd778d98e9c7e85038e35e91e67f5b520776781d9a1e2ee9d400869487", size = 214998, upload-time = "2025-03-30T20:36:03.006Z" }, + { url = "https://files.pythonhosted.org/packages/2a/e6/1e9df74ef7a1c983a9c7443dac8aac37a46f1939ae3499424622e72a6f78/coverage-7.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:18c5ae6d061ad5b3e7eef4363fb27a0576012a7447af48be6c75b88494c6cf25", size = 212541, upload-time = "2025-03-30T20:36:04.638Z" }, + { url = "https://files.pythonhosted.org/packages/04/51/c32174edb7ee49744e2e81c4b1414ac9df3dacfcb5b5f273b7f285ad43f6/coverage-7.8.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:95aa6ae391a22bbbce1b77ddac846c98c5473de0372ba5c463480043a07bff42", size = 212767, upload-time = "2025-03-30T20:36:06.503Z" }, + { url = "https://files.pythonhosted.org/packages/e9/8f/f454cbdb5212f13f29d4a7983db69169f1937e869a5142bce983ded52162/coverage-7.8.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e013b07ba1c748dacc2a80e69a46286ff145935f260eb8c72df7185bf048f502", size = 256997, upload-time = "2025-03-30T20:36:08.137Z" }, + { url = "https://files.pythonhosted.org/packages/e6/74/2bf9e78b321216d6ee90a81e5c22f912fc428442c830c4077b4a071db66f/coverage-7.8.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d766a4f0e5aa1ba056ec3496243150698dc0481902e2b8559314368717be82b1", size = 252708, upload-time = "2025-03-30T20:36:09.781Z" }, + { url = "https://files.pythonhosted.org/packages/92/4d/50d7eb1e9a6062bee6e2f92e78b0998848a972e9afad349b6cdde6fa9e32/coverage-7.8.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad80e6b4a0c3cb6f10f29ae4c60e991f424e6b14219d46f1e7d442b938ee68a4", size = 255046, upload-time = "2025-03-30T20:36:11.409Z" }, + { url = "https://files.pythonhosted.org/packages/40/9e/71fb4e7402a07c4198ab44fc564d09d7d0ffca46a9fb7b0a7b929e7641bd/coverage-7.8.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b87eb6fc9e1bb8f98892a2458781348fa37e6925f35bb6ceb9d4afd54ba36c73", size = 256139, upload-time = "2025-03-30T20:36:13.86Z" }, + { url = "https://files.pythonhosted.org/packages/49/1a/78d37f7a42b5beff027e807c2843185961fdae7fe23aad5a4837c93f9d25/coverage-7.8.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:d1ba00ae33be84066cfbe7361d4e04dec78445b2b88bdb734d0d1cbab916025a", size = 254307, upload-time = "2025-03-30T20:36:16.074Z" }, + { url = "https://files.pythonhosted.org/packages/58/e9/8fb8e0ff6bef5e170ee19d59ca694f9001b2ec085dc99b4f65c128bb3f9a/coverage-7.8.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f3c38e4e5ccbdc9198aecc766cedbb134b2d89bf64533973678dfcf07effd883", size = 255116, upload-time = "2025-03-30T20:36:18.033Z" }, + { url = "https://files.pythonhosted.org/packages/56/b0/d968ecdbe6fe0a863de7169bbe9e8a476868959f3af24981f6a10d2b6924/coverage-7.8.0-cp313-cp313t-win32.whl", hash = "sha256:379fe315e206b14e21db5240f89dc0774bdd3e25c3c58c2c733c99eca96f1ada", size = 214909, upload-time = "2025-03-30T20:36:19.644Z" }, + { url = "https://files.pythonhosted.org/packages/87/e9/d6b7ef9fecf42dfb418d93544af47c940aa83056c49e6021a564aafbc91f/coverage-7.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2e4b6b87bb0c846a9315e3ab4be2d52fac905100565f4b92f02c445c8799e257", size = 216068, upload-time = "2025-03-30T20:36:21.282Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f1/1da77bb4c920aa30e82fa9b6ea065da3467977c2e5e032e38e66f1c57ffd/coverage-7.8.0-pp39.pp310.pp311-none-any.whl", hash = "sha256:b8194fb8e50d556d5849753de991d390c5a1edeeba50f68e3a9253fbd8bf8ccd", size = 203443, upload-time = "2025-03-30T20:36:41.959Z" }, + { url = "https://files.pythonhosted.org/packages/59/f1/4da7717f0063a222db253e7121bd6a56f6fb1ba439dcc36659088793347c/coverage-7.8.0-py3-none-any.whl", hash = "sha256:dbf364b4c5e7bae9250528167dfe40219b62e2d573c854d74be213e1e52069f7", size = 203435, upload-time = "2025-03-30T20:36:43.61Z" }, +] + +[package.optional-dependencies] +toml = [ + { name = "tomli", marker = "python_full_version <= '3.11'" }, ] [[package]] name = "distlib" version = "0.3.9" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923 } +sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923, upload-time = "2024-10-09T18:35:47.551Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973 }, + { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload-time = "2024-10-09T18:35:44.272Z" }, ] [[package]] name = "filelock" version = "3.18.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075 } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload-time = "2025-03-14T07:11:40.47Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215 }, + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload-time = "2025-03-14T07:11:39.145Z" }, ] [[package]] @@ -130,18 +151,18 @@ docs = [{ name = "pdoc", specifier = ">=15.0.0" }] name = "identify" version = "2.6.9" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9b/98/a71ab060daec766acc30fb47dfca219d03de34a70d616a79a38c6066c5bf/identify-2.6.9.tar.gz", hash = "sha256:d40dfe3142a1421d8518e3d3985ef5ac42890683e32306ad614a29490abeb6bf", size = 99249 } +sdist = { url = "https://files.pythonhosted.org/packages/9b/98/a71ab060daec766acc30fb47dfca219d03de34a70d616a79a38c6066c5bf/identify-2.6.9.tar.gz", hash = "sha256:d40dfe3142a1421d8518e3d3985ef5ac42890683e32306ad614a29490abeb6bf", size = 99249, upload-time = "2025-03-08T15:54:13.632Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/ce/0845144ed1f0e25db5e7a79c2354c1da4b5ce392b8966449d5db8dca18f1/identify-2.6.9-py2.py3-none-any.whl", hash = "sha256:c98b4322da415a8e5a70ff6e51fbc2d2932c015532d77e9f8537b4ba7813b150", size = 99101 }, + { url = "https://files.pythonhosted.org/packages/07/ce/0845144ed1f0e25db5e7a79c2354c1da4b5ce392b8966449d5db8dca18f1/identify-2.6.9-py2.py3-none-any.whl", hash = "sha256:c98b4322da415a8e5a70ff6e51fbc2d2932c015532d77e9f8537b4ba7813b150", size = 99101, upload-time = "2025-03-08T15:54:12.026Z" }, ] [[package]] name = "iniconfig" version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, ] [[package]] @@ -151,47 +172,57 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, ] [[package]] name = "markupsafe" version = "3.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 }, - { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 }, - { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 }, - { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 }, - { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 }, - { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 }, - { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 }, - { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, - { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, - { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, - { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, - { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, - { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, - { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, - { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, - { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, - { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, - { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, - { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, - { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, - { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, - { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, - { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, - { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, - { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, - { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, - { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, - { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, - { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, - { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353, upload-time = "2024-10-18T15:21:02.187Z" }, + { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392, upload-time = "2024-10-18T15:21:02.941Z" }, + { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984, upload-time = "2024-10-18T15:21:03.953Z" }, + { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120, upload-time = "2024-10-18T15:21:06.495Z" }, + { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032, upload-time = "2024-10-18T15:21:07.295Z" }, + { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057, upload-time = "2024-10-18T15:21:08.073Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359, upload-time = "2024-10-18T15:21:09.318Z" }, + { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306, upload-time = "2024-10-18T15:21:10.185Z" }, + { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094, upload-time = "2024-10-18T15:21:11.005Z" }, + { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521, upload-time = "2024-10-18T15:21:12.911Z" }, + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload-time = "2024-10-18T15:21:13.777Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload-time = "2024-10-18T15:21:14.822Z" }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload-time = "2024-10-18T15:21:15.642Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload-time = "2024-10-18T15:21:17.133Z" }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload-time = "2024-10-18T15:21:18.064Z" }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload-time = "2024-10-18T15:21:18.859Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload-time = "2024-10-18T15:21:19.671Z" }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload-time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload-time = "2024-10-18T15:21:24.577Z" }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload-time = "2024-10-18T15:21:25.382Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload-time = "2024-10-18T15:21:26.199Z" }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload-time = "2024-10-18T15:21:27.029Z" }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload-time = "2024-10-18T15:21:27.846Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload-time = "2024-10-18T15:21:28.744Z" }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload-time = "2024-10-18T15:21:29.545Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload-time = "2024-10-18T15:21:30.366Z" }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload-time = "2024-10-18T15:21:31.207Z" }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload-time = "2024-10-18T15:21:32.032Z" }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload-time = "2024-10-18T15:21:33.625Z" }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload-time = "2024-10-18T15:21:34.611Z" }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload-time = "2024-10-18T15:21:35.398Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload-time = "2024-10-18T15:21:36.231Z" }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload-time = "2024-10-18T15:21:37.073Z" }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload-time = "2024-10-18T15:21:37.932Z" }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload-time = "2024-10-18T15:21:39.799Z" }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload-time = "2024-10-18T15:21:40.813Z" }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload-time = "2024-10-18T15:21:41.814Z" }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload-time = "2024-10-18T15:21:42.784Z" }, ] [[package]] @@ -202,86 +233,102 @@ dependencies = [ { name = "mypy-extensions" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981 }, - { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175 }, - { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675 }, - { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020 }, - { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582 }, - { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614 }, - { url = "https://files.pythonhosted.org/packages/6a/9b/fd2e05d6ffff24d912f150b87db9e364fa8282045c875654ce7e32fffa66/mypy-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445", size = 10788592 }, - { url = "https://files.pythonhosted.org/packages/74/37/b246d711c28a03ead1fd906bbc7106659aed7c089d55fe40dd58db812628/mypy-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d", size = 9753611 }, - { url = "https://files.pythonhosted.org/packages/a6/ac/395808a92e10cfdac8003c3de9a2ab6dc7cde6c0d2a4df3df1b815ffd067/mypy-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5", size = 11438443 }, - { url = "https://files.pythonhosted.org/packages/d2/8b/801aa06445d2de3895f59e476f38f3f8d610ef5d6908245f07d002676cbf/mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036", size = 12402541 }, - { url = "https://files.pythonhosted.org/packages/c7/67/5a4268782eb77344cc613a4cf23540928e41f018a9a1ec4c6882baf20ab8/mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357", size = 12494348 }, - { url = "https://files.pythonhosted.org/packages/83/3e/57bb447f7bbbfaabf1712d96f9df142624a386d98fb026a761532526057e/mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf", size = 9373648 }, - { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777 }, +sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717, upload-time = "2025-02-05T03:50:34.655Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/bc/f6339726c627bd7ca1ce0fa56c9ae2d0144604a319e0e339bdadafbbb599/mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f", size = 10662338, upload-time = "2025-02-05T03:50:17.287Z" }, + { url = "https://files.pythonhosted.org/packages/e2/90/8dcf506ca1a09b0d17555cc00cd69aee402c203911410136cd716559efe7/mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5", size = 9787540, upload-time = "2025-02-05T03:49:51.21Z" }, + { url = "https://files.pythonhosted.org/packages/05/05/a10f9479681e5da09ef2f9426f650d7b550d4bafbef683b69aad1ba87457/mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e", size = 11538051, upload-time = "2025-02-05T03:50:20.885Z" }, + { url = "https://files.pythonhosted.org/packages/e9/9a/1f7d18b30edd57441a6411fcbc0c6869448d1a4bacbaee60656ac0fc29c8/mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c", size = 12286751, upload-time = "2025-02-05T03:49:42.408Z" }, + { url = "https://files.pythonhosted.org/packages/72/af/19ff499b6f1dafcaf56f9881f7a965ac2f474f69f6f618b5175b044299f5/mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f", size = 12421783, upload-time = "2025-02-05T03:49:07.707Z" }, + { url = "https://files.pythonhosted.org/packages/96/39/11b57431a1f686c1aed54bf794870efe0f6aeca11aca281a0bd87a5ad42c/mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f", size = 9265618, upload-time = "2025-02-05T03:49:54.581Z" }, + { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981, upload-time = "2025-02-05T03:50:28.25Z" }, + { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175, upload-time = "2025-02-05T03:50:13.411Z" }, + { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675, upload-time = "2025-02-05T03:50:31.421Z" }, + { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020, upload-time = "2025-02-05T03:48:48.705Z" }, + { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582, upload-time = "2025-02-05T03:49:03.628Z" }, + { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614, upload-time = "2025-02-05T03:50:00.313Z" }, + { url = "https://files.pythonhosted.org/packages/6a/9b/fd2e05d6ffff24d912f150b87db9e364fa8282045c875654ce7e32fffa66/mypy-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445", size = 10788592, upload-time = "2025-02-05T03:48:55.789Z" }, + { url = "https://files.pythonhosted.org/packages/74/37/b246d711c28a03ead1fd906bbc7106659aed7c089d55fe40dd58db812628/mypy-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d", size = 9753611, upload-time = "2025-02-05T03:48:44.581Z" }, + { url = "https://files.pythonhosted.org/packages/a6/ac/395808a92e10cfdac8003c3de9a2ab6dc7cde6c0d2a4df3df1b815ffd067/mypy-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5", size = 11438443, upload-time = "2025-02-05T03:49:25.514Z" }, + { url = "https://files.pythonhosted.org/packages/d2/8b/801aa06445d2de3895f59e476f38f3f8d610ef5d6908245f07d002676cbf/mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036", size = 12402541, upload-time = "2025-02-05T03:49:57.623Z" }, + { url = "https://files.pythonhosted.org/packages/c7/67/5a4268782eb77344cc613a4cf23540928e41f018a9a1ec4c6882baf20ab8/mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357", size = 12494348, upload-time = "2025-02-05T03:48:52.361Z" }, + { url = "https://files.pythonhosted.org/packages/83/3e/57bb447f7bbbfaabf1712d96f9df142624a386d98fb026a761532526057e/mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf", size = 9373648, upload-time = "2025-02-05T03:49:11.395Z" }, + { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777, upload-time = "2025-02-05T03:50:08.348Z" }, ] [[package]] name = "mypy-extensions" version = "1.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433 } +sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433, upload-time = "2023-02-04T12:11:27.157Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695 }, + { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695, upload-time = "2023-02-04T12:11:25.002Z" }, ] [[package]] name = "nodeenv" version = "1.9.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437 } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload-time = "2024-06-04T18:44:11.171Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload-time = "2024-06-04T18:44:08.352Z" }, ] [[package]] name = "numpy" version = "2.2.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e1/78/31103410a57bc2c2b93a3597340a8119588571f6a4539067546cb9a0bfac/numpy-2.2.4.tar.gz", hash = "sha256:9ba03692a45d3eef66559efe1d1096c4b9b75c0986b5dff5530c378fb8331d4f", size = 20270701 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/30/182db21d4f2a95904cec1a6f779479ea1ac07c0647f064dea454ec650c42/numpy-2.2.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a7b9084668aa0f64e64bd00d27ba5146ef1c3a8835f3bd912e7a9e01326804c4", size = 20947156 }, - { url = "https://files.pythonhosted.org/packages/24/6d/9483566acfbda6c62c6bc74b6e981c777229d2af93c8eb2469b26ac1b7bc/numpy-2.2.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dbe512c511956b893d2dacd007d955a3f03d555ae05cfa3ff1c1ff6df8851854", size = 14133092 }, - { url = "https://files.pythonhosted.org/packages/27/f6/dba8a258acbf9d2bed2525cdcbb9493ef9bae5199d7a9cb92ee7e9b2aea6/numpy-2.2.4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:bb649f8b207ab07caebba230d851b579a3c8711a851d29efe15008e31bb4de24", size = 5163515 }, - { url = "https://files.pythonhosted.org/packages/62/30/82116199d1c249446723c68f2c9da40d7f062551036f50b8c4caa42ae252/numpy-2.2.4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:f34dc300df798742b3d06515aa2a0aee20941c13579d7a2f2e10af01ae4901ee", size = 6696558 }, - { url = "https://files.pythonhosted.org/packages/0e/b2/54122b3c6df5df3e87582b2e9430f1bdb63af4023c739ba300164c9ae503/numpy-2.2.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3f7ac96b16955634e223b579a3e5798df59007ca43e8d451a0e6a50f6bfdfba", size = 14084742 }, - { url = "https://files.pythonhosted.org/packages/02/e2/e2cbb8d634151aab9528ef7b8bab52ee4ab10e076509285602c2a3a686e0/numpy-2.2.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f92084defa704deadd4e0a5ab1dc52d8ac9e8a8ef617f3fbb853e79b0ea3592", size = 16134051 }, - { url = "https://files.pythonhosted.org/packages/8e/21/efd47800e4affc993e8be50c1b768de038363dd88865920439ef7b422c60/numpy-2.2.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7a4e84a6283b36632e2a5b56e121961f6542ab886bc9e12f8f9818b3c266bfbb", size = 15578972 }, - { url = "https://files.pythonhosted.org/packages/04/1e/f8bb88f6157045dd5d9b27ccf433d016981032690969aa5c19e332b138c0/numpy-2.2.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:11c43995255eb4127115956495f43e9343736edb7fcdb0d973defd9de14cd84f", size = 17898106 }, - { url = "https://files.pythonhosted.org/packages/2b/93/df59a5a3897c1f036ae8ff845e45f4081bb06943039ae28a3c1c7c780f22/numpy-2.2.4-cp312-cp312-win32.whl", hash = "sha256:65ef3468b53269eb5fdb3a5c09508c032b793da03251d5f8722b1194f1790c00", size = 6311190 }, - { url = "https://files.pythonhosted.org/packages/46/69/8c4f928741c2a8efa255fdc7e9097527c6dc4e4df147e3cadc5d9357ce85/numpy-2.2.4-cp312-cp312-win_amd64.whl", hash = "sha256:2aad3c17ed2ff455b8eaafe06bcdae0062a1db77cb99f4b9cbb5f4ecb13c5146", size = 12644305 }, - { url = "https://files.pythonhosted.org/packages/2a/d0/bd5ad792e78017f5decfb2ecc947422a3669a34f775679a76317af671ffc/numpy-2.2.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cf4e5c6a278d620dee9ddeb487dc6a860f9b199eadeecc567f777daace1e9e7", size = 20933623 }, - { url = "https://files.pythonhosted.org/packages/c3/bc/2b3545766337b95409868f8e62053135bdc7fa2ce630aba983a2aa60b559/numpy-2.2.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1974afec0b479e50438fc3648974268f972e2d908ddb6d7fb634598cdb8260a0", size = 14148681 }, - { url = "https://files.pythonhosted.org/packages/6a/70/67b24d68a56551d43a6ec9fe8c5f91b526d4c1a46a6387b956bf2d64744e/numpy-2.2.4-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:79bd5f0a02aa16808fcbc79a9a376a147cc1045f7dfe44c6e7d53fa8b8a79392", size = 5148759 }, - { url = "https://files.pythonhosted.org/packages/1c/8b/e2fc8a75fcb7be12d90b31477c9356c0cbb44abce7ffb36be39a0017afad/numpy-2.2.4-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:3387dd7232804b341165cedcb90694565a6015433ee076c6754775e85d86f1fc", size = 6683092 }, - { url = "https://files.pythonhosted.org/packages/13/73/41b7b27f169ecf368b52533edb72e56a133f9e86256e809e169362553b49/numpy-2.2.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f527d8fdb0286fd2fd97a2a96c6be17ba4232da346931d967a0630050dfd298", size = 14081422 }, - { url = "https://files.pythonhosted.org/packages/4b/04/e208ff3ae3ddfbafc05910f89546382f15a3f10186b1f56bd99f159689c2/numpy-2.2.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bce43e386c16898b91e162e5baaad90c4b06f9dcbe36282490032cec98dc8ae7", size = 16132202 }, - { url = "https://files.pythonhosted.org/packages/fe/bc/2218160574d862d5e55f803d88ddcad88beff94791f9c5f86d67bd8fbf1c/numpy-2.2.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:31504f970f563d99f71a3512d0c01a645b692b12a63630d6aafa0939e52361e6", size = 15573131 }, - { url = "https://files.pythonhosted.org/packages/a5/78/97c775bc4f05abc8a8426436b7cb1be806a02a2994b195945600855e3a25/numpy-2.2.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:81413336ef121a6ba746892fad881a83351ee3e1e4011f52e97fba79233611fd", size = 17894270 }, - { url = "https://files.pythonhosted.org/packages/b9/eb/38c06217a5f6de27dcb41524ca95a44e395e6a1decdc0c99fec0832ce6ae/numpy-2.2.4-cp313-cp313-win32.whl", hash = "sha256:f486038e44caa08dbd97275a9a35a283a8f1d2f0ee60ac260a1790e76660833c", size = 6308141 }, - { url = "https://files.pythonhosted.org/packages/52/17/d0dd10ab6d125c6d11ffb6dfa3423c3571befab8358d4f85cd4471964fcd/numpy-2.2.4-cp313-cp313-win_amd64.whl", hash = "sha256:207a2b8441cc8b6a2a78c9ddc64d00d20c303d79fba08c577752f080c4007ee3", size = 12636885 }, - { url = "https://files.pythonhosted.org/packages/fa/e2/793288ede17a0fdc921172916efb40f3cbc2aa97e76c5c84aba6dc7e8747/numpy-2.2.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8120575cb4882318c791f839a4fd66161a6fa46f3f0a5e613071aae35b5dd8f8", size = 20961829 }, - { url = "https://files.pythonhosted.org/packages/3a/75/bb4573f6c462afd1ea5cbedcc362fe3e9bdbcc57aefd37c681be1155fbaa/numpy-2.2.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a761ba0fa886a7bb33c6c8f6f20213735cb19642c580a931c625ee377ee8bd39", size = 14161419 }, - { url = "https://files.pythonhosted.org/packages/03/68/07b4cd01090ca46c7a336958b413cdbe75002286295f2addea767b7f16c9/numpy-2.2.4-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:ac0280f1ba4a4bfff363a99a6aceed4f8e123f8a9b234c89140f5e894e452ecd", size = 5196414 }, - { url = "https://files.pythonhosted.org/packages/a5/fd/d4a29478d622fedff5c4b4b4cedfc37a00691079623c0575978d2446db9e/numpy-2.2.4-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:879cf3a9a2b53a4672a168c21375166171bc3932b7e21f622201811c43cdd3b0", size = 6709379 }, - { url = "https://files.pythonhosted.org/packages/41/78/96dddb75bb9be730b87c72f30ffdd62611aba234e4e460576a068c98eff6/numpy-2.2.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f05d4198c1bacc9124018109c5fba2f3201dbe7ab6e92ff100494f236209c960", size = 14051725 }, - { url = "https://files.pythonhosted.org/packages/00/06/5306b8199bffac2a29d9119c11f457f6c7d41115a335b78d3f86fad4dbe8/numpy-2.2.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2f085ce2e813a50dfd0e01fbfc0c12bbe5d2063d99f8b29da30e544fb6483b8", size = 16101638 }, - { url = "https://files.pythonhosted.org/packages/fa/03/74c5b631ee1ded596945c12027649e6344614144369fd3ec1aaced782882/numpy-2.2.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:92bda934a791c01d6d9d8e038363c50918ef7c40601552a58ac84c9613a665bc", size = 15571717 }, - { url = "https://files.pythonhosted.org/packages/cb/dc/4fc7c0283abe0981e3b89f9b332a134e237dd476b0c018e1e21083310c31/numpy-2.2.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ee4d528022f4c5ff67332469e10efe06a267e32f4067dc76bb7e2cddf3cd25ff", size = 17879998 }, - { url = "https://files.pythonhosted.org/packages/e5/2b/878576190c5cfa29ed896b518cc516aecc7c98a919e20706c12480465f43/numpy-2.2.4-cp313-cp313t-win32.whl", hash = "sha256:05c076d531e9998e7e694c36e8b349969c56eadd2cdcd07242958489d79a7286", size = 6366896 }, - { url = "https://files.pythonhosted.org/packages/3e/05/eb7eec66b95cf697f08c754ef26c3549d03ebd682819f794cb039574a0a6/numpy-2.2.4-cp313-cp313t-win_amd64.whl", hash = "sha256:188dcbca89834cc2e14eb2f106c96d6d46f200fe0200310fc29089657379c58d", size = 12739119 }, +sdist = { url = "https://files.pythonhosted.org/packages/e1/78/31103410a57bc2c2b93a3597340a8119588571f6a4539067546cb9a0bfac/numpy-2.2.4.tar.gz", hash = "sha256:9ba03692a45d3eef66559efe1d1096c4b9b75c0986b5dff5530c378fb8331d4f", size = 20270701, upload-time = "2025-03-16T18:27:00.648Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/16/fb/09e778ee3a8ea0d4dc8329cca0a9c9e65fed847d08e37eba74cb7ed4b252/numpy-2.2.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e9e0a277bb2eb5d8a7407e14688b85fd8ad628ee4e0c7930415687b6564207a4", size = 21254989, upload-time = "2025-03-16T18:06:04.092Z" }, + { url = "https://files.pythonhosted.org/packages/a2/0a/1212befdbecab5d80eca3cde47d304cad986ad4eec7d85a42e0b6d2cc2ef/numpy-2.2.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9eeea959168ea555e556b8188da5fa7831e21d91ce031e95ce23747b7609f8a4", size = 14425910, upload-time = "2025-03-16T18:06:29.062Z" }, + { url = "https://files.pythonhosted.org/packages/2b/3e/e7247c1d4f15086bb106c8d43c925b0b2ea20270224f5186fa48d4fb5cbd/numpy-2.2.4-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:bd3ad3b0a40e713fc68f99ecfd07124195333f1e689387c180813f0e94309d6f", size = 5426490, upload-time = "2025-03-16T18:06:39.901Z" }, + { url = "https://files.pythonhosted.org/packages/5d/fa/aa7cd6be51419b894c5787a8a93c3302a1ed4f82d35beb0613ec15bdd0e2/numpy-2.2.4-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:cf28633d64294969c019c6df4ff37f5698e8326db68cc2b66576a51fad634880", size = 6967754, upload-time = "2025-03-16T18:06:52.658Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ee/96457c943265de9fadeb3d2ffdbab003f7fba13d971084a9876affcda095/numpy-2.2.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fa8fa7697ad1646b5c93de1719965844e004fcad23c91228aca1cf0800044a1", size = 14373079, upload-time = "2025-03-16T18:07:16.297Z" }, + { url = "https://files.pythonhosted.org/packages/c5/5c/ceefca458559f0ccc7a982319f37ed07b0d7b526964ae6cc61f8ad1b6119/numpy-2.2.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4162988a360a29af158aeb4a2f4f09ffed6a969c9776f8f3bdee9b06a8ab7e5", size = 16428819, upload-time = "2025-03-16T18:07:44.188Z" }, + { url = "https://files.pythonhosted.org/packages/22/31/9b2ac8eee99e001eb6add9fa27514ef5e9faf176169057a12860af52704c/numpy-2.2.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:892c10d6a73e0f14935c31229e03325a7b3093fafd6ce0af704be7f894d95687", size = 15881470, upload-time = "2025-03-16T18:08:11.545Z" }, + { url = "https://files.pythonhosted.org/packages/f0/dc/8569b5f25ff30484b555ad8a3f537e0225d091abec386c9420cf5f7a2976/numpy-2.2.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:db1f1c22173ac1c58db249ae48aa7ead29f534b9a948bc56828337aa84a32ed6", size = 18218144, upload-time = "2025-03-16T18:08:42.042Z" }, + { url = "https://files.pythonhosted.org/packages/5e/05/463c023a39bdeb9bb43a99e7dee2c664cb68d5bb87d14f92482b9f6011cc/numpy-2.2.4-cp311-cp311-win32.whl", hash = "sha256:ea2bb7e2ae9e37d96835b3576a4fa4b3a97592fbea8ef7c3587078b0068b8f09", size = 6606368, upload-time = "2025-03-16T18:08:55.074Z" }, + { url = "https://files.pythonhosted.org/packages/8b/72/10c1d2d82101c468a28adc35de6c77b308f288cfd0b88e1070f15b98e00c/numpy-2.2.4-cp311-cp311-win_amd64.whl", hash = "sha256:f7de08cbe5551911886d1ab60de58448c6df0f67d9feb7d1fb21e9875ef95e91", size = 12947526, upload-time = "2025-03-16T18:09:16.844Z" }, + { url = "https://files.pythonhosted.org/packages/a2/30/182db21d4f2a95904cec1a6f779479ea1ac07c0647f064dea454ec650c42/numpy-2.2.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a7b9084668aa0f64e64bd00d27ba5146ef1c3a8835f3bd912e7a9e01326804c4", size = 20947156, upload-time = "2025-03-16T18:09:51.975Z" }, + { url = "https://files.pythonhosted.org/packages/24/6d/9483566acfbda6c62c6bc74b6e981c777229d2af93c8eb2469b26ac1b7bc/numpy-2.2.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dbe512c511956b893d2dacd007d955a3f03d555ae05cfa3ff1c1ff6df8851854", size = 14133092, upload-time = "2025-03-16T18:10:16.329Z" }, + { url = "https://files.pythonhosted.org/packages/27/f6/dba8a258acbf9d2bed2525cdcbb9493ef9bae5199d7a9cb92ee7e9b2aea6/numpy-2.2.4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:bb649f8b207ab07caebba230d851b579a3c8711a851d29efe15008e31bb4de24", size = 5163515, upload-time = "2025-03-16T18:10:26.19Z" }, + { url = "https://files.pythonhosted.org/packages/62/30/82116199d1c249446723c68f2c9da40d7f062551036f50b8c4caa42ae252/numpy-2.2.4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:f34dc300df798742b3d06515aa2a0aee20941c13579d7a2f2e10af01ae4901ee", size = 6696558, upload-time = "2025-03-16T18:10:38.996Z" }, + { url = "https://files.pythonhosted.org/packages/0e/b2/54122b3c6df5df3e87582b2e9430f1bdb63af4023c739ba300164c9ae503/numpy-2.2.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3f7ac96b16955634e223b579a3e5798df59007ca43e8d451a0e6a50f6bfdfba", size = 14084742, upload-time = "2025-03-16T18:11:02.76Z" }, + { url = "https://files.pythonhosted.org/packages/02/e2/e2cbb8d634151aab9528ef7b8bab52ee4ab10e076509285602c2a3a686e0/numpy-2.2.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f92084defa704deadd4e0a5ab1dc52d8ac9e8a8ef617f3fbb853e79b0ea3592", size = 16134051, upload-time = "2025-03-16T18:11:32.767Z" }, + { url = "https://files.pythonhosted.org/packages/8e/21/efd47800e4affc993e8be50c1b768de038363dd88865920439ef7b422c60/numpy-2.2.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7a4e84a6283b36632e2a5b56e121961f6542ab886bc9e12f8f9818b3c266bfbb", size = 15578972, upload-time = "2025-03-16T18:11:59.877Z" }, + { url = "https://files.pythonhosted.org/packages/04/1e/f8bb88f6157045dd5d9b27ccf433d016981032690969aa5c19e332b138c0/numpy-2.2.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:11c43995255eb4127115956495f43e9343736edb7fcdb0d973defd9de14cd84f", size = 17898106, upload-time = "2025-03-16T18:12:31.487Z" }, + { url = "https://files.pythonhosted.org/packages/2b/93/df59a5a3897c1f036ae8ff845e45f4081bb06943039ae28a3c1c7c780f22/numpy-2.2.4-cp312-cp312-win32.whl", hash = "sha256:65ef3468b53269eb5fdb3a5c09508c032b793da03251d5f8722b1194f1790c00", size = 6311190, upload-time = "2025-03-16T18:12:44.46Z" }, + { url = "https://files.pythonhosted.org/packages/46/69/8c4f928741c2a8efa255fdc7e9097527c6dc4e4df147e3cadc5d9357ce85/numpy-2.2.4-cp312-cp312-win_amd64.whl", hash = "sha256:2aad3c17ed2ff455b8eaafe06bcdae0062a1db77cb99f4b9cbb5f4ecb13c5146", size = 12644305, upload-time = "2025-03-16T18:13:06.864Z" }, + { url = "https://files.pythonhosted.org/packages/2a/d0/bd5ad792e78017f5decfb2ecc947422a3669a34f775679a76317af671ffc/numpy-2.2.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cf4e5c6a278d620dee9ddeb487dc6a860f9b199eadeecc567f777daace1e9e7", size = 20933623, upload-time = "2025-03-16T18:13:43.231Z" }, + { url = "https://files.pythonhosted.org/packages/c3/bc/2b3545766337b95409868f8e62053135bdc7fa2ce630aba983a2aa60b559/numpy-2.2.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1974afec0b479e50438fc3648974268f972e2d908ddb6d7fb634598cdb8260a0", size = 14148681, upload-time = "2025-03-16T18:14:08.031Z" }, + { url = "https://files.pythonhosted.org/packages/6a/70/67b24d68a56551d43a6ec9fe8c5f91b526d4c1a46a6387b956bf2d64744e/numpy-2.2.4-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:79bd5f0a02aa16808fcbc79a9a376a147cc1045f7dfe44c6e7d53fa8b8a79392", size = 5148759, upload-time = "2025-03-16T18:14:18.613Z" }, + { url = "https://files.pythonhosted.org/packages/1c/8b/e2fc8a75fcb7be12d90b31477c9356c0cbb44abce7ffb36be39a0017afad/numpy-2.2.4-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:3387dd7232804b341165cedcb90694565a6015433ee076c6754775e85d86f1fc", size = 6683092, upload-time = "2025-03-16T18:14:31.386Z" }, + { url = "https://files.pythonhosted.org/packages/13/73/41b7b27f169ecf368b52533edb72e56a133f9e86256e809e169362553b49/numpy-2.2.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f527d8fdb0286fd2fd97a2a96c6be17ba4232da346931d967a0630050dfd298", size = 14081422, upload-time = "2025-03-16T18:14:54.83Z" }, + { url = "https://files.pythonhosted.org/packages/4b/04/e208ff3ae3ddfbafc05910f89546382f15a3f10186b1f56bd99f159689c2/numpy-2.2.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bce43e386c16898b91e162e5baaad90c4b06f9dcbe36282490032cec98dc8ae7", size = 16132202, upload-time = "2025-03-16T18:15:22.035Z" }, + { url = "https://files.pythonhosted.org/packages/fe/bc/2218160574d862d5e55f803d88ddcad88beff94791f9c5f86d67bd8fbf1c/numpy-2.2.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:31504f970f563d99f71a3512d0c01a645b692b12a63630d6aafa0939e52361e6", size = 15573131, upload-time = "2025-03-16T18:15:48.546Z" }, + { url = "https://files.pythonhosted.org/packages/a5/78/97c775bc4f05abc8a8426436b7cb1be806a02a2994b195945600855e3a25/numpy-2.2.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:81413336ef121a6ba746892fad881a83351ee3e1e4011f52e97fba79233611fd", size = 17894270, upload-time = "2025-03-16T18:16:20.274Z" }, + { url = "https://files.pythonhosted.org/packages/b9/eb/38c06217a5f6de27dcb41524ca95a44e395e6a1decdc0c99fec0832ce6ae/numpy-2.2.4-cp313-cp313-win32.whl", hash = "sha256:f486038e44caa08dbd97275a9a35a283a8f1d2f0ee60ac260a1790e76660833c", size = 6308141, upload-time = "2025-03-16T18:20:15.297Z" }, + { url = "https://files.pythonhosted.org/packages/52/17/d0dd10ab6d125c6d11ffb6dfa3423c3571befab8358d4f85cd4471964fcd/numpy-2.2.4-cp313-cp313-win_amd64.whl", hash = "sha256:207a2b8441cc8b6a2a78c9ddc64d00d20c303d79fba08c577752f080c4007ee3", size = 12636885, upload-time = "2025-03-16T18:20:36.982Z" }, + { url = "https://files.pythonhosted.org/packages/fa/e2/793288ede17a0fdc921172916efb40f3cbc2aa97e76c5c84aba6dc7e8747/numpy-2.2.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8120575cb4882318c791f839a4fd66161a6fa46f3f0a5e613071aae35b5dd8f8", size = 20961829, upload-time = "2025-03-16T18:16:56.191Z" }, + { url = "https://files.pythonhosted.org/packages/3a/75/bb4573f6c462afd1ea5cbedcc362fe3e9bdbcc57aefd37c681be1155fbaa/numpy-2.2.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a761ba0fa886a7bb33c6c8f6f20213735cb19642c580a931c625ee377ee8bd39", size = 14161419, upload-time = "2025-03-16T18:17:22.811Z" }, + { url = "https://files.pythonhosted.org/packages/03/68/07b4cd01090ca46c7a336958b413cdbe75002286295f2addea767b7f16c9/numpy-2.2.4-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:ac0280f1ba4a4bfff363a99a6aceed4f8e123f8a9b234c89140f5e894e452ecd", size = 5196414, upload-time = "2025-03-16T18:17:34.066Z" }, + { url = "https://files.pythonhosted.org/packages/a5/fd/d4a29478d622fedff5c4b4b4cedfc37a00691079623c0575978d2446db9e/numpy-2.2.4-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:879cf3a9a2b53a4672a168c21375166171bc3932b7e21f622201811c43cdd3b0", size = 6709379, upload-time = "2025-03-16T18:17:47.466Z" }, + { url = "https://files.pythonhosted.org/packages/41/78/96dddb75bb9be730b87c72f30ffdd62611aba234e4e460576a068c98eff6/numpy-2.2.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f05d4198c1bacc9124018109c5fba2f3201dbe7ab6e92ff100494f236209c960", size = 14051725, upload-time = "2025-03-16T18:18:11.904Z" }, + { url = "https://files.pythonhosted.org/packages/00/06/5306b8199bffac2a29d9119c11f457f6c7d41115a335b78d3f86fad4dbe8/numpy-2.2.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2f085ce2e813a50dfd0e01fbfc0c12bbe5d2063d99f8b29da30e544fb6483b8", size = 16101638, upload-time = "2025-03-16T18:18:40.749Z" }, + { url = "https://files.pythonhosted.org/packages/fa/03/74c5b631ee1ded596945c12027649e6344614144369fd3ec1aaced782882/numpy-2.2.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:92bda934a791c01d6d9d8e038363c50918ef7c40601552a58ac84c9613a665bc", size = 15571717, upload-time = "2025-03-16T18:19:04.512Z" }, + { url = "https://files.pythonhosted.org/packages/cb/dc/4fc7c0283abe0981e3b89f9b332a134e237dd476b0c018e1e21083310c31/numpy-2.2.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ee4d528022f4c5ff67332469e10efe06a267e32f4067dc76bb7e2cddf3cd25ff", size = 17879998, upload-time = "2025-03-16T18:19:32.52Z" }, + { url = "https://files.pythonhosted.org/packages/e5/2b/878576190c5cfa29ed896b518cc516aecc7c98a919e20706c12480465f43/numpy-2.2.4-cp313-cp313t-win32.whl", hash = "sha256:05c076d531e9998e7e694c36e8b349969c56eadd2cdcd07242958489d79a7286", size = 6366896, upload-time = "2025-03-16T18:19:43.55Z" }, + { url = "https://files.pythonhosted.org/packages/3e/05/eb7eec66b95cf697f08c754ef26c3549d03ebd682819f794cb039574a0a6/numpy-2.2.4-cp313-cp313t-win_amd64.whl", hash = "sha256:188dcbca89834cc2e14eb2f106c96d6d46f200fe0200310fc29089657379c58d", size = 12739119, upload-time = "2025-03-16T18:20:03.94Z" }, ] [[package]] name = "packaging" version = "24.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } +sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950, upload-time = "2024-11-08T09:47:47.202Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, + { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451, upload-time = "2024-11-08T09:47:44.722Z" }, ] [[package]] @@ -294,28 +341,35 @@ dependencies = [ { name = "pytz" }, { name = "tzdata" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9c/d6/9f8431bacc2e19dca897724cd097b1bb224a6ad5433784a44b587c7c13af/pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667", size = 4399213 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/17/a3/fb2734118db0af37ea7433f57f722c0a56687e14b14690edff0cdb4b7e58/pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9", size = 12529893 }, - { url = "https://files.pythonhosted.org/packages/e1/0c/ad295fd74bfac85358fd579e271cded3ac969de81f62dd0142c426b9da91/pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4", size = 11363475 }, - { url = "https://files.pythonhosted.org/packages/c6/2a/4bba3f03f7d07207481fed47f5b35f556c7441acddc368ec43d6643c5777/pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3", size = 15188645 }, - { url = "https://files.pythonhosted.org/packages/38/f8/d8fddee9ed0d0c0f4a2132c1dfcf0e3e53265055da8df952a53e7eaf178c/pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319", size = 12739445 }, - { url = "https://files.pythonhosted.org/packages/20/e8/45a05d9c39d2cea61ab175dbe6a2de1d05b679e8de2011da4ee190d7e748/pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8", size = 16359235 }, - { url = "https://files.pythonhosted.org/packages/1d/99/617d07a6a5e429ff90c90da64d428516605a1ec7d7bea494235e1c3882de/pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a", size = 14056756 }, - { url = "https://files.pythonhosted.org/packages/29/d4/1244ab8edf173a10fd601f7e13b9566c1b525c4f365d6bee918e68381889/pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13", size = 11504248 }, - { url = "https://files.pythonhosted.org/packages/64/22/3b8f4e0ed70644e85cfdcd57454686b9057c6c38d2f74fe4b8bc2527214a/pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015", size = 12477643 }, - { url = "https://files.pythonhosted.org/packages/e4/93/b3f5d1838500e22c8d793625da672f3eec046b1a99257666c94446969282/pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28", size = 11281573 }, - { url = "https://files.pythonhosted.org/packages/f5/94/6c79b07f0e5aab1dcfa35a75f4817f5c4f677931d4234afcd75f0e6a66ca/pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0", size = 15196085 }, - { url = "https://files.pythonhosted.org/packages/e8/31/aa8da88ca0eadbabd0a639788a6da13bb2ff6edbbb9f29aa786450a30a91/pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24", size = 12711809 }, - { url = "https://files.pythonhosted.org/packages/ee/7c/c6dbdb0cb2a4344cacfb8de1c5808ca885b2e4dcfde8008266608f9372af/pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659", size = 16356316 }, - { url = "https://files.pythonhosted.org/packages/57/b7/8b757e7d92023b832869fa8881a992696a0bfe2e26f72c9ae9f255988d42/pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb", size = 14022055 }, - { url = "https://files.pythonhosted.org/packages/3b/bc/4b18e2b8c002572c5a441a64826252ce5da2aa738855747247a971988043/pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d", size = 11481175 }, - { url = "https://files.pythonhosted.org/packages/76/a3/a5d88146815e972d40d19247b2c162e88213ef51c7c25993942c39dbf41d/pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468", size = 12615650 }, - { url = "https://files.pythonhosted.org/packages/9c/8c/f0fd18f6140ddafc0c24122c8a964e48294acc579d47def376fef12bcb4a/pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18", size = 11290177 }, - { url = "https://files.pythonhosted.org/packages/ed/f9/e995754eab9c0f14c6777401f7eece0943840b7a9fc932221c19d1abee9f/pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2", size = 14651526 }, - { url = "https://files.pythonhosted.org/packages/25/b0/98d6ae2e1abac4f35230aa756005e8654649d305df9a28b16b9ae4353bff/pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4", size = 11871013 }, - { url = "https://files.pythonhosted.org/packages/cc/57/0f72a10f9db6a4628744c8e8f0df4e6e21de01212c7c981d31e50ffc8328/pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d", size = 15711620 }, - { url = "https://files.pythonhosted.org/packages/ab/5f/b38085618b950b79d2d9164a711c52b10aefc0ae6833b96f626b7021b2ed/pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a", size = 13098436 }, +sdist = { url = "https://files.pythonhosted.org/packages/9c/d6/9f8431bacc2e19dca897724cd097b1bb224a6ad5433784a44b587c7c13af/pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667", size = 4399213, upload-time = "2024-09-20T13:10:04.827Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/44/d9502bf0ed197ba9bf1103c9867d5904ddcaf869e52329787fc54ed70cc8/pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039", size = 12602222, upload-time = "2024-09-20T13:08:56.254Z" }, + { url = "https://files.pythonhosted.org/packages/52/11/9eac327a38834f162b8250aab32a6781339c69afe7574368fffe46387edf/pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd", size = 11321274, upload-time = "2024-09-20T13:08:58.645Z" }, + { url = "https://files.pythonhosted.org/packages/45/fb/c4beeb084718598ba19aa9f5abbc8aed8b42f90930da861fcb1acdb54c3a/pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698", size = 15579836, upload-time = "2024-09-20T19:01:57.571Z" }, + { url = "https://files.pythonhosted.org/packages/cd/5f/4dba1d39bb9c38d574a9a22548c540177f78ea47b32f99c0ff2ec499fac5/pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc", size = 13058505, upload-time = "2024-09-20T13:09:01.501Z" }, + { url = "https://files.pythonhosted.org/packages/b9/57/708135b90391995361636634df1f1130d03ba456e95bcf576fada459115a/pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3", size = 16744420, upload-time = "2024-09-20T19:02:00.678Z" }, + { url = "https://files.pythonhosted.org/packages/86/4a/03ed6b7ee323cf30404265c284cee9c65c56a212e0a08d9ee06984ba2240/pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32", size = 14440457, upload-time = "2024-09-20T13:09:04.105Z" }, + { url = "https://files.pythonhosted.org/packages/ed/8c/87ddf1fcb55d11f9f847e3c69bb1c6f8e46e2f40ab1a2d2abadb2401b007/pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5", size = 11617166, upload-time = "2024-09-20T13:09:06.917Z" }, + { url = "https://files.pythonhosted.org/packages/17/a3/fb2734118db0af37ea7433f57f722c0a56687e14b14690edff0cdb4b7e58/pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9", size = 12529893, upload-time = "2024-09-20T13:09:09.655Z" }, + { url = "https://files.pythonhosted.org/packages/e1/0c/ad295fd74bfac85358fd579e271cded3ac969de81f62dd0142c426b9da91/pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4", size = 11363475, upload-time = "2024-09-20T13:09:14.718Z" }, + { url = "https://files.pythonhosted.org/packages/c6/2a/4bba3f03f7d07207481fed47f5b35f556c7441acddc368ec43d6643c5777/pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3", size = 15188645, upload-time = "2024-09-20T19:02:03.88Z" }, + { url = "https://files.pythonhosted.org/packages/38/f8/d8fddee9ed0d0c0f4a2132c1dfcf0e3e53265055da8df952a53e7eaf178c/pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319", size = 12739445, upload-time = "2024-09-20T13:09:17.621Z" }, + { url = "https://files.pythonhosted.org/packages/20/e8/45a05d9c39d2cea61ab175dbe6a2de1d05b679e8de2011da4ee190d7e748/pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8", size = 16359235, upload-time = "2024-09-20T19:02:07.094Z" }, + { url = "https://files.pythonhosted.org/packages/1d/99/617d07a6a5e429ff90c90da64d428516605a1ec7d7bea494235e1c3882de/pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a", size = 14056756, upload-time = "2024-09-20T13:09:20.474Z" }, + { url = "https://files.pythonhosted.org/packages/29/d4/1244ab8edf173a10fd601f7e13b9566c1b525c4f365d6bee918e68381889/pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13", size = 11504248, upload-time = "2024-09-20T13:09:23.137Z" }, + { url = "https://files.pythonhosted.org/packages/64/22/3b8f4e0ed70644e85cfdcd57454686b9057c6c38d2f74fe4b8bc2527214a/pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015", size = 12477643, upload-time = "2024-09-20T13:09:25.522Z" }, + { url = "https://files.pythonhosted.org/packages/e4/93/b3f5d1838500e22c8d793625da672f3eec046b1a99257666c94446969282/pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28", size = 11281573, upload-time = "2024-09-20T13:09:28.012Z" }, + { url = "https://files.pythonhosted.org/packages/f5/94/6c79b07f0e5aab1dcfa35a75f4817f5c4f677931d4234afcd75f0e6a66ca/pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0", size = 15196085, upload-time = "2024-09-20T19:02:10.451Z" }, + { url = "https://files.pythonhosted.org/packages/e8/31/aa8da88ca0eadbabd0a639788a6da13bb2ff6edbbb9f29aa786450a30a91/pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24", size = 12711809, upload-time = "2024-09-20T13:09:30.814Z" }, + { url = "https://files.pythonhosted.org/packages/ee/7c/c6dbdb0cb2a4344cacfb8de1c5808ca885b2e4dcfde8008266608f9372af/pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659", size = 16356316, upload-time = "2024-09-20T19:02:13.825Z" }, + { url = "https://files.pythonhosted.org/packages/57/b7/8b757e7d92023b832869fa8881a992696a0bfe2e26f72c9ae9f255988d42/pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb", size = 14022055, upload-time = "2024-09-20T13:09:33.462Z" }, + { url = "https://files.pythonhosted.org/packages/3b/bc/4b18e2b8c002572c5a441a64826252ce5da2aa738855747247a971988043/pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d", size = 11481175, upload-time = "2024-09-20T13:09:35.871Z" }, + { url = "https://files.pythonhosted.org/packages/76/a3/a5d88146815e972d40d19247b2c162e88213ef51c7c25993942c39dbf41d/pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468", size = 12615650, upload-time = "2024-09-20T13:09:38.685Z" }, + { url = "https://files.pythonhosted.org/packages/9c/8c/f0fd18f6140ddafc0c24122c8a964e48294acc579d47def376fef12bcb4a/pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18", size = 11290177, upload-time = "2024-09-20T13:09:41.141Z" }, + { url = "https://files.pythonhosted.org/packages/ed/f9/e995754eab9c0f14c6777401f7eece0943840b7a9fc932221c19d1abee9f/pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2", size = 14651526, upload-time = "2024-09-20T19:02:16.905Z" }, + { url = "https://files.pythonhosted.org/packages/25/b0/98d6ae2e1abac4f35230aa756005e8654649d305df9a28b16b9ae4353bff/pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4", size = 11871013, upload-time = "2024-09-20T13:09:44.39Z" }, + { url = "https://files.pythonhosted.org/packages/cc/57/0f72a10f9db6a4628744c8e8f0df4e6e21de01212c7c981d31e50ffc8328/pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d", size = 15711620, upload-time = "2024-09-20T19:02:20.639Z" }, + { url = "https://files.pythonhosted.org/packages/ab/5f/b38085618b950b79d2d9164a711c52b10aefc0ae6833b96f626b7021b2ed/pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a", size = 13098436, upload-time = "2024-09-20T13:09:48.112Z" }, ] [[package]] @@ -327,27 +381,27 @@ dependencies = [ { name = "markupsafe" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/16/1b542af6f18a27de059f722c487a596681127897b6d31f78e46d6e5bf2fe/pdoc-15.0.1.tar.gz", hash = "sha256:3b08382c9d312243ee6c2a1813d0ff517a6ab84d596fa2c6c6b5255b17c3d666", size = 154174 } +sdist = { url = "https://files.pythonhosted.org/packages/bf/16/1b542af6f18a27de059f722c487a596681127897b6d31f78e46d6e5bf2fe/pdoc-15.0.1.tar.gz", hash = "sha256:3b08382c9d312243ee6c2a1813d0ff517a6ab84d596fa2c6c6b5255b17c3d666", size = 154174, upload-time = "2024-12-12T15:39:18.498Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/4d/60d856a1b12fbf6ac1539efccfa138e57c6b88675c9867d84bbb46455cc1/pdoc-15.0.1-py3-none-any.whl", hash = "sha256:fd437ab8eb55f9b942226af7865a3801e2fb731665199b74fd9a44737dbe20f9", size = 144186 }, + { url = "https://files.pythonhosted.org/packages/2f/4d/60d856a1b12fbf6ac1539efccfa138e57c6b88675c9867d84bbb46455cc1/pdoc-15.0.1-py3-none-any.whl", hash = "sha256:fd437ab8eb55f9b942226af7865a3801e2fb731665199b74fd9a44737dbe20f9", size = 144186, upload-time = "2024-12-12T15:39:17.107Z" }, ] [[package]] name = "platformdirs" version = "4.3.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b6/2d/7d512a3913d60623e7eb945c6d1b4f0bddf1d0b7ada5225274c87e5b53d1/platformdirs-4.3.7.tar.gz", hash = "sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351", size = 21291 } +sdist = { url = "https://files.pythonhosted.org/packages/b6/2d/7d512a3913d60623e7eb945c6d1b4f0bddf1d0b7ada5225274c87e5b53d1/platformdirs-4.3.7.tar.gz", hash = "sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351", size = 21291, upload-time = "2025-03-19T20:36:10.989Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/45/59578566b3275b8fd9157885918fcd0c4d74162928a5310926887b856a51/platformdirs-4.3.7-py3-none-any.whl", hash = "sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94", size = 18499 }, + { url = "https://files.pythonhosted.org/packages/6d/45/59578566b3275b8fd9157885918fcd0c4d74162928a5310926887b856a51/platformdirs-4.3.7-py3-none-any.whl", hash = "sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94", size = 18499, upload-time = "2025-03-19T20:36:09.038Z" }, ] [[package]] name = "pluggy" version = "1.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955, upload-time = "2024-04-20T21:34:42.531Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556, upload-time = "2024-04-20T21:34:40.434Z" }, ] [[package]] @@ -361,9 +415,9 @@ dependencies = [ { name = "pyyaml" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424 } +sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424, upload-time = "2025-03-18T21:35:20.987Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707 }, + { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707, upload-time = "2025-03-18T21:35:19.343Z" }, ] [[package]] @@ -376,9 +430,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/93/a3/698b87a4d4d303d7c5f62ea5fbf7a79cab236ccfbd0a17847b7f77f8163e/pydantic-2.11.1.tar.gz", hash = "sha256:442557d2910e75c991c39f4b4ab18963d57b9b55122c8b2a9cd176d8c29ce968", size = 782817 } +sdist = { url = "https://files.pythonhosted.org/packages/93/a3/698b87a4d4d303d7c5f62ea5fbf7a79cab236ccfbd0a17847b7f77f8163e/pydantic-2.11.1.tar.gz", hash = "sha256:442557d2910e75c991c39f4b4ab18963d57b9b55122c8b2a9cd176d8c29ce968", size = 782817, upload-time = "2025-03-28T21:14:58.347Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/12/f9221a949f2419e2e23847303c002476c26fbcfd62dc7f3d25d0bec5ca99/pydantic-2.11.1-py3-none-any.whl", hash = "sha256:5b6c415eee9f8123a14d859be0c84363fec6b1feb6b688d6435801230b56e0b8", size = 442648 }, + { url = "https://files.pythonhosted.org/packages/cc/12/f9221a949f2419e2e23847303c002476c26fbcfd62dc7f3d25d0bec5ca99/pydantic-2.11.1-py3-none-any.whl", hash = "sha256:5b6c415eee9f8123a14d859be0c84363fec6b1feb6b688d6435801230b56e0b8", size = 442648, upload-time = "2025-03-28T21:14:55.856Z" }, ] [[package]] @@ -388,48 +442,71 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/05/91ce14dfd5a3a99555fce436318cc0fd1f08c4daa32b3248ad63669ea8b4/pydantic_core-2.33.0.tar.gz", hash = "sha256:40eb8af662ba409c3cbf4a8150ad32ae73514cd7cb1f1a2113af39763dd616b3", size = 434080 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/c4/c9381323cbdc1bb26d352bc184422ce77c4bc2f2312b782761093a59fafc/pydantic_core-2.33.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:6c32a40712e3662bebe524abe8abb757f2fa2000028d64cc5a1006016c06af43", size = 2025127 }, - { url = "https://files.pythonhosted.org/packages/6f/bd/af35278080716ecab8f57e84515c7dc535ed95d1c7f52c1c6f7b313a9dab/pydantic_core-2.33.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8ec86b5baa36f0a0bfb37db86c7d52652f8e8aa076ab745ef7725784183c3fdd", size = 1851687 }, - { url = "https://files.pythonhosted.org/packages/12/e4/a01461225809c3533c23bd1916b1e8c2e21727f0fea60ab1acbffc4e2fca/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4deac83a8cc1d09e40683be0bc6d1fa4cde8df0a9bf0cda5693f9b0569ac01b6", size = 1892232 }, - { url = "https://files.pythonhosted.org/packages/51/17/3d53d62a328fb0a49911c2962036b9e7a4f781b7d15e9093c26299e5f76d/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:175ab598fb457a9aee63206a1993874badf3ed9a456e0654273e56f00747bbd6", size = 1977896 }, - { url = "https://files.pythonhosted.org/packages/30/98/01f9d86e02ec4a38f4b02086acf067f2c776b845d43f901bd1ee1c21bc4b/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5f36afd0d56a6c42cf4e8465b6441cf546ed69d3a4ec92724cc9c8c61bd6ecf4", size = 2127717 }, - { url = "https://files.pythonhosted.org/packages/3c/43/6f381575c61b7c58b0fd0b92134c5a1897deea4cdfc3d47567b3ff460a4e/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a98257451164666afafc7cbf5fb00d613e33f7e7ebb322fbcd99345695a9a61", size = 2680287 }, - { url = "https://files.pythonhosted.org/packages/01/42/c0d10d1451d161a9a0da9bbef023b8005aa26e9993a8cc24dc9e3aa96c93/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecc6d02d69b54a2eb83ebcc6f29df04957f734bcf309d346b4f83354d8376862", size = 2008276 }, - { url = "https://files.pythonhosted.org/packages/20/ca/e08df9dba546905c70bae44ced9f3bea25432e34448d95618d41968f40b7/pydantic_core-2.33.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a69b7596c6603afd049ce7f3835bcf57dd3892fc7279f0ddf987bebed8caa5a", size = 2115305 }, - { url = "https://files.pythonhosted.org/packages/03/1f/9b01d990730a98833113581a78e595fd40ed4c20f9693f5a658fb5f91eff/pydantic_core-2.33.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ea30239c148b6ef41364c6f51d103c2988965b643d62e10b233b5efdca8c0099", size = 2068999 }, - { url = "https://files.pythonhosted.org/packages/20/18/fe752476a709191148e8b1e1139147841ea5d2b22adcde6ee6abb6c8e7cf/pydantic_core-2.33.0-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:abfa44cf2f7f7d7a199be6c6ec141c9024063205545aa09304349781b9a125e6", size = 2241488 }, - { url = "https://files.pythonhosted.org/packages/81/22/14738ad0a0bf484b928c9e52004f5e0b81dd8dabbdf23b843717b37a71d1/pydantic_core-2.33.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:20d4275f3c4659d92048c70797e5fdc396c6e4446caf517ba5cad2db60cd39d3", size = 2248430 }, - { url = "https://files.pythonhosted.org/packages/e8/27/be7571e215ac8d321712f2433c445b03dbcd645366a18f67b334df8912bc/pydantic_core-2.33.0-cp312-cp312-win32.whl", hash = "sha256:918f2013d7eadea1d88d1a35fd4a1e16aaf90343eb446f91cb091ce7f9b431a2", size = 1908353 }, - { url = "https://files.pythonhosted.org/packages/be/3a/be78f28732f93128bd0e3944bdd4b3970b389a1fbd44907c97291c8dcdec/pydantic_core-2.33.0-cp312-cp312-win_amd64.whl", hash = "sha256:aec79acc183865bad120b0190afac467c20b15289050648b876b07777e67ea48", size = 1955956 }, - { url = "https://files.pythonhosted.org/packages/21/26/b8911ac74faa994694b76ee6a22875cc7a4abea3c381fdba4edc6c6bef84/pydantic_core-2.33.0-cp312-cp312-win_arm64.whl", hash = "sha256:5461934e895968655225dfa8b3be79e7e927e95d4bd6c2d40edd2fa7052e71b6", size = 1903259 }, - { url = "https://files.pythonhosted.org/packages/79/20/de2ad03ce8f5b3accf2196ea9b44f31b0cd16ac6e8cfc6b21976ed45ec35/pydantic_core-2.33.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f00e8b59e1fc8f09d05594aa7d2b726f1b277ca6155fc84c0396db1b373c4555", size = 2032214 }, - { url = "https://files.pythonhosted.org/packages/f9/af/6817dfda9aac4958d8b516cbb94af507eb171c997ea66453d4d162ae8948/pydantic_core-2.33.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a73be93ecef45786d7d95b0c5e9b294faf35629d03d5b145b09b81258c7cd6d", size = 1852338 }, - { url = "https://files.pythonhosted.org/packages/44/f3/49193a312d9c49314f2b953fb55740b7c530710977cabe7183b8ef111b7f/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff48a55be9da6930254565ff5238d71d5e9cd8c5487a191cb85df3bdb8c77365", size = 1896913 }, - { url = "https://files.pythonhosted.org/packages/06/e0/c746677825b2e29a2fa02122a8991c83cdd5b4c5f638f0664d4e35edd4b2/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:26a4ea04195638dcd8c53dadb545d70badba51735b1594810e9768c2c0b4a5da", size = 1986046 }, - { url = "https://files.pythonhosted.org/packages/11/ec/44914e7ff78cef16afb5e5273d480c136725acd73d894affdbe2a1bbaad5/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41d698dcbe12b60661f0632b543dbb119e6ba088103b364ff65e951610cb7ce0", size = 2128097 }, - { url = "https://files.pythonhosted.org/packages/fe/f5/c6247d424d01f605ed2e3802f338691cae17137cee6484dce9f1ac0b872b/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ae62032ef513fe6281ef0009e30838a01057b832dc265da32c10469622613885", size = 2681062 }, - { url = "https://files.pythonhosted.org/packages/f0/85/114a2113b126fdd7cf9a9443b1b1fe1b572e5bd259d50ba9d5d3e1927fa9/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f225f3a3995dbbc26affc191d0443c6c4aa71b83358fd4c2b7d63e2f6f0336f9", size = 2007487 }, - { url = "https://files.pythonhosted.org/packages/e6/40/3c05ed28d225c7a9acd2b34c5c8010c279683a870219b97e9f164a5a8af0/pydantic_core-2.33.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5bdd36b362f419c78d09630cbaebc64913f66f62bda6d42d5fbb08da8cc4f181", size = 2121382 }, - { url = "https://files.pythonhosted.org/packages/8a/22/e70c086f41eebd323e6baa92cc906c3f38ddce7486007eb2bdb3b11c8f64/pydantic_core-2.33.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:2a0147c0bef783fd9abc9f016d66edb6cac466dc54a17ec5f5ada08ff65caf5d", size = 2072473 }, - { url = "https://files.pythonhosted.org/packages/3e/84/d1614dedd8fe5114f6a0e348bcd1535f97d76c038d6102f271433cd1361d/pydantic_core-2.33.0-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:c860773a0f205926172c6644c394e02c25421dc9a456deff16f64c0e299487d3", size = 2249468 }, - { url = "https://files.pythonhosted.org/packages/b0/c0/787061eef44135e00fddb4b56b387a06c303bfd3884a6df9bea5cb730230/pydantic_core-2.33.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:138d31e3f90087f42aa6286fb640f3c7a8eb7bdae829418265e7e7474bd2574b", size = 2254716 }, - { url = "https://files.pythonhosted.org/packages/ae/e2/27262eb04963201e89f9c280f1e10c493a7a37bc877e023f31aa72d2f911/pydantic_core-2.33.0-cp313-cp313-win32.whl", hash = "sha256:d20cbb9d3e95114325780f3cfe990f3ecae24de7a2d75f978783878cce2ad585", size = 1916450 }, - { url = "https://files.pythonhosted.org/packages/13/8d/25ff96f1e89b19e0b70b3cd607c9ea7ca27e1dcb810a9cd4255ed6abf869/pydantic_core-2.33.0-cp313-cp313-win_amd64.whl", hash = "sha256:ca1103d70306489e3d006b0f79db8ca5dd3c977f6f13b2c59ff745249431a606", size = 1956092 }, - { url = "https://files.pythonhosted.org/packages/1b/64/66a2efeff657b04323ffcd7b898cb0354d36dae3a561049e092134a83e9c/pydantic_core-2.33.0-cp313-cp313-win_arm64.whl", hash = "sha256:6291797cad239285275558e0a27872da735b05c75d5237bbade8736f80e4c225", size = 1908367 }, - { url = "https://files.pythonhosted.org/packages/52/54/295e38769133363d7ec4a5863a4d579f331728c71a6644ff1024ee529315/pydantic_core-2.33.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7b79af799630af263eca9ec87db519426d8c9b3be35016eddad1832bac812d87", size = 1813331 }, - { url = "https://files.pythonhosted.org/packages/4c/9c/0c8ea02db8d682aa1ef48938abae833c1d69bdfa6e5ec13b21734b01ae70/pydantic_core-2.33.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eabf946a4739b5237f4f56d77fa6668263bc466d06a8036c055587c130a46f7b", size = 1986653 }, - { url = "https://files.pythonhosted.org/packages/8e/4f/3fb47d6cbc08c7e00f92300e64ba655428c05c56b8ab6723bd290bae6458/pydantic_core-2.33.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8a1d581e8cdbb857b0e0e81df98603376c1a5c34dc5e54039dcc00f043df81e7", size = 1931234 }, +sdist = { url = "https://files.pythonhosted.org/packages/b9/05/91ce14dfd5a3a99555fce436318cc0fd1f08c4daa32b3248ad63669ea8b4/pydantic_core-2.33.0.tar.gz", hash = "sha256:40eb8af662ba409c3cbf4a8150ad32ae73514cd7cb1f1a2113af39763dd616b3", size = 434080, upload-time = "2025-03-26T20:30:05.906Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f0/93/9e97af2619b4026596487a79133e425c7d3c374f0a7f100f3d76bcdf9c83/pydantic_core-2.33.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a608a75846804271cf9c83e40bbb4dab2ac614d33c6fd5b0c6187f53f5c593ef", size = 2042784, upload-time = "2025-03-26T20:27:02.809Z" }, + { url = "https://files.pythonhosted.org/packages/42/b4/0bba8412fd242729feeb80e7152e24f0e1a1c19f4121ca3d4a307f4e6222/pydantic_core-2.33.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e1c69aa459f5609dec2fa0652d495353accf3eda5bdb18782bc5a2ae45c9273a", size = 1858179, upload-time = "2025-03-26T20:27:04.747Z" }, + { url = "https://files.pythonhosted.org/packages/69/1f/c1c40305d929bd08af863df64b0a26203b70b352a1962d86f3bcd52950fe/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9ec80eb5a5f45a2211793f1c4aeddff0c3761d1c70d684965c1807e923a588b", size = 1909396, upload-time = "2025-03-26T20:27:06.258Z" }, + { url = "https://files.pythonhosted.org/packages/0f/99/d2e727375c329c1e652b5d450fbb9d56e8c3933a397e4bd46e67c68c2cd5/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e925819a98318d17251776bd3d6aa9f3ff77b965762155bdad15d1a9265c4cfd", size = 1998264, upload-time = "2025-03-26T20:27:08.439Z" }, + { url = "https://files.pythonhosted.org/packages/9c/2e/3119a33931278d96ecc2e9e1b9d50c240636cfeb0c49951746ae34e4de74/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5bf68bb859799e9cec3d9dd8323c40c00a254aabb56fe08f907e437005932f2b", size = 2140588, upload-time = "2025-03-26T20:27:09.949Z" }, + { url = "https://files.pythonhosted.org/packages/35/bd/9267bd1ba55f17c80ef6cb7e07b3890b4acbe8eb6014f3102092d53d9300/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1b2ea72dea0825949a045fa4071f6d5b3d7620d2a208335207793cf29c5a182d", size = 2746296, upload-time = "2025-03-26T20:27:11.824Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ed/ef37de6478a412ee627cbebd73e7b72a680f45bfacce9ff1199de6e17e88/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1583539533160186ac546b49f5cde9ffc928062c96920f58bd95de32ffd7bffd", size = 2005555, upload-time = "2025-03-26T20:27:13.872Z" }, + { url = "https://files.pythonhosted.org/packages/dd/84/72c8d1439585d8ee7bc35eb8f88a04a4d302ee4018871f1f85ae1b0c6625/pydantic_core-2.33.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:23c3e77bf8a7317612e5c26a3b084c7edeb9552d645742a54a5867635b4f2453", size = 2124452, upload-time = "2025-03-26T20:27:15.402Z" }, + { url = "https://files.pythonhosted.org/packages/a7/8f/cb13de30c6a3e303423751a529a3d1271c2effee4b98cf3e397a66ae8498/pydantic_core-2.33.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a7a7f2a3f628d2f7ef11cb6188bcf0b9e1558151d511b974dfea10a49afe192b", size = 2087001, upload-time = "2025-03-26T20:27:17.014Z" }, + { url = "https://files.pythonhosted.org/packages/83/d0/e93dc8884bf288a63fedeb8040ac8f29cb71ca52e755f48e5170bb63e55b/pydantic_core-2.33.0-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:f1fb026c575e16f673c61c7b86144517705865173f3d0907040ac30c4f9f5915", size = 2261663, upload-time = "2025-03-26T20:27:18.819Z" }, + { url = "https://files.pythonhosted.org/packages/4c/ba/4b7739c95efa0b542ee45fd872c8f6b1884ab808cf04ce7ac6621b6df76e/pydantic_core-2.33.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:635702b2fed997e0ac256b2cfbdb4dd0bf7c56b5d8fba8ef03489c03b3eb40e2", size = 2257786, upload-time = "2025-03-26T20:27:20.752Z" }, + { url = "https://files.pythonhosted.org/packages/cc/98/73cbca1d2360c27752cfa2fcdcf14d96230e92d7d48ecd50499865c56bf7/pydantic_core-2.33.0-cp311-cp311-win32.whl", hash = "sha256:07b4ced28fccae3f00626eaa0c4001aa9ec140a29501770a88dbbb0966019a86", size = 1925697, upload-time = "2025-03-26T20:27:22.688Z" }, + { url = "https://files.pythonhosted.org/packages/9a/26/d85a40edeca5d8830ffc33667d6fef329fd0f4bc0c5181b8b0e206cfe488/pydantic_core-2.33.0-cp311-cp311-win_amd64.whl", hash = "sha256:4927564be53239a87770a5f86bdc272b8d1fbb87ab7783ad70255b4ab01aa25b", size = 1949859, upload-time = "2025-03-26T20:27:24.371Z" }, + { url = "https://files.pythonhosted.org/packages/7e/0b/5a381605f0b9870465b805f2c86c06b0a7c191668ebe4117777306c2c1e5/pydantic_core-2.33.0-cp311-cp311-win_arm64.whl", hash = "sha256:69297418ad644d521ea3e1aa2e14a2a422726167e9ad22b89e8f1130d68e1e9a", size = 1907978, upload-time = "2025-03-26T20:27:25.964Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c4/c9381323cbdc1bb26d352bc184422ce77c4bc2f2312b782761093a59fafc/pydantic_core-2.33.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:6c32a40712e3662bebe524abe8abb757f2fa2000028d64cc5a1006016c06af43", size = 2025127, upload-time = "2025-03-26T20:27:27.704Z" }, + { url = "https://files.pythonhosted.org/packages/6f/bd/af35278080716ecab8f57e84515c7dc535ed95d1c7f52c1c6f7b313a9dab/pydantic_core-2.33.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8ec86b5baa36f0a0bfb37db86c7d52652f8e8aa076ab745ef7725784183c3fdd", size = 1851687, upload-time = "2025-03-26T20:27:29.67Z" }, + { url = "https://files.pythonhosted.org/packages/12/e4/a01461225809c3533c23bd1916b1e8c2e21727f0fea60ab1acbffc4e2fca/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4deac83a8cc1d09e40683be0bc6d1fa4cde8df0a9bf0cda5693f9b0569ac01b6", size = 1892232, upload-time = "2025-03-26T20:27:31.374Z" }, + { url = "https://files.pythonhosted.org/packages/51/17/3d53d62a328fb0a49911c2962036b9e7a4f781b7d15e9093c26299e5f76d/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:175ab598fb457a9aee63206a1993874badf3ed9a456e0654273e56f00747bbd6", size = 1977896, upload-time = "2025-03-26T20:27:33.055Z" }, + { url = "https://files.pythonhosted.org/packages/30/98/01f9d86e02ec4a38f4b02086acf067f2c776b845d43f901bd1ee1c21bc4b/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5f36afd0d56a6c42cf4e8465b6441cf546ed69d3a4ec92724cc9c8c61bd6ecf4", size = 2127717, upload-time = "2025-03-26T20:27:34.768Z" }, + { url = "https://files.pythonhosted.org/packages/3c/43/6f381575c61b7c58b0fd0b92134c5a1897deea4cdfc3d47567b3ff460a4e/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a98257451164666afafc7cbf5fb00d613e33f7e7ebb322fbcd99345695a9a61", size = 2680287, upload-time = "2025-03-26T20:27:36.826Z" }, + { url = "https://files.pythonhosted.org/packages/01/42/c0d10d1451d161a9a0da9bbef023b8005aa26e9993a8cc24dc9e3aa96c93/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecc6d02d69b54a2eb83ebcc6f29df04957f734bcf309d346b4f83354d8376862", size = 2008276, upload-time = "2025-03-26T20:27:38.609Z" }, + { url = "https://files.pythonhosted.org/packages/20/ca/e08df9dba546905c70bae44ced9f3bea25432e34448d95618d41968f40b7/pydantic_core-2.33.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a69b7596c6603afd049ce7f3835bcf57dd3892fc7279f0ddf987bebed8caa5a", size = 2115305, upload-time = "2025-03-26T20:27:41.717Z" }, + { url = "https://files.pythonhosted.org/packages/03/1f/9b01d990730a98833113581a78e595fd40ed4c20f9693f5a658fb5f91eff/pydantic_core-2.33.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ea30239c148b6ef41364c6f51d103c2988965b643d62e10b233b5efdca8c0099", size = 2068999, upload-time = "2025-03-26T20:27:43.42Z" }, + { url = "https://files.pythonhosted.org/packages/20/18/fe752476a709191148e8b1e1139147841ea5d2b22adcde6ee6abb6c8e7cf/pydantic_core-2.33.0-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:abfa44cf2f7f7d7a199be6c6ec141c9024063205545aa09304349781b9a125e6", size = 2241488, upload-time = "2025-03-26T20:27:46.744Z" }, + { url = "https://files.pythonhosted.org/packages/81/22/14738ad0a0bf484b928c9e52004f5e0b81dd8dabbdf23b843717b37a71d1/pydantic_core-2.33.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:20d4275f3c4659d92048c70797e5fdc396c6e4446caf517ba5cad2db60cd39d3", size = 2248430, upload-time = "2025-03-26T20:27:48.458Z" }, + { url = "https://files.pythonhosted.org/packages/e8/27/be7571e215ac8d321712f2433c445b03dbcd645366a18f67b334df8912bc/pydantic_core-2.33.0-cp312-cp312-win32.whl", hash = "sha256:918f2013d7eadea1d88d1a35fd4a1e16aaf90343eb446f91cb091ce7f9b431a2", size = 1908353, upload-time = "2025-03-26T20:27:50.488Z" }, + { url = "https://files.pythonhosted.org/packages/be/3a/be78f28732f93128bd0e3944bdd4b3970b389a1fbd44907c97291c8dcdec/pydantic_core-2.33.0-cp312-cp312-win_amd64.whl", hash = "sha256:aec79acc183865bad120b0190afac467c20b15289050648b876b07777e67ea48", size = 1955956, upload-time = "2025-03-26T20:27:52.239Z" }, + { url = "https://files.pythonhosted.org/packages/21/26/b8911ac74faa994694b76ee6a22875cc7a4abea3c381fdba4edc6c6bef84/pydantic_core-2.33.0-cp312-cp312-win_arm64.whl", hash = "sha256:5461934e895968655225dfa8b3be79e7e927e95d4bd6c2d40edd2fa7052e71b6", size = 1903259, upload-time = "2025-03-26T20:27:54.06Z" }, + { url = "https://files.pythonhosted.org/packages/79/20/de2ad03ce8f5b3accf2196ea9b44f31b0cd16ac6e8cfc6b21976ed45ec35/pydantic_core-2.33.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f00e8b59e1fc8f09d05594aa7d2b726f1b277ca6155fc84c0396db1b373c4555", size = 2032214, upload-time = "2025-03-26T20:27:56.197Z" }, + { url = "https://files.pythonhosted.org/packages/f9/af/6817dfda9aac4958d8b516cbb94af507eb171c997ea66453d4d162ae8948/pydantic_core-2.33.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a73be93ecef45786d7d95b0c5e9b294faf35629d03d5b145b09b81258c7cd6d", size = 1852338, upload-time = "2025-03-26T20:27:57.876Z" }, + { url = "https://files.pythonhosted.org/packages/44/f3/49193a312d9c49314f2b953fb55740b7c530710977cabe7183b8ef111b7f/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff48a55be9da6930254565ff5238d71d5e9cd8c5487a191cb85df3bdb8c77365", size = 1896913, upload-time = "2025-03-26T20:27:59.719Z" }, + { url = "https://files.pythonhosted.org/packages/06/e0/c746677825b2e29a2fa02122a8991c83cdd5b4c5f638f0664d4e35edd4b2/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:26a4ea04195638dcd8c53dadb545d70badba51735b1594810e9768c2c0b4a5da", size = 1986046, upload-time = "2025-03-26T20:28:01.583Z" }, + { url = "https://files.pythonhosted.org/packages/11/ec/44914e7ff78cef16afb5e5273d480c136725acd73d894affdbe2a1bbaad5/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41d698dcbe12b60661f0632b543dbb119e6ba088103b364ff65e951610cb7ce0", size = 2128097, upload-time = "2025-03-26T20:28:03.437Z" }, + { url = "https://files.pythonhosted.org/packages/fe/f5/c6247d424d01f605ed2e3802f338691cae17137cee6484dce9f1ac0b872b/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ae62032ef513fe6281ef0009e30838a01057b832dc265da32c10469622613885", size = 2681062, upload-time = "2025-03-26T20:28:05.498Z" }, + { url = "https://files.pythonhosted.org/packages/f0/85/114a2113b126fdd7cf9a9443b1b1fe1b572e5bd259d50ba9d5d3e1927fa9/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f225f3a3995dbbc26affc191d0443c6c4aa71b83358fd4c2b7d63e2f6f0336f9", size = 2007487, upload-time = "2025-03-26T20:28:07.879Z" }, + { url = "https://files.pythonhosted.org/packages/e6/40/3c05ed28d225c7a9acd2b34c5c8010c279683a870219b97e9f164a5a8af0/pydantic_core-2.33.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5bdd36b362f419c78d09630cbaebc64913f66f62bda6d42d5fbb08da8cc4f181", size = 2121382, upload-time = "2025-03-26T20:28:09.651Z" }, + { url = "https://files.pythonhosted.org/packages/8a/22/e70c086f41eebd323e6baa92cc906c3f38ddce7486007eb2bdb3b11c8f64/pydantic_core-2.33.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:2a0147c0bef783fd9abc9f016d66edb6cac466dc54a17ec5f5ada08ff65caf5d", size = 2072473, upload-time = "2025-03-26T20:28:11.69Z" }, + { url = "https://files.pythonhosted.org/packages/3e/84/d1614dedd8fe5114f6a0e348bcd1535f97d76c038d6102f271433cd1361d/pydantic_core-2.33.0-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:c860773a0f205926172c6644c394e02c25421dc9a456deff16f64c0e299487d3", size = 2249468, upload-time = "2025-03-26T20:28:13.651Z" }, + { url = "https://files.pythonhosted.org/packages/b0/c0/787061eef44135e00fddb4b56b387a06c303bfd3884a6df9bea5cb730230/pydantic_core-2.33.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:138d31e3f90087f42aa6286fb640f3c7a8eb7bdae829418265e7e7474bd2574b", size = 2254716, upload-time = "2025-03-26T20:28:16.105Z" }, + { url = "https://files.pythonhosted.org/packages/ae/e2/27262eb04963201e89f9c280f1e10c493a7a37bc877e023f31aa72d2f911/pydantic_core-2.33.0-cp313-cp313-win32.whl", hash = "sha256:d20cbb9d3e95114325780f3cfe990f3ecae24de7a2d75f978783878cce2ad585", size = 1916450, upload-time = "2025-03-26T20:28:18.252Z" }, + { url = "https://files.pythonhosted.org/packages/13/8d/25ff96f1e89b19e0b70b3cd607c9ea7ca27e1dcb810a9cd4255ed6abf869/pydantic_core-2.33.0-cp313-cp313-win_amd64.whl", hash = "sha256:ca1103d70306489e3d006b0f79db8ca5dd3c977f6f13b2c59ff745249431a606", size = 1956092, upload-time = "2025-03-26T20:28:20.129Z" }, + { url = "https://files.pythonhosted.org/packages/1b/64/66a2efeff657b04323ffcd7b898cb0354d36dae3a561049e092134a83e9c/pydantic_core-2.33.0-cp313-cp313-win_arm64.whl", hash = "sha256:6291797cad239285275558e0a27872da735b05c75d5237bbade8736f80e4c225", size = 1908367, upload-time = "2025-03-26T20:28:22.498Z" }, + { url = "https://files.pythonhosted.org/packages/52/54/295e38769133363d7ec4a5863a4d579f331728c71a6644ff1024ee529315/pydantic_core-2.33.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7b79af799630af263eca9ec87db519426d8c9b3be35016eddad1832bac812d87", size = 1813331, upload-time = "2025-03-26T20:28:25.004Z" }, + { url = "https://files.pythonhosted.org/packages/4c/9c/0c8ea02db8d682aa1ef48938abae833c1d69bdfa6e5ec13b21734b01ae70/pydantic_core-2.33.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eabf946a4739b5237f4f56d77fa6668263bc466d06a8036c055587c130a46f7b", size = 1986653, upload-time = "2025-03-26T20:28:27.02Z" }, + { url = "https://files.pythonhosted.org/packages/8e/4f/3fb47d6cbc08c7e00f92300e64ba655428c05c56b8ab6723bd290bae6458/pydantic_core-2.33.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8a1d581e8cdbb857b0e0e81df98603376c1a5c34dc5e54039dcc00f043df81e7", size = 1931234, upload-time = "2025-03-26T20:28:29.237Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b2/553e42762e7b08771fca41c0230c1ac276f9e79e78f57628e1b7d328551d/pydantic_core-2.33.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5d8dc9f63a26f7259b57f46a7aab5af86b2ad6fbe48487500bb1f4b27e051e4c", size = 2041207, upload-time = "2025-03-26T20:29:20.111Z" }, + { url = "https://files.pythonhosted.org/packages/85/81/a91a57bbf3efe53525ab75f65944b8950e6ef84fe3b9a26c1ec173363263/pydantic_core-2.33.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:30369e54d6d0113d2aa5aee7a90d17f225c13d87902ace8fcd7bbf99b19124db", size = 1873736, upload-time = "2025-03-26T20:29:22.811Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d2/5ab52e9f551cdcbc1ee99a0b3ef595f56d031f66f88e5ca6726c49f9ce65/pydantic_core-2.33.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3eb479354c62067afa62f53bb387827bee2f75c9c79ef25eef6ab84d4b1ae3b", size = 1903794, upload-time = "2025-03-26T20:29:25.369Z" }, + { url = "https://files.pythonhosted.org/packages/2f/5f/a81742d3f3821b16f1265f057d6e0b68a3ab13a814fe4bffac536a1f26fd/pydantic_core-2.33.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0310524c833d91403c960b8a3cf9f46c282eadd6afd276c8c5edc617bd705dc9", size = 2083457, upload-time = "2025-03-26T20:29:27.551Z" }, + { url = "https://files.pythonhosted.org/packages/b5/2f/e872005bc0fc47f9c036b67b12349a8522d32e3bda928e82d676e2a594d1/pydantic_core-2.33.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:eddb18a00bbb855325db27b4c2a89a4ba491cd6a0bd6d852b225172a1f54b36c", size = 2119537, upload-time = "2025-03-26T20:29:29.763Z" }, + { url = "https://files.pythonhosted.org/packages/d3/13/183f13ce647202eaf3dada9e42cdfc59cbb95faedd44d25f22b931115c7f/pydantic_core-2.33.0-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ade5dbcf8d9ef8f4b28e682d0b29f3008df9842bb5ac48ac2c17bc55771cc976", size = 2080069, upload-time = "2025-03-26T20:29:32.31Z" }, + { url = "https://files.pythonhosted.org/packages/23/8b/b6be91243da44a26558d9c3a9007043b3750334136c6550551e8092d6d96/pydantic_core-2.33.0-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2c0afd34f928383e3fd25740f2050dbac9d077e7ba5adbaa2227f4d4f3c8da5c", size = 2251618, upload-time = "2025-03-26T20:29:34.967Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c5/fbcf1977035b834f63eb542e74cd6c807177f383386175b468f0865bcac4/pydantic_core-2.33.0-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:7da333f21cd9df51d5731513a6d39319892947604924ddf2e24a4612975fb936", size = 2255374, upload-time = "2025-03-26T20:29:37.132Z" }, + { url = "https://files.pythonhosted.org/packages/2f/f8/66f328e411f1c9574b13c2c28ab01f308b53688bbbe6ca8fb981e6cabc42/pydantic_core-2.33.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:4b6d77c75a57f041c5ee915ff0b0bb58eabb78728b69ed967bc5b780e8f701b8", size = 2082099, upload-time = "2025-03-26T20:29:39.227Z" }, ] [[package]] name = "pygments" version = "2.19.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 } +sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581, upload-time = "2025-01-06T17:26:30.443Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 }, + { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293, upload-time = "2025-01-06T17:26:25.553Z" }, ] [[package]] @@ -442,9 +519,9 @@ dependencies = [ { name = "packaging" }, { name = "pluggy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 } +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload-time = "2025-03-02T12:54:54.503Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634 }, + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload-time = "2025-03-02T12:54:52.069Z" }, ] [[package]] @@ -452,12 +529,12 @@ name = "pytest-cov" version = "6.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "coverage" }, + { name = "coverage", extra = ["toml"] }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/34/8c/039a7793f23f5cb666c834da9e944123f498ccc0753bed5fbfb2e2c11f87/pytest_cov-6.1.0.tar.gz", hash = "sha256:ec55e828c66755e5b74a21bd7cc03c303a9f928389c0563e50ba454a6dbe71db", size = 66651 } +sdist = { url = "https://files.pythonhosted.org/packages/34/8c/039a7793f23f5cb666c834da9e944123f498ccc0753bed5fbfb2e2c11f87/pytest_cov-6.1.0.tar.gz", hash = "sha256:ec55e828c66755e5b74a21bd7cc03c303a9f928389c0563e50ba454a6dbe71db", size = 66651, upload-time = "2025-04-01T10:58:05.169Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/c5/8d6ffe9fc8f7f57b3662156ae8a34f2b8e7a754c73b48e689ce43145e98c/pytest_cov-6.1.0-py3-none-any.whl", hash = "sha256:cd7e1d54981d5185ef2b8d64b50172ce97e6f357e6df5cb103e828c7f993e201", size = 23743 }, + { url = "https://files.pythonhosted.org/packages/e1/c5/8d6ffe9fc8f7f57b3662156ae8a34f2b8e7a754c73b48e689ce43145e98c/pytest_cov-6.1.0-py3-none-any.whl", hash = "sha256:cd7e1d54981d5185ef2b8d64b50172ce97e6f357e6df5cb103e828c7f993e201", size = 23743, upload-time = "2025-04-01T10:58:03.302Z" }, ] [[package]] @@ -467,69 +544,78 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] [[package]] name = "pytz" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884 } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225 }, + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, ] [[package]] name = "pyyaml" version = "6.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, - { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, - { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, - { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, - { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, - { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, - { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, - { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, - { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, - { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, - { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, - { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, - { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, - { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, - { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, - { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612, upload-time = "2024-08-06T20:32:03.408Z" }, + { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040, upload-time = "2024-08-06T20:32:04.926Z" }, + { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829, upload-time = "2024-08-06T20:32:06.459Z" }, + { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167, upload-time = "2024-08-06T20:32:08.338Z" }, + { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952, upload-time = "2024-08-06T20:32:14.124Z" }, + { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301, upload-time = "2024-08-06T20:32:16.17Z" }, + { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638, upload-time = "2024-08-06T20:32:18.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload-time = "2024-08-06T20:32:19.889Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload-time = "2024-08-06T20:32:21.273Z" }, + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload-time = "2024-08-06T20:32:25.131Z" }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload-time = "2024-08-06T20:32:26.511Z" }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload-time = "2024-08-06T20:32:28.363Z" }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload-time = "2024-08-06T20:32:30.058Z" }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload-time = "2024-08-06T20:32:31.881Z" }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload-time = "2024-08-06T20:32:37.083Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload-time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload-time = "2024-08-06T20:32:43.4Z" }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload-time = "2024-08-06T20:32:44.801Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload-time = "2024-08-06T20:32:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" }, ] [[package]] name = "ruff" version = "0.11.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/90/61/fb87430f040e4e577e784e325351186976516faef17d6fcd921fe28edfd7/ruff-0.11.2.tar.gz", hash = "sha256:ec47591497d5a1050175bdf4e1a4e6272cddff7da88a2ad595e1e326041d8d94", size = 3857511 } +sdist = { url = "https://files.pythonhosted.org/packages/90/61/fb87430f040e4e577e784e325351186976516faef17d6fcd921fe28edfd7/ruff-0.11.2.tar.gz", hash = "sha256:ec47591497d5a1050175bdf4e1a4e6272cddff7da88a2ad595e1e326041d8d94", size = 3857511, upload-time = "2025-03-21T13:31:17.419Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/99/102578506f0f5fa29fd7e0df0a273864f79af044757aef73d1cae0afe6ad/ruff-0.11.2-py3-none-linux_armv6l.whl", hash = "sha256:c69e20ea49e973f3afec2c06376eb56045709f0212615c1adb0eda35e8a4e477", size = 10113146 }, - { url = "https://files.pythonhosted.org/packages/74/ad/5cd4ba58ab602a579997a8494b96f10f316e874d7c435bcc1a92e6da1b12/ruff-0.11.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:2c5424cc1c4eb1d8ecabe6d4f1b70470b4f24a0c0171356290b1953ad8f0e272", size = 10867092 }, - { url = "https://files.pythonhosted.org/packages/fc/3e/d3f13619e1d152c7b600a38c1a035e833e794c6625c9a6cea6f63dbf3af4/ruff-0.11.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:ecf20854cc73f42171eedb66f006a43d0a21bfb98a2523a809931cda569552d9", size = 10224082 }, - { url = "https://files.pythonhosted.org/packages/90/06/f77b3d790d24a93f38e3806216f263974909888fd1e826717c3ec956bbcd/ruff-0.11.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c543bf65d5d27240321604cee0633a70c6c25c9a2f2492efa9f6d4b8e4199bb", size = 10394818 }, - { url = "https://files.pythonhosted.org/packages/99/7f/78aa431d3ddebfc2418cd95b786642557ba8b3cb578c075239da9ce97ff9/ruff-0.11.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:20967168cc21195db5830b9224be0e964cc9c8ecf3b5a9e3ce19876e8d3a96e3", size = 9952251 }, - { url = "https://files.pythonhosted.org/packages/30/3e/f11186d1ddfaca438c3bbff73c6a2fdb5b60e6450cc466129c694b0ab7a2/ruff-0.11.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:955a9ce63483999d9f0b8f0b4a3ad669e53484232853054cc8b9d51ab4c5de74", size = 11563566 }, - { url = "https://files.pythonhosted.org/packages/22/6c/6ca91befbc0a6539ee133d9a9ce60b1a354db12c3c5d11cfdbf77140f851/ruff-0.11.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:86b3a27c38b8fce73bcd262b0de32e9a6801b76d52cdb3ae4c914515f0cef608", size = 12208721 }, - { url = "https://files.pythonhosted.org/packages/19/b0/24516a3b850d55b17c03fc399b681c6a549d06ce665915721dc5d6458a5c/ruff-0.11.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3b66a03b248c9fcd9d64d445bafdf1589326bee6fc5c8e92d7562e58883e30f", size = 11662274 }, - { url = "https://files.pythonhosted.org/packages/d7/65/76be06d28ecb7c6070280cef2bcb20c98fbf99ff60b1c57d2fb9b8771348/ruff-0.11.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0397c2672db015be5aa3d4dac54c69aa012429097ff219392c018e21f5085147", size = 13792284 }, - { url = "https://files.pythonhosted.org/packages/ce/d2/4ceed7147e05852876f3b5f3fdc23f878ce2b7e0b90dd6e698bda3d20787/ruff-0.11.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:869bcf3f9abf6457fbe39b5a37333aa4eecc52a3b99c98827ccc371a8e5b6f1b", size = 11327861 }, - { url = "https://files.pythonhosted.org/packages/c4/78/4935ecba13706fd60ebe0e3dc50371f2bdc3d9bc80e68adc32ff93914534/ruff-0.11.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2a2b50ca35457ba785cd8c93ebbe529467594087b527a08d487cf0ee7b3087e9", size = 10276560 }, - { url = "https://files.pythonhosted.org/packages/81/7f/1b2435c3f5245d410bb5dc80f13ec796454c21fbda12b77d7588d5cf4e29/ruff-0.11.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7c69c74bf53ddcfbc22e6eb2f31211df7f65054bfc1f72288fc71e5f82db3eab", size = 9945091 }, - { url = "https://files.pythonhosted.org/packages/39/c4/692284c07e6bf2b31d82bb8c32f8840f9d0627d92983edaac991a2b66c0a/ruff-0.11.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6e8fb75e14560f7cf53b15bbc55baf5ecbe373dd5f3aab96ff7aa7777edd7630", size = 10977133 }, - { url = "https://files.pythonhosted.org/packages/94/cf/8ab81cb7dd7a3b0a3960c2769825038f3adcd75faf46dd6376086df8b128/ruff-0.11.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:842a472d7b4d6f5924e9297aa38149e5dcb1e628773b70e6387ae2c97a63c58f", size = 11378514 }, - { url = "https://files.pythonhosted.org/packages/d9/3a/a647fa4f316482dacf2fd68e8a386327a33d6eabd8eb2f9a0c3d291ec549/ruff-0.11.2-py3-none-win32.whl", hash = "sha256:aca01ccd0eb5eb7156b324cfaa088586f06a86d9e5314b0eb330cb48415097cc", size = 10319835 }, - { url = "https://files.pythonhosted.org/packages/86/54/3c12d3af58012a5e2cd7ebdbe9983f4834af3f8cbea0e8a8c74fa1e23b2b/ruff-0.11.2-py3-none-win_amd64.whl", hash = "sha256:3170150172a8f994136c0c66f494edf199a0bbea7a409f649e4bc8f4d7084080", size = 11373713 }, - { url = "https://files.pythonhosted.org/packages/d6/d4/dd813703af8a1e2ac33bf3feb27e8a5ad514c9f219df80c64d69807e7f71/ruff-0.11.2-py3-none-win_arm64.whl", hash = "sha256:52933095158ff328f4c77af3d74f0379e34fd52f175144cefc1b192e7ccd32b4", size = 10441990 }, + { url = "https://files.pythonhosted.org/packages/62/99/102578506f0f5fa29fd7e0df0a273864f79af044757aef73d1cae0afe6ad/ruff-0.11.2-py3-none-linux_armv6l.whl", hash = "sha256:c69e20ea49e973f3afec2c06376eb56045709f0212615c1adb0eda35e8a4e477", size = 10113146, upload-time = "2025-03-21T13:30:26.68Z" }, + { url = "https://files.pythonhosted.org/packages/74/ad/5cd4ba58ab602a579997a8494b96f10f316e874d7c435bcc1a92e6da1b12/ruff-0.11.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:2c5424cc1c4eb1d8ecabe6d4f1b70470b4f24a0c0171356290b1953ad8f0e272", size = 10867092, upload-time = "2025-03-21T13:30:37.949Z" }, + { url = "https://files.pythonhosted.org/packages/fc/3e/d3f13619e1d152c7b600a38c1a035e833e794c6625c9a6cea6f63dbf3af4/ruff-0.11.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:ecf20854cc73f42171eedb66f006a43d0a21bfb98a2523a809931cda569552d9", size = 10224082, upload-time = "2025-03-21T13:30:39.962Z" }, + { url = "https://files.pythonhosted.org/packages/90/06/f77b3d790d24a93f38e3806216f263974909888fd1e826717c3ec956bbcd/ruff-0.11.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c543bf65d5d27240321604cee0633a70c6c25c9a2f2492efa9f6d4b8e4199bb", size = 10394818, upload-time = "2025-03-21T13:30:42.551Z" }, + { url = "https://files.pythonhosted.org/packages/99/7f/78aa431d3ddebfc2418cd95b786642557ba8b3cb578c075239da9ce97ff9/ruff-0.11.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:20967168cc21195db5830b9224be0e964cc9c8ecf3b5a9e3ce19876e8d3a96e3", size = 9952251, upload-time = "2025-03-21T13:30:45.196Z" }, + { url = "https://files.pythonhosted.org/packages/30/3e/f11186d1ddfaca438c3bbff73c6a2fdb5b60e6450cc466129c694b0ab7a2/ruff-0.11.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:955a9ce63483999d9f0b8f0b4a3ad669e53484232853054cc8b9d51ab4c5de74", size = 11563566, upload-time = "2025-03-21T13:30:47.516Z" }, + { url = "https://files.pythonhosted.org/packages/22/6c/6ca91befbc0a6539ee133d9a9ce60b1a354db12c3c5d11cfdbf77140f851/ruff-0.11.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:86b3a27c38b8fce73bcd262b0de32e9a6801b76d52cdb3ae4c914515f0cef608", size = 12208721, upload-time = "2025-03-21T13:30:49.56Z" }, + { url = "https://files.pythonhosted.org/packages/19/b0/24516a3b850d55b17c03fc399b681c6a549d06ce665915721dc5d6458a5c/ruff-0.11.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3b66a03b248c9fcd9d64d445bafdf1589326bee6fc5c8e92d7562e58883e30f", size = 11662274, upload-time = "2025-03-21T13:30:52.055Z" }, + { url = "https://files.pythonhosted.org/packages/d7/65/76be06d28ecb7c6070280cef2bcb20c98fbf99ff60b1c57d2fb9b8771348/ruff-0.11.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0397c2672db015be5aa3d4dac54c69aa012429097ff219392c018e21f5085147", size = 13792284, upload-time = "2025-03-21T13:30:54.24Z" }, + { url = "https://files.pythonhosted.org/packages/ce/d2/4ceed7147e05852876f3b5f3fdc23f878ce2b7e0b90dd6e698bda3d20787/ruff-0.11.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:869bcf3f9abf6457fbe39b5a37333aa4eecc52a3b99c98827ccc371a8e5b6f1b", size = 11327861, upload-time = "2025-03-21T13:30:56.757Z" }, + { url = "https://files.pythonhosted.org/packages/c4/78/4935ecba13706fd60ebe0e3dc50371f2bdc3d9bc80e68adc32ff93914534/ruff-0.11.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2a2b50ca35457ba785cd8c93ebbe529467594087b527a08d487cf0ee7b3087e9", size = 10276560, upload-time = "2025-03-21T13:30:58.881Z" }, + { url = "https://files.pythonhosted.org/packages/81/7f/1b2435c3f5245d410bb5dc80f13ec796454c21fbda12b77d7588d5cf4e29/ruff-0.11.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7c69c74bf53ddcfbc22e6eb2f31211df7f65054bfc1f72288fc71e5f82db3eab", size = 9945091, upload-time = "2025-03-21T13:31:01.45Z" }, + { url = "https://files.pythonhosted.org/packages/39/c4/692284c07e6bf2b31d82bb8c32f8840f9d0627d92983edaac991a2b66c0a/ruff-0.11.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6e8fb75e14560f7cf53b15bbc55baf5ecbe373dd5f3aab96ff7aa7777edd7630", size = 10977133, upload-time = "2025-03-21T13:31:04.013Z" }, + { url = "https://files.pythonhosted.org/packages/94/cf/8ab81cb7dd7a3b0a3960c2769825038f3adcd75faf46dd6376086df8b128/ruff-0.11.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:842a472d7b4d6f5924e9297aa38149e5dcb1e628773b70e6387ae2c97a63c58f", size = 11378514, upload-time = "2025-03-21T13:31:06.166Z" }, + { url = "https://files.pythonhosted.org/packages/d9/3a/a647fa4f316482dacf2fd68e8a386327a33d6eabd8eb2f9a0c3d291ec549/ruff-0.11.2-py3-none-win32.whl", hash = "sha256:aca01ccd0eb5eb7156b324cfaa088586f06a86d9e5314b0eb330cb48415097cc", size = 10319835, upload-time = "2025-03-21T13:31:10.7Z" }, + { url = "https://files.pythonhosted.org/packages/86/54/3c12d3af58012a5e2cd7ebdbe9983f4834af3f8cbea0e8a8c74fa1e23b2b/ruff-0.11.2-py3-none-win_amd64.whl", hash = "sha256:3170150172a8f994136c0c66f494edf199a0bbea7a409f649e4bc8f4d7084080", size = 11373713, upload-time = "2025-03-21T13:31:13.148Z" }, + { url = "https://files.pythonhosted.org/packages/d6/d4/dd813703af8a1e2ac33bf3feb27e8a5ad514c9f219df80c64d69807e7f71/ruff-0.11.2-py3-none-win_arm64.whl", hash = "sha256:52933095158ff328f4c77af3d74f0379e34fd52f175144cefc1b192e7ccd32b4", size = 10441990, upload-time = "2025-03-21T13:31:15.206Z" }, ] [[package]] @@ -539,35 +625,44 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b7/b9/31ba9cd990e626574baf93fbc1ac61cf9ed54faafd04c479117517661637/scipy-1.15.2.tar.gz", hash = "sha256:cd58a314d92838f7e6f755c8a2167ead4f27e1fd5c1251fd54289569ef3495ec", size = 59417316 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4b/5d/3c78815cbab499610f26b5bae6aed33e227225a9fa5290008a733a64f6fc/scipy-1.15.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c4697a10da8f8765bb7c83e24a470da5797e37041edfd77fd95ba3811a47c4fd", size = 38756184 }, - { url = "https://files.pythonhosted.org/packages/37/20/3d04eb066b471b6e171827548b9ddb3c21c6bbea72a4d84fc5989933910b/scipy-1.15.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:869269b767d5ee7ea6991ed7e22b3ca1f22de73ab9a49c44bad338b725603301", size = 30163558 }, - { url = "https://files.pythonhosted.org/packages/a4/98/e5c964526c929ef1f795d4c343b2ff98634ad2051bd2bbadfef9e772e413/scipy-1.15.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:bad78d580270a4d32470563ea86c6590b465cb98f83d760ff5b0990cb5518a93", size = 22437211 }, - { url = "https://files.pythonhosted.org/packages/1d/cd/1dc7371e29195ecbf5222f9afeedb210e0a75057d8afbd942aa6cf8c8eca/scipy-1.15.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:b09ae80010f52efddb15551025f9016c910296cf70adbf03ce2a8704f3a5ad20", size = 25232260 }, - { url = "https://files.pythonhosted.org/packages/f0/24/1a181a9e5050090e0b5138c5f496fee33293c342b788d02586bc410c6477/scipy-1.15.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a6fd6eac1ce74a9f77a7fc724080d507c5812d61e72bd5e4c489b042455865e", size = 35198095 }, - { url = "https://files.pythonhosted.org/packages/c0/53/eaada1a414c026673eb983f8b4a55fe5eb172725d33d62c1b21f63ff6ca4/scipy-1.15.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b871df1fe1a3ba85d90e22742b93584f8d2b8e6124f8372ab15c71b73e428b8", size = 37297371 }, - { url = "https://files.pythonhosted.org/packages/e9/06/0449b744892ed22b7e7b9a1994a866e64895363572677a316a9042af1fe5/scipy-1.15.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:03205d57a28e18dfd39f0377d5002725bf1f19a46f444108c29bdb246b6c8a11", size = 36872390 }, - { url = "https://files.pythonhosted.org/packages/6a/6f/a8ac3cfd9505ec695c1bc35edc034d13afbd2fc1882a7c6b473e280397bb/scipy-1.15.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:601881dfb761311045b03114c5fe718a12634e5608c3b403737ae463c9885d53", size = 39700276 }, - { url = "https://files.pythonhosted.org/packages/f5/6f/e6e5aff77ea2a48dd96808bb51d7450875af154ee7cbe72188afb0b37929/scipy-1.15.2-cp312-cp312-win_amd64.whl", hash = "sha256:e7c68b6a43259ba0aab737237876e5c2c549a031ddb7abc28c7b47f22e202ded", size = 40942317 }, - { url = "https://files.pythonhosted.org/packages/53/40/09319f6e0f276ea2754196185f95cd191cb852288440ce035d5c3a931ea2/scipy-1.15.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:01edfac9f0798ad6b46d9c4c9ca0e0ad23dbf0b1eb70e96adb9fa7f525eff0bf", size = 38717587 }, - { url = "https://files.pythonhosted.org/packages/fe/c3/2854f40ecd19585d65afaef601e5e1f8dbf6758b2f95b5ea93d38655a2c6/scipy-1.15.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:08b57a9336b8e79b305a143c3655cc5bdbe6d5ece3378578888d2afbb51c4e37", size = 30100266 }, - { url = "https://files.pythonhosted.org/packages/dd/b1/f9fe6e3c828cb5930b5fe74cb479de5f3d66d682fa8adb77249acaf545b8/scipy-1.15.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:54c462098484e7466362a9f1672d20888f724911a74c22ae35b61f9c5919183d", size = 22373768 }, - { url = "https://files.pythonhosted.org/packages/15/9d/a60db8c795700414c3f681908a2b911e031e024d93214f2d23c6dae174ab/scipy-1.15.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:cf72ff559a53a6a6d77bd8eefd12a17995ffa44ad86c77a5df96f533d4e6c6bb", size = 25154719 }, - { url = "https://files.pythonhosted.org/packages/37/3b/9bda92a85cd93f19f9ed90ade84aa1e51657e29988317fabdd44544f1dd4/scipy-1.15.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9de9d1416b3d9e7df9923ab23cd2fe714244af10b763975bea9e4f2e81cebd27", size = 35163195 }, - { url = "https://files.pythonhosted.org/packages/03/5a/fc34bf1aa14dc7c0e701691fa8685f3faec80e57d816615e3625f28feb43/scipy-1.15.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb530e4794fc8ea76a4a21ccb67dea33e5e0e60f07fc38a49e821e1eae3b71a0", size = 37255404 }, - { url = "https://files.pythonhosted.org/packages/4a/71/472eac45440cee134c8a180dbe4c01b3ec247e0338b7c759e6cd71f199a7/scipy-1.15.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5ea7ed46d437fc52350b028b1d44e002646e28f3e8ddc714011aaf87330f2f32", size = 36860011 }, - { url = "https://files.pythonhosted.org/packages/01/b3/21f890f4f42daf20e4d3aaa18182dddb9192771cd47445aaae2e318f6738/scipy-1.15.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11e7ad32cf184b74380f43d3c0a706f49358b904fa7d5345f16ddf993609184d", size = 39657406 }, - { url = "https://files.pythonhosted.org/packages/0d/76/77cf2ac1f2a9cc00c073d49e1e16244e389dd88e2490c91d84e1e3e4d126/scipy-1.15.2-cp313-cp313-win_amd64.whl", hash = "sha256:a5080a79dfb9b78b768cebf3c9dcbc7b665c5875793569f48bf0e2b1d7f68f6f", size = 40961243 }, - { url = "https://files.pythonhosted.org/packages/4c/4b/a57f8ddcf48e129e6054fa9899a2a86d1fc6b07a0e15c7eebff7ca94533f/scipy-1.15.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:447ce30cee6a9d5d1379087c9e474628dab3db4a67484be1b7dc3196bfb2fac9", size = 38870286 }, - { url = "https://files.pythonhosted.org/packages/0c/43/c304d69a56c91ad5f188c0714f6a97b9c1fed93128c691148621274a3a68/scipy-1.15.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:c90ebe8aaa4397eaefa8455a8182b164a6cc1d59ad53f79943f266d99f68687f", size = 30141634 }, - { url = "https://files.pythonhosted.org/packages/44/1a/6c21b45d2548eb73be9b9bff421aaaa7e85e22c1f9b3bc44b23485dfce0a/scipy-1.15.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:def751dd08243934c884a3221156d63e15234a3155cf25978b0a668409d45eb6", size = 22415179 }, - { url = "https://files.pythonhosted.org/packages/74/4b/aefac4bba80ef815b64f55da06f62f92be5d03b467f2ce3668071799429a/scipy-1.15.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:302093e7dfb120e55515936cb55618ee0b895f8bcaf18ff81eca086c17bd80af", size = 25126412 }, - { url = "https://files.pythonhosted.org/packages/b1/53/1cbb148e6e8f1660aacd9f0a9dfa2b05e9ff1cb54b4386fe868477972ac2/scipy-1.15.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cd5b77413e1855351cdde594eca99c1f4a588c2d63711388b6a1f1c01f62274", size = 34952867 }, - { url = "https://files.pythonhosted.org/packages/2c/23/e0eb7f31a9c13cf2dca083828b97992dd22f8184c6ce4fec5deec0c81fcf/scipy-1.15.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d0194c37037707b2afa7a2f2a924cf7bac3dc292d51b6a925e5fcb89bc5c776", size = 36890009 }, - { url = "https://files.pythonhosted.org/packages/03/f3/e699e19cabe96bbac5189c04aaa970718f0105cff03d458dc5e2b6bd1e8c/scipy-1.15.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:bae43364d600fdc3ac327db99659dcb79e6e7ecd279a75fe1266669d9a652828", size = 36545159 }, - { url = "https://files.pythonhosted.org/packages/af/f5/ab3838e56fe5cc22383d6fcf2336e48c8fe33e944b9037fbf6cbdf5a11f8/scipy-1.15.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f031846580d9acccd0044efd1a90e6f4df3a6e12b4b6bd694a7bc03a89892b28", size = 39136566 }, - { url = "https://files.pythonhosted.org/packages/0a/c8/b3f566db71461cabd4b2d5b39bcc24a7e1c119535c8361f81426be39bb47/scipy-1.15.2-cp313-cp313t-win_amd64.whl", hash = "sha256:fe8a9eb875d430d81755472c5ba75e84acc980e4a8f6204d402849234d3017db", size = 40477705 }, +sdist = { url = "https://files.pythonhosted.org/packages/b7/b9/31ba9cd990e626574baf93fbc1ac61cf9ed54faafd04c479117517661637/scipy-1.15.2.tar.gz", hash = "sha256:cd58a314d92838f7e6f755c8a2167ead4f27e1fd5c1251fd54289569ef3495ec", size = 59417316, upload-time = "2025-02-17T00:42:24.791Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/1f/bf0a5f338bda7c35c08b4ed0df797e7bafe8a78a97275e9f439aceb46193/scipy-1.15.2-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:92233b2df6938147be6fa8824b8136f29a18f016ecde986666be5f4d686a91a4", size = 38703651, upload-time = "2025-02-17T00:30:31.09Z" }, + { url = "https://files.pythonhosted.org/packages/de/54/db126aad3874601048c2c20ae3d8a433dbfd7ba8381551e6f62606d9bd8e/scipy-1.15.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:62ca1ff3eb513e09ed17a5736929429189adf16d2d740f44e53270cc800ecff1", size = 30102038, upload-time = "2025-02-17T00:30:40.219Z" }, + { url = "https://files.pythonhosted.org/packages/61/d8/84da3fffefb6c7d5a16968fe5b9f24c98606b165bb801bb0b8bc3985200f/scipy-1.15.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:4c6676490ad76d1c2894d77f976144b41bd1a4052107902238047fb6a473e971", size = 22375518, upload-time = "2025-02-17T00:30:47.547Z" }, + { url = "https://files.pythonhosted.org/packages/44/78/25535a6e63d3b9c4c90147371aedb5d04c72f3aee3a34451f2dc27c0c07f/scipy-1.15.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:a8bf5cb4a25046ac61d38f8d3c3426ec11ebc350246a4642f2f315fe95bda655", size = 25142523, upload-time = "2025-02-17T00:30:56.002Z" }, + { url = "https://files.pythonhosted.org/packages/e0/22/4b4a26fe1cd9ed0bc2b2cb87b17d57e32ab72c346949eaf9288001f8aa8e/scipy-1.15.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a8e34cf4c188b6dd004654f88586d78f95639e48a25dfae9c5e34a6dc34547e", size = 35491547, upload-time = "2025-02-17T00:31:07.599Z" }, + { url = "https://files.pythonhosted.org/packages/32/ea/564bacc26b676c06a00266a3f25fdfe91a9d9a2532ccea7ce6dd394541bc/scipy-1.15.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28a0d2c2075946346e4408b211240764759e0fabaeb08d871639b5f3b1aca8a0", size = 37634077, upload-time = "2025-02-17T00:31:15.191Z" }, + { url = "https://files.pythonhosted.org/packages/43/c2/bfd4e60668897a303b0ffb7191e965a5da4056f0d98acfb6ba529678f0fb/scipy-1.15.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:42dabaaa798e987c425ed76062794e93a243be8f0f20fff6e7a89f4d61cb3d40", size = 37231657, upload-time = "2025-02-17T00:31:22.041Z" }, + { url = "https://files.pythonhosted.org/packages/4a/75/5f13050bf4f84c931bcab4f4e83c212a36876c3c2244475db34e4b5fe1a6/scipy-1.15.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6f5e296ec63c5da6ba6fa0343ea73fd51b8b3e1a300b0a8cae3ed4b1122c7462", size = 40035857, upload-time = "2025-02-17T00:31:29.836Z" }, + { url = "https://files.pythonhosted.org/packages/b9/8b/7ec1832b09dbc88f3db411f8cdd47db04505c4b72c99b11c920a8f0479c3/scipy-1.15.2-cp311-cp311-win_amd64.whl", hash = "sha256:597a0c7008b21c035831c39927406c6181bcf8f60a73f36219b69d010aa04737", size = 41217654, upload-time = "2025-02-17T00:31:43.65Z" }, + { url = "https://files.pythonhosted.org/packages/4b/5d/3c78815cbab499610f26b5bae6aed33e227225a9fa5290008a733a64f6fc/scipy-1.15.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c4697a10da8f8765bb7c83e24a470da5797e37041edfd77fd95ba3811a47c4fd", size = 38756184, upload-time = "2025-02-17T00:31:50.623Z" }, + { url = "https://files.pythonhosted.org/packages/37/20/3d04eb066b471b6e171827548b9ddb3c21c6bbea72a4d84fc5989933910b/scipy-1.15.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:869269b767d5ee7ea6991ed7e22b3ca1f22de73ab9a49c44bad338b725603301", size = 30163558, upload-time = "2025-02-17T00:31:56.721Z" }, + { url = "https://files.pythonhosted.org/packages/a4/98/e5c964526c929ef1f795d4c343b2ff98634ad2051bd2bbadfef9e772e413/scipy-1.15.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:bad78d580270a4d32470563ea86c6590b465cb98f83d760ff5b0990cb5518a93", size = 22437211, upload-time = "2025-02-17T00:32:03.042Z" }, + { url = "https://files.pythonhosted.org/packages/1d/cd/1dc7371e29195ecbf5222f9afeedb210e0a75057d8afbd942aa6cf8c8eca/scipy-1.15.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:b09ae80010f52efddb15551025f9016c910296cf70adbf03ce2a8704f3a5ad20", size = 25232260, upload-time = "2025-02-17T00:32:07.847Z" }, + { url = "https://files.pythonhosted.org/packages/f0/24/1a181a9e5050090e0b5138c5f496fee33293c342b788d02586bc410c6477/scipy-1.15.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a6fd6eac1ce74a9f77a7fc724080d507c5812d61e72bd5e4c489b042455865e", size = 35198095, upload-time = "2025-02-17T00:32:14.565Z" }, + { url = "https://files.pythonhosted.org/packages/c0/53/eaada1a414c026673eb983f8b4a55fe5eb172725d33d62c1b21f63ff6ca4/scipy-1.15.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b871df1fe1a3ba85d90e22742b93584f8d2b8e6124f8372ab15c71b73e428b8", size = 37297371, upload-time = "2025-02-17T00:32:21.411Z" }, + { url = "https://files.pythonhosted.org/packages/e9/06/0449b744892ed22b7e7b9a1994a866e64895363572677a316a9042af1fe5/scipy-1.15.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:03205d57a28e18dfd39f0377d5002725bf1f19a46f444108c29bdb246b6c8a11", size = 36872390, upload-time = "2025-02-17T00:32:29.421Z" }, + { url = "https://files.pythonhosted.org/packages/6a/6f/a8ac3cfd9505ec695c1bc35edc034d13afbd2fc1882a7c6b473e280397bb/scipy-1.15.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:601881dfb761311045b03114c5fe718a12634e5608c3b403737ae463c9885d53", size = 39700276, upload-time = "2025-02-17T00:32:37.431Z" }, + { url = "https://files.pythonhosted.org/packages/f5/6f/e6e5aff77ea2a48dd96808bb51d7450875af154ee7cbe72188afb0b37929/scipy-1.15.2-cp312-cp312-win_amd64.whl", hash = "sha256:e7c68b6a43259ba0aab737237876e5c2c549a031ddb7abc28c7b47f22e202ded", size = 40942317, upload-time = "2025-02-17T00:32:45.47Z" }, + { url = "https://files.pythonhosted.org/packages/53/40/09319f6e0f276ea2754196185f95cd191cb852288440ce035d5c3a931ea2/scipy-1.15.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:01edfac9f0798ad6b46d9c4c9ca0e0ad23dbf0b1eb70e96adb9fa7f525eff0bf", size = 38717587, upload-time = "2025-02-17T00:32:53.196Z" }, + { url = "https://files.pythonhosted.org/packages/fe/c3/2854f40ecd19585d65afaef601e5e1f8dbf6758b2f95b5ea93d38655a2c6/scipy-1.15.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:08b57a9336b8e79b305a143c3655cc5bdbe6d5ece3378578888d2afbb51c4e37", size = 30100266, upload-time = "2025-02-17T00:32:59.318Z" }, + { url = "https://files.pythonhosted.org/packages/dd/b1/f9fe6e3c828cb5930b5fe74cb479de5f3d66d682fa8adb77249acaf545b8/scipy-1.15.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:54c462098484e7466362a9f1672d20888f724911a74c22ae35b61f9c5919183d", size = 22373768, upload-time = "2025-02-17T00:33:04.091Z" }, + { url = "https://files.pythonhosted.org/packages/15/9d/a60db8c795700414c3f681908a2b911e031e024d93214f2d23c6dae174ab/scipy-1.15.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:cf72ff559a53a6a6d77bd8eefd12a17995ffa44ad86c77a5df96f533d4e6c6bb", size = 25154719, upload-time = "2025-02-17T00:33:08.909Z" }, + { url = "https://files.pythonhosted.org/packages/37/3b/9bda92a85cd93f19f9ed90ade84aa1e51657e29988317fabdd44544f1dd4/scipy-1.15.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9de9d1416b3d9e7df9923ab23cd2fe714244af10b763975bea9e4f2e81cebd27", size = 35163195, upload-time = "2025-02-17T00:33:15.352Z" }, + { url = "https://files.pythonhosted.org/packages/03/5a/fc34bf1aa14dc7c0e701691fa8685f3faec80e57d816615e3625f28feb43/scipy-1.15.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb530e4794fc8ea76a4a21ccb67dea33e5e0e60f07fc38a49e821e1eae3b71a0", size = 37255404, upload-time = "2025-02-17T00:33:22.21Z" }, + { url = "https://files.pythonhosted.org/packages/4a/71/472eac45440cee134c8a180dbe4c01b3ec247e0338b7c759e6cd71f199a7/scipy-1.15.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5ea7ed46d437fc52350b028b1d44e002646e28f3e8ddc714011aaf87330f2f32", size = 36860011, upload-time = "2025-02-17T00:33:29.446Z" }, + { url = "https://files.pythonhosted.org/packages/01/b3/21f890f4f42daf20e4d3aaa18182dddb9192771cd47445aaae2e318f6738/scipy-1.15.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11e7ad32cf184b74380f43d3c0a706f49358b904fa7d5345f16ddf993609184d", size = 39657406, upload-time = "2025-02-17T00:33:39.019Z" }, + { url = "https://files.pythonhosted.org/packages/0d/76/77cf2ac1f2a9cc00c073d49e1e16244e389dd88e2490c91d84e1e3e4d126/scipy-1.15.2-cp313-cp313-win_amd64.whl", hash = "sha256:a5080a79dfb9b78b768cebf3c9dcbc7b665c5875793569f48bf0e2b1d7f68f6f", size = 40961243, upload-time = "2025-02-17T00:34:51.024Z" }, + { url = "https://files.pythonhosted.org/packages/4c/4b/a57f8ddcf48e129e6054fa9899a2a86d1fc6b07a0e15c7eebff7ca94533f/scipy-1.15.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:447ce30cee6a9d5d1379087c9e474628dab3db4a67484be1b7dc3196bfb2fac9", size = 38870286, upload-time = "2025-02-17T00:33:47.62Z" }, + { url = "https://files.pythonhosted.org/packages/0c/43/c304d69a56c91ad5f188c0714f6a97b9c1fed93128c691148621274a3a68/scipy-1.15.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:c90ebe8aaa4397eaefa8455a8182b164a6cc1d59ad53f79943f266d99f68687f", size = 30141634, upload-time = "2025-02-17T00:33:54.131Z" }, + { url = "https://files.pythonhosted.org/packages/44/1a/6c21b45d2548eb73be9b9bff421aaaa7e85e22c1f9b3bc44b23485dfce0a/scipy-1.15.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:def751dd08243934c884a3221156d63e15234a3155cf25978b0a668409d45eb6", size = 22415179, upload-time = "2025-02-17T00:33:59.948Z" }, + { url = "https://files.pythonhosted.org/packages/74/4b/aefac4bba80ef815b64f55da06f62f92be5d03b467f2ce3668071799429a/scipy-1.15.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:302093e7dfb120e55515936cb55618ee0b895f8bcaf18ff81eca086c17bd80af", size = 25126412, upload-time = "2025-02-17T00:34:06.328Z" }, + { url = "https://files.pythonhosted.org/packages/b1/53/1cbb148e6e8f1660aacd9f0a9dfa2b05e9ff1cb54b4386fe868477972ac2/scipy-1.15.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cd5b77413e1855351cdde594eca99c1f4a588c2d63711388b6a1f1c01f62274", size = 34952867, upload-time = "2025-02-17T00:34:12.928Z" }, + { url = "https://files.pythonhosted.org/packages/2c/23/e0eb7f31a9c13cf2dca083828b97992dd22f8184c6ce4fec5deec0c81fcf/scipy-1.15.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d0194c37037707b2afa7a2f2a924cf7bac3dc292d51b6a925e5fcb89bc5c776", size = 36890009, upload-time = "2025-02-17T00:34:19.55Z" }, + { url = "https://files.pythonhosted.org/packages/03/f3/e699e19cabe96bbac5189c04aaa970718f0105cff03d458dc5e2b6bd1e8c/scipy-1.15.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:bae43364d600fdc3ac327db99659dcb79e6e7ecd279a75fe1266669d9a652828", size = 36545159, upload-time = "2025-02-17T00:34:26.724Z" }, + { url = "https://files.pythonhosted.org/packages/af/f5/ab3838e56fe5cc22383d6fcf2336e48c8fe33e944b9037fbf6cbdf5a11f8/scipy-1.15.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f031846580d9acccd0044efd1a90e6f4df3a6e12b4b6bd694a7bc03a89892b28", size = 39136566, upload-time = "2025-02-17T00:34:34.512Z" }, + { url = "https://files.pythonhosted.org/packages/0a/c8/b3f566db71461cabd4b2d5b39bcc24a7e1c119535c8361f81426be39bb47/scipy-1.15.2-cp313-cp313t-win_amd64.whl", hash = "sha256:fe8a9eb875d430d81755472c5ba75e84acc980e4a8f6204d402849234d3017db", size = 40477705, upload-time = "2025-02-17T00:34:43.619Z" }, ] [[package]] @@ -577,50 +672,97 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fb/fe/3b0d2f828ffaceadcdcb51b75b9c62d98e62dd95ce575278de35f24a1c20/shapely-2.1.0.tar.gz", hash = "sha256:2cbe90e86fa8fc3ca8af6ffb00a77b246b918c7cf28677b7c21489b678f6b02e", size = 313617 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/d1/6a9371ec39d3ef08e13225594e6c55b045209629afd9e6d403204507c2a8/shapely-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:53e7ee8bd8609cf12ee6dce01ea5affe676976cf7049315751d53d8db6d2b4b2", size = 1830732 }, - { url = "https://files.pythonhosted.org/packages/32/87/799e3e48be7ce848c08509b94d2180f4ddb02e846e3c62d0af33da4d78d3/shapely-2.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3cab20b665d26dbec0b380e15749bea720885a481fa7b1eedc88195d4a98cfa4", size = 1638404 }, - { url = "https://files.pythonhosted.org/packages/85/00/6665d77f9dd09478ab0993b8bc31668aec4fd3e5f1ddd1b28dd5830e47be/shapely-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4a38b39a09340273c3c92b3b9a374272a12cc7e468aeeea22c1c46217a03e5c", size = 2945316 }, - { url = "https://files.pythonhosted.org/packages/34/49/738e07d10bbc67cae0dcfe5a484c6e518a517f4f90550dda2adf3a78b9f2/shapely-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:edaec656bdd9b71278b98e6f77c464b1c3b2daa9eace78012ff0f0b4b5b15b04", size = 3063099 }, - { url = "https://files.pythonhosted.org/packages/88/b8/138098674559362ab29f152bff3b6630de423378fbb0324812742433a4ef/shapely-2.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c8a732ddd9b25e7a54aa748e7df8fd704e23e5d5d35b7d376d80bffbfc376d04", size = 3887873 }, - { url = "https://files.pythonhosted.org/packages/67/a8/fdae7c2db009244991d86f4d2ca09d2f5ccc9d41c312c3b1ee1404dc55da/shapely-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9c93693ad8adfdc9138a5a2d42da02da94f728dd2e82d2f0f442f10e25027f5f", size = 4067004 }, - { url = "https://files.pythonhosted.org/packages/ed/78/17e17d91b489019379df3ee1afc4bd39787b232aaa1d540f7d376f0280b7/shapely-2.1.0-cp312-cp312-win32.whl", hash = "sha256:d8ac6604eefe807e71a908524de23a37920133a1729fe3a4dfe0ed82c044cbf4", size = 1527366 }, - { url = "https://files.pythonhosted.org/packages/b8/bd/9249bd6dda948441e25e4fb14cbbb5205146b0fff12c66b19331f1ff2141/shapely-2.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:f4f47e631aa4f9ec5576eac546eb3f38802e2f82aeb0552f9612cb9a14ece1db", size = 1708265 }, - { url = "https://files.pythonhosted.org/packages/8d/77/4e368704b2193e74498473db4461d697cc6083c96f8039367e59009d78bd/shapely-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b64423295b563f43a043eb786e7a03200ebe68698e36d2b4b1c39f31dfb50dfb", size = 1830029 }, - { url = "https://files.pythonhosted.org/packages/71/3c/d888597bda680e4de987316b05ca9db07416fa29523beff64f846503302f/shapely-2.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1b5578f45adc25b235b22d1ccb9a0348c8dc36f31983e57ea129a88f96f7b870", size = 1637999 }, - { url = "https://files.pythonhosted.org/packages/03/8d/ee0e23b7ef88fba353c63a81f1f329c77f5703835db7b165e7c0b8b7f839/shapely-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1a7e83d383b27f02b684e50ab7f34e511c92e33b6ca164a6a9065705dd64bcb", size = 2929348 }, - { url = "https://files.pythonhosted.org/packages/d1/a7/5c9cb413e4e2ce52c16be717e94abd40ce91b1f8974624d5d56154c5d40b/shapely-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:942031eb4d8f7b3b22f43ba42c09c7aa3d843aa10d5cc1619fe816e923b66e55", size = 3048973 }, - { url = "https://files.pythonhosted.org/packages/84/23/45b90c0bd2157b238490ca56ef2eedf959d3514c7d05475f497a2c88b6d9/shapely-2.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d2843c456a2e5627ee6271800f07277c0d2652fb287bf66464571a057dbc00b3", size = 3873148 }, - { url = "https://files.pythonhosted.org/packages/c0/bc/ed7d5d37f5395166042576f0c55a12d7e56102799464ba7ea3a72a38c769/shapely-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8c4b17469b7f39a5e6a7cfea79f38ae08a275427f41fe8b48c372e1449147908", size = 4052655 }, - { url = "https://files.pythonhosted.org/packages/c0/8f/a1dafbb10d20d1c569f2db3fb1235488f624dafe8469e8ce65356800ba31/shapely-2.1.0-cp313-cp313-win32.whl", hash = "sha256:30e967abd08fce49513d4187c01b19f139084019f33bec0673e8dbeb557c45e4", size = 1526600 }, - { url = "https://files.pythonhosted.org/packages/e3/f0/9f8cdf2258d7aed742459cea51c70d184de92f5d2d6f5f7f1ded90a18c31/shapely-2.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:1dc8d4364483a14aba4c844b7bd16a6fa3728887e2c33dfa1afa34a3cf4d08a5", size = 1707115 }, - { url = "https://files.pythonhosted.org/packages/75/ed/32952df461753a65b3e5d24c8efb361d3a80aafaef0b70d419063f6f2c11/shapely-2.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:673e073fea099d1c82f666fb7ab0a00a77eff2999130a69357ce11941260d855", size = 1824847 }, - { url = "https://files.pythonhosted.org/packages/ff/b9/2284de512af30b02f93ddcdd2e5c79834a3cf47fa3ca11b0f74396feb046/shapely-2.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6d1513f915a56de67659fe2047c1ad5ff0f8cbff3519d1e74fced69c9cb0e7da", size = 1631035 }, - { url = "https://files.pythonhosted.org/packages/35/16/a59f252a7e736b73008f10d0950ffeeb0d5953be7c0bdffd39a02a6ba310/shapely-2.1.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d6a7043178890b9e028d80496ff4c79dc7629bff4d78a2f25323b661756bab8", size = 2968639 }, - { url = "https://files.pythonhosted.org/packages/a5/0a/6a20eca7b0092cfa243117e8e145a58631a4833a0a519ec9b445172e83a0/shapely-2.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb638378dc3d76f7e85b67d7e2bb1366811912430ac9247ac00c127c2b444cdc", size = 3055713 }, - { url = "https://files.pythonhosted.org/packages/fb/44/eeb0c7583b1453d1cf7a319a1d738e08f98a5dc993fa1ef3c372983e4cb5/shapely-2.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:737124e87d91d616acf9a911f74ac55e05db02a43a6a7245b3d663817b876055", size = 3890478 }, - { url = "https://files.pythonhosted.org/packages/5d/6e/37ff3c6af1d408cacb0a7d7bfea7b8ab163a5486e35acb08997eae9d8756/shapely-2.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e6c229e7bb87aae5df82fa00b6718987a43ec168cc5affe095cca59d233f314", size = 4036148 }, - { url = "https://files.pythonhosted.org/packages/c8/6a/8c0b7de3aeb5014a23f06c5e9d3c7852ebcf0d6b00fe660b93261e310e24/shapely-2.1.0-cp313-cp313t-win32.whl", hash = "sha256:a9580bda119b1f42f955aa8e52382d5c73f7957e0203bc0c0c60084846f3db94", size = 1535993 }, - { url = "https://files.pythonhosted.org/packages/a8/91/ae80359a58409d52e4d62c7eacc7eb3ddee4b9135f1db884b6a43cf2e174/shapely-2.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:e8ff4e5cfd799ba5b6f37b5d5527dbd85b4a47c65b6d459a03d0962d2a9d4d10", size = 1717777 }, +sdist = { url = "https://files.pythonhosted.org/packages/fb/fe/3b0d2f828ffaceadcdcb51b75b9c62d98e62dd95ce575278de35f24a1c20/shapely-2.1.0.tar.gz", hash = "sha256:2cbe90e86fa8fc3ca8af6ffb00a77b246b918c7cf28677b7c21489b678f6b02e", size = 313617, upload-time = "2025-04-03T09:15:05.725Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/37/ae448f06f363ff3dfe4bae890abd842c4e3e9edaf01245dbc9b97008c9e6/shapely-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c8323031ef7c1bdda7a92d5ddbc7b6b62702e73ba37e9a8ccc8da99ec2c0b87c", size = 1820974, upload-time = "2025-04-03T09:14:11.301Z" }, + { url = "https://files.pythonhosted.org/packages/78/da/ea2a898e93c6953c5eef353a0e1781a0013a1352f2b90aa9ab0b800e0c75/shapely-2.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4da7c6cd748d86ec6aace99ad17129d30954ccf5e73e9911cdb5f0fa9658b4f8", size = 1624137, upload-time = "2025-04-03T09:14:13.127Z" }, + { url = "https://files.pythonhosted.org/packages/64/4a/f903f82f0fabcd3f43ea2e8132cabda079119247330a9fe58018c39c4e22/shapely-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f0cdf85ff80831137067e7a237085a3ee72c225dba1b30beef87f7d396cf02b", size = 2957161, upload-time = "2025-04-03T09:14:15.031Z" }, + { url = "https://files.pythonhosted.org/packages/92/07/3e2738c542d73182066196b8ce99388cb537d19e300e428d50b1537e3b21/shapely-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f2be5d79aac39886f23000727cf02001aef3af8810176c29ee12cdc3ef3a50", size = 3078530, upload-time = "2025-04-03T09:14:16.562Z" }, + { url = "https://files.pythonhosted.org/packages/82/08/32210e63d8f8af9142d37c2433ece4846862cdac91a0fe66f040780a71bd/shapely-2.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:21a4515009f56d7a159cf5c2554264e82f56405b4721f9a422cb397237c5dca8", size = 3902208, upload-time = "2025-04-03T09:14:18.342Z" }, + { url = "https://files.pythonhosted.org/packages/19/0e/0abb5225f8a32fbdb615476637038a7d2db40c0af46d1bb3a08b869bee39/shapely-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:15cebc323cec2cb6b2eaa310fdfc621f6dbbfaf6bde336d13838fcea76c885a9", size = 4082863, upload-time = "2025-04-03T09:14:20.233Z" }, + { url = "https://files.pythonhosted.org/packages/f8/1b/7cd816fd388108c872ab7e2930180b02d0c34891213f361e4a66e5e032f2/shapely-2.1.0-cp311-cp311-win32.whl", hash = "sha256:cad51b7a5c8f82f5640472944a74f0f239123dde9a63042b3c5ea311739b7d20", size = 1527488, upload-time = "2025-04-03T09:14:21.597Z" }, + { url = "https://files.pythonhosted.org/packages/fd/28/7bb5b1944d4002d4b2f967762018500381c3b532f98e456bbda40c3ded68/shapely-2.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:d4005309dde8658e287ad9c435c81877f6a95a9419b932fa7a1f34b120f270ae", size = 1708311, upload-time = "2025-04-03T09:14:23.245Z" }, + { url = "https://files.pythonhosted.org/packages/4e/d1/6a9371ec39d3ef08e13225594e6c55b045209629afd9e6d403204507c2a8/shapely-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:53e7ee8bd8609cf12ee6dce01ea5affe676976cf7049315751d53d8db6d2b4b2", size = 1830732, upload-time = "2025-04-03T09:14:25.047Z" }, + { url = "https://files.pythonhosted.org/packages/32/87/799e3e48be7ce848c08509b94d2180f4ddb02e846e3c62d0af33da4d78d3/shapely-2.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3cab20b665d26dbec0b380e15749bea720885a481fa7b1eedc88195d4a98cfa4", size = 1638404, upload-time = "2025-04-03T09:14:26.456Z" }, + { url = "https://files.pythonhosted.org/packages/85/00/6665d77f9dd09478ab0993b8bc31668aec4fd3e5f1ddd1b28dd5830e47be/shapely-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4a38b39a09340273c3c92b3b9a374272a12cc7e468aeeea22c1c46217a03e5c", size = 2945316, upload-time = "2025-04-03T09:14:28.266Z" }, + { url = "https://files.pythonhosted.org/packages/34/49/738e07d10bbc67cae0dcfe5a484c6e518a517f4f90550dda2adf3a78b9f2/shapely-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:edaec656bdd9b71278b98e6f77c464b1c3b2daa9eace78012ff0f0b4b5b15b04", size = 3063099, upload-time = "2025-04-03T09:14:30.067Z" }, + { url = "https://files.pythonhosted.org/packages/88/b8/138098674559362ab29f152bff3b6630de423378fbb0324812742433a4ef/shapely-2.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c8a732ddd9b25e7a54aa748e7df8fd704e23e5d5d35b7d376d80bffbfc376d04", size = 3887873, upload-time = "2025-04-03T09:14:31.912Z" }, + { url = "https://files.pythonhosted.org/packages/67/a8/fdae7c2db009244991d86f4d2ca09d2f5ccc9d41c312c3b1ee1404dc55da/shapely-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9c93693ad8adfdc9138a5a2d42da02da94f728dd2e82d2f0f442f10e25027f5f", size = 4067004, upload-time = "2025-04-03T09:14:33.976Z" }, + { url = "https://files.pythonhosted.org/packages/ed/78/17e17d91b489019379df3ee1afc4bd39787b232aaa1d540f7d376f0280b7/shapely-2.1.0-cp312-cp312-win32.whl", hash = "sha256:d8ac6604eefe807e71a908524de23a37920133a1729fe3a4dfe0ed82c044cbf4", size = 1527366, upload-time = "2025-04-03T09:14:35.348Z" }, + { url = "https://files.pythonhosted.org/packages/b8/bd/9249bd6dda948441e25e4fb14cbbb5205146b0fff12c66b19331f1ff2141/shapely-2.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:f4f47e631aa4f9ec5576eac546eb3f38802e2f82aeb0552f9612cb9a14ece1db", size = 1708265, upload-time = "2025-04-03T09:14:36.878Z" }, + { url = "https://files.pythonhosted.org/packages/8d/77/4e368704b2193e74498473db4461d697cc6083c96f8039367e59009d78bd/shapely-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b64423295b563f43a043eb786e7a03200ebe68698e36d2b4b1c39f31dfb50dfb", size = 1830029, upload-time = "2025-04-03T09:14:38.795Z" }, + { url = "https://files.pythonhosted.org/packages/71/3c/d888597bda680e4de987316b05ca9db07416fa29523beff64f846503302f/shapely-2.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1b5578f45adc25b235b22d1ccb9a0348c8dc36f31983e57ea129a88f96f7b870", size = 1637999, upload-time = "2025-04-03T09:14:40.209Z" }, + { url = "https://files.pythonhosted.org/packages/03/8d/ee0e23b7ef88fba353c63a81f1f329c77f5703835db7b165e7c0b8b7f839/shapely-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1a7e83d383b27f02b684e50ab7f34e511c92e33b6ca164a6a9065705dd64bcb", size = 2929348, upload-time = "2025-04-03T09:14:42.11Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a7/5c9cb413e4e2ce52c16be717e94abd40ce91b1f8974624d5d56154c5d40b/shapely-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:942031eb4d8f7b3b22f43ba42c09c7aa3d843aa10d5cc1619fe816e923b66e55", size = 3048973, upload-time = "2025-04-03T09:14:43.841Z" }, + { url = "https://files.pythonhosted.org/packages/84/23/45b90c0bd2157b238490ca56ef2eedf959d3514c7d05475f497a2c88b6d9/shapely-2.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d2843c456a2e5627ee6271800f07277c0d2652fb287bf66464571a057dbc00b3", size = 3873148, upload-time = "2025-04-03T09:14:45.924Z" }, + { url = "https://files.pythonhosted.org/packages/c0/bc/ed7d5d37f5395166042576f0c55a12d7e56102799464ba7ea3a72a38c769/shapely-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8c4b17469b7f39a5e6a7cfea79f38ae08a275427f41fe8b48c372e1449147908", size = 4052655, upload-time = "2025-04-03T09:14:47.475Z" }, + { url = "https://files.pythonhosted.org/packages/c0/8f/a1dafbb10d20d1c569f2db3fb1235488f624dafe8469e8ce65356800ba31/shapely-2.1.0-cp313-cp313-win32.whl", hash = "sha256:30e967abd08fce49513d4187c01b19f139084019f33bec0673e8dbeb557c45e4", size = 1526600, upload-time = "2025-04-03T09:14:48.952Z" }, + { url = "https://files.pythonhosted.org/packages/e3/f0/9f8cdf2258d7aed742459cea51c70d184de92f5d2d6f5f7f1ded90a18c31/shapely-2.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:1dc8d4364483a14aba4c844b7bd16a6fa3728887e2c33dfa1afa34a3cf4d08a5", size = 1707115, upload-time = "2025-04-03T09:14:50.445Z" }, + { url = "https://files.pythonhosted.org/packages/75/ed/32952df461753a65b3e5d24c8efb361d3a80aafaef0b70d419063f6f2c11/shapely-2.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:673e073fea099d1c82f666fb7ab0a00a77eff2999130a69357ce11941260d855", size = 1824847, upload-time = "2025-04-03T09:14:52.358Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b9/2284de512af30b02f93ddcdd2e5c79834a3cf47fa3ca11b0f74396feb046/shapely-2.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6d1513f915a56de67659fe2047c1ad5ff0f8cbff3519d1e74fced69c9cb0e7da", size = 1631035, upload-time = "2025-04-03T09:14:53.739Z" }, + { url = "https://files.pythonhosted.org/packages/35/16/a59f252a7e736b73008f10d0950ffeeb0d5953be7c0bdffd39a02a6ba310/shapely-2.1.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d6a7043178890b9e028d80496ff4c79dc7629bff4d78a2f25323b661756bab8", size = 2968639, upload-time = "2025-04-03T09:14:55.674Z" }, + { url = "https://files.pythonhosted.org/packages/a5/0a/6a20eca7b0092cfa243117e8e145a58631a4833a0a519ec9b445172e83a0/shapely-2.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb638378dc3d76f7e85b67d7e2bb1366811912430ac9247ac00c127c2b444cdc", size = 3055713, upload-time = "2025-04-03T09:14:57.564Z" }, + { url = "https://files.pythonhosted.org/packages/fb/44/eeb0c7583b1453d1cf7a319a1d738e08f98a5dc993fa1ef3c372983e4cb5/shapely-2.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:737124e87d91d616acf9a911f74ac55e05db02a43a6a7245b3d663817b876055", size = 3890478, upload-time = "2025-04-03T09:14:59.139Z" }, + { url = "https://files.pythonhosted.org/packages/5d/6e/37ff3c6af1d408cacb0a7d7bfea7b8ab163a5486e35acb08997eae9d8756/shapely-2.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e6c229e7bb87aae5df82fa00b6718987a43ec168cc5affe095cca59d233f314", size = 4036148, upload-time = "2025-04-03T09:15:01.328Z" }, + { url = "https://files.pythonhosted.org/packages/c8/6a/8c0b7de3aeb5014a23f06c5e9d3c7852ebcf0d6b00fe660b93261e310e24/shapely-2.1.0-cp313-cp313t-win32.whl", hash = "sha256:a9580bda119b1f42f955aa8e52382d5c73f7957e0203bc0c0c60084846f3db94", size = 1535993, upload-time = "2025-04-03T09:15:02.973Z" }, + { url = "https://files.pythonhosted.org/packages/a8/91/ae80359a58409d52e4d62c7eacc7eb3ddee4b9135f1db884b6a43cf2e174/shapely-2.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:e8ff4e5cfd799ba5b6f37b5d5527dbd85b4a47c65b6d459a03d0962d2a9d4d10", size = 1717777, upload-time = "2025-04-03T09:15:04.461Z" }, ] [[package]] name = "six" version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "tomli" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload-time = "2024-11-27T22:38:36.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077, upload-time = "2024-11-27T22:37:54.956Z" }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429, upload-time = "2024-11-27T22:37:56.698Z" }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067, upload-time = "2024-11-27T22:37:57.63Z" }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030, upload-time = "2024-11-27T22:37:59.344Z" }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898, upload-time = "2024-11-27T22:38:00.429Z" }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894, upload-time = "2024-11-27T22:38:02.094Z" }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319, upload-time = "2024-11-27T22:38:03.206Z" }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273, upload-time = "2024-11-27T22:38:04.217Z" }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310, upload-time = "2024-11-27T22:38:05.908Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309, upload-time = "2024-11-27T22:38:06.812Z" }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762, upload-time = "2024-11-27T22:38:07.731Z" }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453, upload-time = "2024-11-27T22:38:09.384Z" }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486, upload-time = "2024-11-27T22:38:10.329Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349, upload-time = "2024-11-27T22:38:11.443Z" }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159, upload-time = "2024-11-27T22:38:13.099Z" }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243, upload-time = "2024-11-27T22:38:14.766Z" }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645, upload-time = "2024-11-27T22:38:15.843Z" }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584, upload-time = "2024-11-27T22:38:17.645Z" }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875, upload-time = "2024-11-27T22:38:19.159Z" }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418, upload-time = "2024-11-27T22:38:20.064Z" }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708, upload-time = "2024-11-27T22:38:21.659Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582, upload-time = "2024-11-27T22:38:22.693Z" }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543, upload-time = "2024-11-27T22:38:24.367Z" }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691, upload-time = "2024-11-27T22:38:26.081Z" }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170, upload-time = "2024-11-27T22:38:27.921Z" }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530, upload-time = "2024-11-27T22:38:29.591Z" }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666, upload-time = "2024-11-27T22:38:30.639Z" }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954, upload-time = "2024-11-27T22:38:31.702Z" }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724, upload-time = "2024-11-27T22:38:32.837Z" }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383, upload-time = "2024-11-27T22:38:34.455Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload-time = "2024-11-27T22:38:35.385Z" }, ] [[package]] name = "typing-extensions" version = "4.13.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0e/3e/b00a62db91a83fff600de219b6ea9908e6918664899a2d85db222f4fbf19/typing_extensions-4.13.0.tar.gz", hash = "sha256:0a4ac55a5820789d87e297727d229866c9650f6521b64206413c4fbada24d95b", size = 106520 } +sdist = { url = "https://files.pythonhosted.org/packages/0e/3e/b00a62db91a83fff600de219b6ea9908e6918664899a2d85db222f4fbf19/typing_extensions-4.13.0.tar.gz", hash = "sha256:0a4ac55a5820789d87e297727d229866c9650f6521b64206413c4fbada24d95b", size = 106520, upload-time = "2025-03-26T03:49:41.628Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/86/39b65d676ec5732de17b7e3c476e45bb80ec64eb50737a8dce1a4178aba1/typing_extensions-4.13.0-py3-none-any.whl", hash = "sha256:c8dd92cc0d6425a97c18fbb9d1954e5ff92c1ca881a309c45f06ebc0b79058e5", size = 45683 }, + { url = "https://files.pythonhosted.org/packages/e0/86/39b65d676ec5732de17b7e3c476e45bb80ec64eb50737a8dce1a4178aba1/typing_extensions-4.13.0-py3-none-any.whl", hash = "sha256:c8dd92cc0d6425a97c18fbb9d1954e5ff92c1ca881a309c45f06ebc0b79058e5", size = 45683, upload-time = "2025-03-26T03:49:40.35Z" }, ] [[package]] @@ -630,18 +772,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222 } +sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222, upload-time = "2025-02-25T17:27:59.638Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125 }, + { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125, upload-time = "2025-02-25T17:27:57.754Z" }, ] [[package]] name = "tzdata" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380 } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839 }, + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, ] [[package]] @@ -653,7 +795,7 @@ dependencies = [ { name = "filelock" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/38/e0/633e369b91bbc664df47dcb5454b6c7cf441e8f5b9d0c250ce9f0546401e/virtualenv-20.30.0.tar.gz", hash = "sha256:800863162bcaa5450a6e4d721049730e7f2dae07720e0902b0e4040bd6f9ada8", size = 4346945 } +sdist = { url = "https://files.pythonhosted.org/packages/38/e0/633e369b91bbc664df47dcb5454b6c7cf441e8f5b9d0c250ce9f0546401e/virtualenv-20.30.0.tar.gz", hash = "sha256:800863162bcaa5450a6e4d721049730e7f2dae07720e0902b0e4040bd6f9ada8", size = 4346945, upload-time = "2025-03-31T16:33:29.185Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4c/ed/3cfeb48175f0671ec430ede81f628f9fb2b1084c9064ca67ebe8c0ed6a05/virtualenv-20.30.0-py3-none-any.whl", hash = "sha256:e34302959180fca3af42d1800df014b35019490b119eba981af27f2fa486e5d6", size = 4329461 }, + { url = "https://files.pythonhosted.org/packages/4c/ed/3cfeb48175f0671ec430ede81f628f9fb2b1084c9064ca67ebe8c0ed6a05/virtualenv-20.30.0-py3-none-any.whl", hash = "sha256:e34302959180fca3af42d1800df014b35019490b119eba981af27f2fa486e5d6", size = 4329461, upload-time = "2025-03-31T16:33:26.758Z" }, ] From 70396ddfe2024defb59ecbe04ce6dce4b6036288 Mon Sep 17 00:00:00 2001 From: Alp Erkent Date: Fri, 16 May 2025 16:09:09 -0400 Subject: [PATCH 03/11] Refactor center_spiral.py, orchestrator.py, and other various changes - Modified center_spiral.py so that it can be used to center reference spiral as well, and added unit tests. - Renamed the unit test script for reference spiral module to match the module name. - Replaced the sample data file with a more realistic one. - Added a perfect spiral with 3000 points to the sample data folder to use for testing the center_spiral function. - Removed the center_spiral call from velocity.py since the spiral is now centered in the orchestratior. - Changed the name of the class method for SpiralConfig and modified relevant calls. - Refactored orchestrator to refine output formatting. --- src/graphomotor/core/config.py | 4 +- src/graphomotor/core/orchestrator.py | 36 +- src/graphomotor/features/velocity.py | 2 - src/graphomotor/utils/center_spiral.py | 33 +- tests/conftest.py | 18 +- ...]perfect-3000-points-spiral_trace1_Dom.csv | 3001 +++++++++++++++++ ...7d0e8819c1120b4f708d-spiral_trace1_Dom.csv | 2500 ++++++++++++++ ...12-0b4f-6f3000000000-spiral_trace1_Dom.csv | 22 - tests/unit/test_center_spiral.py | 43 + tests/unit/test_config.py | 6 +- ...l.py => test_generate_reference_spiral.py} | 2 +- 11 files changed, 5616 insertions(+), 51 deletions(-) create mode 100644 tests/sample_data/[5000000]perfect-3000-points-spiral_trace1_Dom.csv create mode 100755 tests/sample_data/[5123456]65318bf53c36ce79135b1049-648c7d0e8819c1120b4f708d-spiral_trace1_Dom.csv delete mode 100755 tests/sample_data/[5123456]d3afad5c-8a5d-4292-8f54-24109ea6f793-648c7b3e-8819-c112-0b4f-6f3000000000-spiral_trace1_Dom.csv create mode 100644 tests/unit/test_center_spiral.py rename tests/unit/{test_reference_spiral.py => test_generate_reference_spiral.py} (95%) diff --git a/src/graphomotor/core/config.py b/src/graphomotor/core/config.py index 83bed47..b4a531a 100644 --- a/src/graphomotor/core/config.py +++ b/src/graphomotor/core/config.py @@ -67,8 +67,8 @@ class SpiralConfig: num_points: int = 10000 @classmethod - def from_dict(cls, config_dict: dict[str, float | int]) -> "SpiralConfig": - """Create a configuration from a dictionary. + def add_custom_params(cls, config_dict: dict[str, float | int]) -> "SpiralConfig": + """Update the SpiralConfig instance with custom parameters. Args: config_dict: Dictionary with configuration parameters. diff --git a/src/graphomotor/core/orchestrator.py b/src/graphomotor/core/orchestrator.py index 474fc2c..74b8b61 100644 --- a/src/graphomotor/core/orchestrator.py +++ b/src/graphomotor/core/orchestrator.py @@ -97,7 +97,7 @@ def get_feature_categories( def export_features_to_csv( spiral: models.Spiral, - features: dict[str, float], + features: dict[str, str], input_path: pathlib.Path, output_path: pathlib.Path, ) -> None: @@ -127,14 +127,21 @@ def export_features_to_csv( else: output_file = output_path - features_df = pd.DataFrame([features]).T - - features_df["participant_id"] = participant_id - features_df["task"] = task - features_df["hand"] = hand - features_df["source_file"] = str(input_path) + metadata = { + "participant_id": participant_id, + "task": task, + "hand": hand, + "source_file": str(input_path), + } + + features_df = pd.DataFrame( + { + "variable": list(metadata.keys()) + list(features.keys()), + "value": list(metadata.values()) + list(features.values()), + } + ) - features_df.to_csv(output_file, index=False) + features_df.to_csv(output_file, index=False, header=False) logger.debug(f"Features saved successfully to {output_file}") @@ -143,7 +150,7 @@ def extract_features( output_path: pathlib.Path | str | None, feature_categories: list[str], spiral_config: config.SpiralConfig | None, -) -> dict[str, float]: +) -> dict[str, str]: """Extract features from spiral drawing data. Args: @@ -174,15 +181,18 @@ def extract_features( reference_spiral = generate_reference_spiral.generate_reference_spiral( config=config_to_use ) + reference_spiral = center_spiral.center_spiral(reference_spiral) features = get_feature_categories(spiral, reference_spiral, feature_categories) logger.info(f"Feature extraction complete. Extracted {len(features)} features") + formatted_features = {k: f"{v:.15f}" for k, v in features.items()} + if output_path: output_path = _ensure_path(output_path) - export_features_to_csv(spiral, features, input_path, output_path) + export_features_to_csv(spiral, formatted_features, input_path, output_path) - return features + return formatted_features def run_pipeline( @@ -190,7 +200,7 @@ def run_pipeline( output_path: pathlib.Path | str | None, feature_categories: list[str], config_params: dict[str, float | int] | None = None, -) -> dict[str, float]: +) -> dict[str, str]: """Run the Graphomotor pipeline to extract features from spiral drawing data. Args: @@ -216,7 +226,7 @@ def run_pipeline( spiral_config = None if config_params: logger.info(f"Custom spiral configuration: {config_params}") - spiral_config = config.SpiralConfig.from_dict(config_params) + spiral_config = config.SpiralConfig.add_custom_params(config_params) features = extract_features( input_path, output_path, feature_categories, spiral_config diff --git a/src/graphomotor/features/velocity.py b/src/graphomotor/features/velocity.py index c11e391..910ef41 100644 --- a/src/graphomotor/features/velocity.py +++ b/src/graphomotor/features/velocity.py @@ -4,7 +4,6 @@ from scipy import stats from graphomotor.core import models -from graphomotor.utils import center_spiral def _calculate_statistics(values: np.ndarray, name: str) -> dict[str, float]: @@ -57,7 +56,6 @@ def calculate_velocity_metrics(spiral: models.Spiral) -> dict[str, float]: Returns: Dictionary containing calculated velocity metrics. """ - spiral = center_spiral.center_spiral(spiral) x = spiral.data["x"].values y = spiral.data["y"].values time = spiral.data["seconds"].values diff --git a/src/graphomotor/utils/center_spiral.py b/src/graphomotor/utils/center_spiral.py index a028554..a5efdb0 100644 --- a/src/graphomotor/utils/center_spiral.py +++ b/src/graphomotor/utils/center_spiral.py @@ -1,19 +1,40 @@ """Utility functions for centering a spiral.""" +from typing import overload + +import numpy as np + from graphomotor.core import config, models -def center_spiral(spiral: models.Spiral) -> models.Spiral: +@overload +def center_spiral(spiral: models.Spiral) -> models.Spiral: ... +@overload +def center_spiral(spiral: np.ndarray) -> np.ndarray: ... +def center_spiral(spiral): """Center a spiral by translating it to the origin. Args: - spiral: Spiral object containing spiral data. + spiral: Either a Spiral object containing spiral data or a NumPy array + with shape (N, 2) containing (x, y) coordinates. Returns: - Spiral object with centered spiral data. + The centered spiral of the same type as the input. + + Raises: + TypeError: If the input is neither a Spiral object nor a NumPy array. """ spiral_config = config.SpiralConfig() - spiral.data["x"] -= spiral_config.center_x - spiral.data["y"] -= spiral_config.center_y - return spiral + if isinstance(spiral, models.Spiral): + spiral.data["x"] -= spiral_config.center_x + spiral.data["y"] -= spiral_config.center_y + return spiral + elif isinstance(spiral, np.ndarray): + spiral[:, 0] -= spiral_config.center_x + spiral[:, 1] -= spiral_config.center_y + return spiral + else: + raise TypeError( + f"Expected models.Spiral or np.ndarray, got {type(spiral).__name__}" + ) diff --git a/tests/conftest.py b/tests/conftest.py index e0ef0cc..e79a1e3 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -8,6 +8,7 @@ import pytest from graphomotor.core import config, models +from graphomotor.io import reader from graphomotor.utils import generate_reference_spiral @@ -17,7 +18,10 @@ def sample_data() -> pathlib.Path: return ( pathlib.Path(__file__).parent / "sample_data" - / "[5123456]d3afad5c-8a5d-4292-8f54-24109ea6f793-648c7b3e-8819-c112-0b4f-6f3000000000-spiral_trace1_Dom.csv" # noqa: E501 + / ( + "[5123456]65318bf53c36ce79135b1049-648c7d0e8819c1120b4f708d" + "-spiral_trace1_Dom.csv" + ) ) @@ -35,7 +39,7 @@ def valid_spiral_metadata() -> dict[str, str | datetime.datetime]: "hand": "Dom", "task": "spiral_trace1", "start_time": datetime.datetime.fromtimestamp( - 1701700376.296, + 1697745697.08, tz=datetime.timezone.utc, ), } @@ -57,3 +61,13 @@ def valid_spiral( def ref_spiral() -> np.ndarray: """Create a reference spiral for testing.""" return generate_reference_spiral.generate_reference_spiral(config.SpiralConfig()) + + +@pytest.fixture +def perfect_spiral() -> models.Spiral: + """Create a perfect Spiral object.""" + return reader.load_spiral( + pathlib.Path(__file__).parent + / "sample_data" + / "[5000000]perfect-3000-points-spiral_trace1_Dom.csv" + ) diff --git a/tests/sample_data/[5000000]perfect-3000-points-spiral_trace1_Dom.csv b/tests/sample_data/[5000000]perfect-3000-points-spiral_trace1_Dom.csv new file mode 100644 index 0000000..618aedc --- /dev/null +++ b/tests/sample_data/[5000000]perfect-3000-points-spiral_trace1_Dom.csv @@ -0,0 +1,3001 @@ +line_number,x,y,UTC_Timestamp,seconds,epoch_time_in_seconds_start +0,50.0,50.0,1747411076.559,0.0,1747411076.559 +0,50.11315194223308,50.0120220718604,1747411076.567,0.008, +0,50.22134205741786,50.04730450979513,1747411076.575,0.017, +0,50.32021830693163,50.10367010100403,1747411076.584,0.025, +0,50.40644629426429,50.17798589043947,1747411076.592,0.033, +0,50.47783600828587,50.26667819756947,1747411076.6,0.042, +0,50.53324213616518,50.366164075287266,1747411076.609,0.05, +0,50.57234928583437,50.473130823601664,1747411076.617,0.058, +0,50.595436700071986,50.58467293122365,1747411076.625,0.067, +0,50.603174302451045,50.69832888843585,1747411076.634,0.075, +0,50.59646677010891,50.81206083210558,1747411076.642,0.083, +0,50.57634329507111,50.924207995828354,1747411076.65,0.092, +0,50.543883764891014,51.03343244396179,1747411076.659,0.1, +0,50.500171432589454,51.13866656951652,1747411076.667,0.108, +0,50.44626384203491,51.23906640726281,1747411076.675,0.117, +0,50.383175905977,51.333971911488284,1747411076.684,0.125, +0,50.31187087574421,51.42287396542419,1747411076.692,0.133, +0,50.23325632887516,51.50538733252351,1747411076.7,0.142, +0,50.1481832774387,51.5812286152567,1747411076.709,0.15, +0,50.05744716209533,51.650198329210376,1747411076.717,0.158, +0,49.96178993678153,51.71216631350526,1747411076.725,0.167, +0,49.86190273730319,51.7670598277915,1747411076.734,0.175, +0,49.75842881489776,51.814853807185905,1747411076.742,0.183, +0,49.651966537406736,51.85556285093387,1747411076.75,0.192, +0,49.54307233910626,51.88923460676514,1747411076.759,0.2, +0,49.432263550543944,51.91594428237702,1747411076.767,0.208, +0,49.32002107177173,51.935790070719634,1747411076.775,0.217, +0,49.206791872553914,51.94888931937727,1747411076.784,0.225, +0,49.092991315634386,51.955375308674384,1747411076.792,0.233, +0,48.97900530668074,51.95539453014553,1747411076.8,0.242, +0,48.865192278854785,51.94910437828301,1747411076.809,0.25, +0,48.75188502224292,51.93667118527096,1747411076.817,0.258, +0,48.639392369368814,51.91826854171495,1747411076.825,0.267, +0,48.528000748199126,51.89407585694737,1747411076.834,0.275, +0,48.417975613754805,51.86427712092448,1747411076.842,0.283, +0,48.309562768870954,51.829059836491,1747411076.85,0.292, +0,48.20298958392999,51.78861409622751,1747411076.859,0.3, +0,48.098466124638165,51.743131782500505,1747411076.867,0.308, +0,47.996186196084736,51.69280587288544,1747411076.875,0.317, +0,47.896328310658184,51.63782983607893,1747411076.884,0.325, +0,47.79905658658875,51.57839710576407,1747411076.892,0.333, +0,47.70452158329253,51.51470062187877,1747411076.9,0.342, +0,47.61286107906149,51.44693243034578,1747411076.909,0.35, +0,47.52420079610181,51.375283333668385,1747411076.917,0.358, +0,47.43865507742727,51.299942585912824,1747411076.925,0.367, +0,47.356327519668255,51.22109762653287,1747411076.934,0.375, +0,47.27731156545698,51.13893384827483,1747411076.942,0.383, +0,47.201691058691395,51.05363439506082,1747411076.95,0.392, +0,47.12954076565949,50.965379986304846,1747411076.959,0.4, +0,47.06092686471911,50.874348764588454,1747411076.967,0.408, +0,46.995907406971966,50.7807161640238,1747411076.975,0.417, +0,46.934532750141635,50.6846547969747,1747411076.984,0.425, +0,46.87684596765981,50.58633435709885,1747411076.992,0.433, +0,46.82288323478183,50.48592153692619,1747411077.0,0.442, +0,46.772674193387964,50.38357995840466,1747411077.009,0.45, +0,46.726242296979194,50.27947011503136,1747411077.017,0.458, +0,46.683605137244065,50.173749324349124,1747411077.025,0.467, +0,46.64477475345392,50.06657168972856,1747411077.034,0.475, +0,46.60975792583683,49.95808807047786,1747411077.042,0.483, +0,46.57855645398397,49.84844605942922,1747411077.05,0.492, +0,46.55116742125514,49.73778996724377,1747411077.059,0.5, +0,46.52758344607148,49.62626081275852,1747411077.067,0.508, +0,46.507792920912365,49.513996318770545,1747411077.075,0.517, +0,46.49178023976888,49.40113091271684,1747411077.084,0.525, +0,46.47952601474818,49.287795731763616,1747411077.092,0.533, +0,46.471007282469685,49.174118631868524,1747411077.1,0.542, +0,46.466197700845996,49.060224200422354,1747411077.109,0.55, +0,46.46506773679764,48.94623377211593,1747411077.117,0.558, +0,46.4675848454105,48.83226544771195,1747411077.125,0.567, +0,46.47371364100841,48.718434115432416,1747411077.134,0.575, +0,46.48341606058013,48.60485147469954,1747411077.142,0.583, +0,46.496651519969184,48.49162606199247,1747411077.15,0.592, +0,46.51337706320716,48.37886327860421,1747411077.159,0.6, +0,46.53354750534554,48.266665420102484,1747411077.167,0.608, +0,46.55711556911735,48.15513170731633,1747411077.175,0.617, +0,46.58403201573847,48.04435831868565,1747411077.184,0.625, +0,46.61424577013841,47.934438423825725,1747411077.192,0.633, +0,46.647704040891924,47.8254622181711,1747411077.2,0.642, +0,46.68435243510617,47.717516958575544,1747411077.209,0.65, +0,46.724135068502,47.61068699975472,1747411077.217,0.658, +0,46.76699467091408,47.50505383146827,1747411077.225,0.667, +0,46.8128726874206,47.40069611634639,1747411077.234,0.675, +0,46.86170937530129,47.29768972827415,1747411077.242,0.683, +0,46.91344389701086,47.196107791253716,1747411077.25,0.692, +0,46.96801440934415,47.09602071867138,1747411077.259,0.7, +0,47.02535814895964,46.99749625290224,1747411077.267,0.708, +0,47.08541151441839,46.90059950519064,1747411077.275,0.717, +0,47.14811014488722,46.80539299574988,1747411077.284,0.725, +0,47.21338899564666,46.71193669402871,1747411077.292,0.733, +0,47.28118241053685,46.620288059096794,1747411077.3,0.742, +0,47.35142419146759,46.53050208010483,1747411077.309,0.75, +0,47.42404766511218,46.442631316778765,1747411077.317,0.758, +0,47.49898574689857,46.356725939910525,1747411077.325,0.767, +0,47.576171002405715,46.27283377181087,1747411077.334,0.775, +0,47.65553570626756,46.19100032669264,1747411077.342,0.783, +0,47.737011898682155,46.11126885095507,1747411077.35,0.792, +0,47.820531439618605,46.03368036334241,1747411077.359,0.8, +0,47.906026060810284,45.95827369495194,1747411077.367,0.808, +0,47.99342741561829,45.88508552906869,1747411077.375,0.817, +0,48.082667126845635,45.81415044080592,1747411077.384,0.825, +0,48.17367683257849,45.74550093653198,1747411077.392,0.833, +0,48.26638823012777,45.67916749306604,1747411077.4,0.842, +0,48.360733118140786,45.6151785966262,1747411077.409,0.85, +0,48.456643436949676,45.55356078151537,1747411077.417,0.858, +0,48.55405130722053,45.49433866853095,1747411077.425,0.867, +0,48.65288906696415,45.437535003086026,1747411077.434,0.875, +0,48.75308930696696,45.38317069303064,1747411077.442,0.883, +0,48.85458490469809,45.331264846162576,1747411077.45,0.892, +0,48.95730905674616,45.281834807418264,1747411077.459,0.9, +0,49.06119530983739,45.23489619573518,1747411077.467,0.908, +0,49.16617759048878,45.19046294057594,1747411077.475,0.917, +0,49.27219023331626,45.148547318118545,1747411077.484,0.925, +0,49.379168008112174,45.109159987077376,1747411077.492,0.933, +0,49.48704614564395,45.07231002418824,1747411077.5,0.942, +0,49.59576036228473,45.03800495932271,1747411077.509,0.95, +0,49.70524688348869,45.006250810239315,1747411077.517,0.958, +0,49.81544246615478,44.97705211696525,1747411077.525,0.967, +0,49.92628441991571,44.95041197580532,1747411077.534,0.975, +0,50.037710627388655,44.926332072974894,1747411077.542,0.983, +0,50.1496595634219,44.90481271785414,1747411077.55,0.992, +0,50.262070313370934,44.88585287586151,1747411077.559,1.0, +0,50.37488259043614,44.8694502009443,1747411077.567,1.008, +0,50.48803675209289,44.85560106768498,1747411077.575,1.017, +0,50.60147381564415,44.84430060302196,1747411077.584,1.025, +0,50.71513547292419,44.83554271758392,1747411077.592,1.033, +0,50.828964104181296,44.829320136637016,1747411077.6,1.042, +0,50.94290279116628,44.825624430644794,1747411077.609,1.05, +0,51.05689532945282,44.82444604544044,1747411077.617,1.058, +0,51.1708862400144,44.82577433201175,1747411077.625,1.067, +0,51.284820780082285,44.82959757589895,1747411077.634,1.075, +0,51.39864495330781,44.83590302620611,1747411077.642,1.083, +0,51.512305519251456,44.8446769242267,1747411077.65,1.092, +0,51.62575000222087,44.855904531684395,1747411077.659,1.1, +0,51.73892669947825,44.86957015859002,1747411077.667,1.108, +0,51.85178468883867,44.885657190716095,1747411077.675,1.117, +0,51.96427383567809,44.9041481166901,1747411077.684,1.125, +0,52.07634479937063,44.92502455470828,1747411077.692,1.133, +0,52.18794903917366,44.948267278871334,1747411077.7,1.142, +0,52.29903881957853,44.97385624514401,1747411077.709,1.15, +0,52.40956721514445,45.001770616940306,1747411077.717,1.158, +0,52.51948811483228,45.03198879033632,1747411077.725,1.167, +0,52.62875622585454,45.064488418912816,1747411077.734,1.175, +0,52.7373270770576,45.09924643822971,1747411077.742,1.183, +0,52.84515702185116,45.13623908993459,1747411077.75,1.192, +0,52.952203240700115,45.175441945507714,1747411077.759,1.2, +0,53.05842374319305,45.21682992964586,1747411077.767,1.208, +0,53.16377736970156,45.260377343287395,1747411077.775,1.217, +0,53.26822379264366,45.30605788628115,1747411077.784,1.225, +0,53.37172351736474,45.3538446797017,1747411077.792,1.233, +0,53.47423788264878,45.403710287813595,1747411077.8,1.242, +0,53.57572906087204,45.45562673968723,1747411077.809,1.25, +0,53.67616005781154,45.50956555046914,1747411077.817,1.258, +0,53.775494712119816,45.565497742309375,1747411077.825,1.267, +0,53.87369769447737,45.623393864948795,1747411077.834,1.275, +0,53.97073450643394,45.68322401596914,1747411077.842,1.283, +0,54.06657147894905,45.744957860708624,1747411077.85,1.292, +0,54.16117577064253,45.808564651846105,1747411077.859,1.3, +0,54.25451536576488,45.874013248656475,1747411077.867,1.308, +0,54.3465590718975,45.94127213594055,1747411077.875,1.317, +0,54.43727651739209,46.01030944263204,1747411077.884,1.325, +0,54.52663814855877,46.081092960084845,1747411077.892,1.333, +0,54.61461522661161,46.15359016004343,1747411077.9,1.342, +0,54.70117982438077,46.22776821229955,1747411077.909,1.35, +0,54.78630482279925,46.303594002037975,1747411077.917,1.358, +0,54.86996390717298,46.381034146874526,1747411077.925,1.367, +0,54.952131563242,46.460055013589276,1747411077.934,1.375, +0,55.03278307304078,46.54062273455803,1747411077.942,1.383, +0,55.11189451056515,46.62270322388497,1747411077.95,1.392, +0,55.189442737253245,46.70626219323967,1747411077.959,1.4, +0,55.26540539728783,46.79126516740144,1747411077.967,1.408, +0,55.33976091272677,46.877677499513965,1747411077.975,1.417, +0,55.41248847846873,46.96546438605331,1747411077.984,1.425, +0,55.48356805706046,47.05459088151242,1747411077.992,1.433, +0,55.552980373352355,47.14502191280489,1747411078.0,1.442, +0,55.62070690900845,47.2367222933914,1747411078.009,1.45, +0,55.68672989687688,47.32965673713132,1747411078.017,1.458, +0,55.75103231522701,47.42378987186303,1747411078.025,1.467, +0,55.81359788185869,47.51908625271555,1747411078.034,1.475, +0,55.874411048089435,47.615510375154514,1747411078.042,1.483, +0,55.933456992625075,47.71302668776579,1747411078.05,1.492, +0,55.99072161531909,47.811599604779396,1747411078.059,1.5, +0,56.04619153082574,47.91119351833663,1747411078.067,1.508, +0,56.09985406215223,48.011772810503665,1747411078.075,1.517, +0,56.15169723411469,48.1133018650342,1747411078.084,1.525, +0,56.20170976670177,48.215745078882314,1747411078.092,1.533, +0,56.249881068356515,48.31906687348071,1747411078.1,1.542, +0,56.29620122916595,48.42323170575598,1747411078.109,1.55, +0,56.34066101398304,48.52820407892567,1747411078.117,1.558, +0,56.38325185546998,48.63394855304858,1747411078.125,1.567, +0,56.42396584707321,48.74042975534354,1747411078.134,1.575, +0,56.46279573593312,48.84761239027776,1747411078.142,1.583, +0,56.49973491573236,48.955461249427174,1747411078.15,1.592, +0,56.53477741948676,49.063941221111875,1747411078.159,1.6, +0,56.56791791228236,49.17301729980928,1747411078.167,1.608, +0,56.599151683962425,49.282654595347836,1747411078.175,1.617, +0,56.628474641767795,49.392818341883974,1747411078.184,1.625, +0,56.65588330293411,49.50347390666514,1747411078.192,1.633, +0,56.681374787249275,49.61458679858154,1747411078.2,1.642, +0,56.70494680957434,49.72612267650922,1747411078.209,1.65, +0,56.726597672331046,49.83804735744739,1747411078.217,1.658, +0,56.74632625795905,49.9503268244524,1747411078.225,1.667, +0,56.76413202134593,50.0629272343712,1747411078.234,1.675, +0,56.780014982232764,50.17581492537677,1747411078.242,1.683, +0,56.79397571759819,50.288956424308196,1747411078.25,1.692, +0,56.80601535402369,50.40231845381796,1747411078.259,1.7, +0,56.81613556004286,50.515867939329034,1747411078.267,1.708, +0,56.82433853847702,50.62957201580424,1747411078.275,1.717, +0,56.830627018760104,50.743398034330525,1747411078.284,1.725, +0,56.83500424925483,50.85731356852052,1747411078.292,1.733, +0,56.837473989563,50.971286420734025,1747411078.3,1.742, +0,56.83804050283185,51.08528462812173,1747411078.309,1.75, +0,56.83670854805904,51.19927646849371,1747411078.317,1.758, +0,56.83348337239824,51.31323046601519,1747411078.325,1.767, +0,56.8283707034676,51.42711539673171,1747411078.334,1.775, +0,56.82137674166312,51.54090029392645,1747411078.342,1.783, +0,56.81250815247892,51.65455445331187,1747411078.35,1.792, +0,56.80177205883638,51.7680474380579,1747411078.359,1.8, +0,56.78917603342404,51.881349083659366,1747411078.367,1.808, +0,56.77472809105019,51.994429502644586,1747411078.375,1.817, +0,56.75843668100974,52.10725908912763,1747411078.384,1.825, +0,56.740310679467285,52.21980852320648,1747411078.392,1.833, +0,56.72035938185803,52.33204877520931,1747411078.4,1.842, +0,56.698592495308084,52.4439511097911,1747411078.409,1.85, +0,56.67502013107582,52.555487089882874,1747411078.417,1.858, +0,56.64965279701585,52.66662858049561,1747411078.425,1.867, +0,56.622501390066965,52.77734775238116,1747411078.434,1.875, +0,56.59357718876566,52.887617085552165,1747411078.442,1.883, +0,56.56289184578648,52.99740937266323,1747411078.45,1.892, +0,56.5304573805107,53.10669772225533,1747411078.459,1.9, +0,56.496286171627595,53.21545556185599,1747411078.467,1.908, +0,56.460390949751144,53.323656640995296,1747411078.475,1.917, +0,56.42278479009925,53.4312750339949,1747411078.484,1.925, +0,56.38348110517615,53.538285142724725,1747411078.492,1.933, +0,56.34249363750402,53.6446616991854,1747411078.5,1.942, +0,56.29983645238715,53.75037976797566,1747411078.509,1.95, +0,56.2555239307127,53.85541474863743,1747411078.517,1.958, +0,56.20957076178903,53.959742377880175,1747411078.525,1.967, +0,56.1619919362227,54.06333873168684,1747411078.534,1.975, +0,56.112802738834915,54.16618022730298,1747411078.542,1.983, +0,56.06201874161862,54.268243625111175,1747411078.55,1.992, +0,56.00965579673688,54.36950603039249,1747411078.559,2.0, +0,55.95573002956354,54.46994489497698,1747411078.567,2.008, +0,55.90025783176705,54.56953801878475,1747411078.575,2.017, +0,55.843255854438084,54.66826355125994,1747411078.584,2.025, +0,55.784741001261935,54.766099992698834,1747411078.592,2.033, +0,55.72473042173621,54.863026195474355,1747411078.6,2.042, +0,55.663241504434765,54.959021365158385,1747411078.609,2.05, +0,55.60029187031835,55.0540650615439,1747411078.617,2.058, +0,55.535899366092806,55.1481371995684,1747411078.625,2.067, +0,55.470082057615315,55.24121805014063,1747411078.634,2.075, +0,55.40285822334933,55.33328824087201,1747411078.642,2.083, +0,55.334246347868856,55.424328756714665,1747411078.65,2.092, +0,55.264265115412535,55.51432094050751,1747411078.659,2.1, +0,55.192933403488034,55.60324649343229,1747411078.667,2.108, +0,55.1202702765274,55.6910874753809,1747411078.675,2.117, +0,55.04629497959371,55.77782630523578,1747411078.684,2.125, +0,54.971026932139516,55.863445761064995,1747411078.692,2.133, +0,54.89448572181754,55.9479289802334,1747411078.7,2.142, +0,54.81669109834405,56.03125945943156,1747411078.709,2.15, +0,54.73766296741528,56.113421054624,1747411078.717,2.158, +0,54.65742138467718,56.1943979809182,1747411078.725,2.167, +0,54.57598654974907,56.27417481235585,1747411078.734,2.175, +0,54.493378800301286,56.35273648162798,1747411078.742,2.183, +0,54.409618606187294,56.430068279715215,1747411078.75,2.192, +0,54.32472656363048,56.50615585545478,1747411078.759,2.2, +0,54.238723389465875,56.5809852150357,1747411078.767,2.208, +0,54.15162991543724,56.65454272142341,1747411078.775,2.217, +0,54.06346708254945,56.72681509371543,1747411078.784,2.225, +0,53.974255935476634,56.79778940642937,1747411078.792,2.233, +0,53.88401761702631,56.86745308872454,1747411078.8,2.242, +0,53.79277336265936,56.935793923558826,1747411078.809,2.25, +0,53.70054449506656,57.0028000467817,1747411078.817,2.258, +0,53.60735241880111,57.06845994616528,1747411078.825,2.267, +0,53.51321861496817,57.1327624603741,1747411078.834,2.275, +0,53.41816463597063,57.19569677787551,1747411078.842,2.283, +0,53.32221210031198,57.25725243579143,1747411078.85,2.292, +0,53.22538268745579,57.31741931869317,1747411078.859,2.3, +0,53.12769813274236,57.376187657340274,1747411078.867,2.308, +0,53.02918022236221,57.43354802736473,1747411078.875,2.317, +0,52.92985078838675,57.489491347901755,1747411078.884,2.325, +0,52.829731703856005,57.54400888016838,1747411078.892,2.333, +0,52.72884487792348,57.59709222599098,1747411078.9,2.342, +0,52.62721225105825,57.648733326282894,1747411078.909,2.35, +0,52.52485579030405,57.69892445947349,1747411078.917,2.358, +0,52.421797484595764,57.74765823988947,1747411078.925,2.367, +0,52.318059340132734,57.79492761608995,1747411078.934,2.375, +0,52.21366337580949,57.8407258691561,1747411078.942,2.383, +0,52.10863161870324,57.88504661093667,1747411078.95,2.392, +0,52.00298609961861,57.92788378225034,1747411078.959,2.4, +0,51.896748848689185,57.96923165104609,1747411078.967,2.408, +0,51.789941891035994,58.00908481052256,1747411078.975,2.417, +0,51.68258724248269,58.04743817720754,1747411078.984,2.425, +0,51.57470690532756,58.08428698899854,1747411078.992,2.433, +0,51.466322864172014,58.11962680316551,1747411079.0,2.442, +0,51.35745708180563,58.15345349431671,1747411079.009,2.45, +0,51.24813149514751,58.18576325232874,1747411079.017,2.458, +0,51.138368011243934,58.216552580241725,1747411079.025,2.467, +0,51.02818850332209,58.24581829212052,1747411079.034,2.475, +0,50.91761480689973,58.27355751088307,1747411079.042,2.483, +0,50.80666871595059,58.29976766609681,1747411079.05,2.492, +0,50.69537197912568,58.32444649174385,1747411079.059,2.5, +0,50.58374629602973,58.34759202395618,1747411079.067,2.508, +0,50.471813313553156,58.36920259872164,1747411079.075,2.517, +0,50.35959462225909,58.38927684956147,1747411079.084,2.525, +0,50.247111752825276,58.407813705180494,1747411079.092,2.533, +0,50.134386172540815,58.42481238709077,1747411079.1,2.542, +0,50.021439281857354,58.44027240720942,1747411079.109,2.55, +0,49.908292410994534,58.45419356543175,1747411079.117,2.558, +0,49.794966816599775,58.46657594718023,1747411079.125,2.567, +0,49.6814836784617,58.477419920930366,1747411079.134,2.575, +0,49.56786409627729,58.48672613571418,1747411079.142,2.583, +0,49.45412908647258,58.49449551860209,1747411079.15,2.592, +0,49.34029957907638,58.50072927216411,1747411079.159,2.6, +0,49.226396414647034,58.505428871910894,1747411079.167,2.608, +0,49.11244034125186,58.50859606371576,1747411079.175,2.617, +0,48.99845201149898,58.510232861218086,1747411079.184,2.625, +0,48.88445197962144,58.510341543209094,1747411079.192,2.633, +0,48.770460698613164,58.508924651000655,1747411079.2,2.642, +0,48.65649851741652,58.505984985777765,1747411079.209,2.65, +0,48.542585678161494,58.50152560593563,1747411079.217,2.658, +0,48.42874231345555,58.49554982440184,1747411079.225,2.667, +0,48.31498844372484,58.48806120594445,1747411079.234,2.675, +0,48.2013439746056,58.47906356446661,1747411079.242,2.683, +0,48.08782869438571,58.46856096028849,1747411079.25,2.692, +0,47.974462271496705,58.45655769741711,1747411079.259,2.7, +0,47.861264252054895,58.443058320804624,1747411079.267,2.708, +0,47.748254057452144,58.42806761359601,1747411079.275,2.717, +0,47.635450981995824,58.41159059436646,1747411079.284,2.725, +0,47.52287419059712,58.393632514349314,1747411079.292,2.733, +0,47.41054271650825,58.37419885465511,1747411079.3,2.742, +0,47.29847545910753,58.353295323482314,1747411079.309,2.75, +0,47.186691181732314,58.33092785332034,1747411079.317,2.758, +0,47.07520850955961,58.30710259814555,1747411079.325,2.767, +0,46.964045927533654,58.28182593061066,1747411079.334,2.775, +0,46.85322177834044,58.25510443922818,1747411079.342,2.783, +0,46.74275426042892,58.22694492554861,1747411079.35,2.792, +0,46.6326614260783,58.19735440133363,1747411079.359,2.8, +0,46.522961179511135,58.166340085725125,1747411079.367,2.808, +0,46.41367127505224,58.13390940241043,1747411079.375,2.817, +0,46.304809315332605,58.100069976784354,1747411079.384,2.825, +0,46.19639274953829,58.064829633108516,1747411079.392,2.833, +0,46.088438871703886,58.02819639166845,1747411079.4,2.842, +0,45.98096481905018,57.990178465929134,1747411079.409,2.85, +0,45.87398757036568,57.95078425968921,1747411079.417,2.858, +0,45.76752394443169,57.91002236423454,1747411079.425,2.867, +0,45.66159059849067,57.86790155549163,1747411079.434,2.875, +0,45.5562040267572,57.82443079118112,1747411079.442,2.883, +0,45.45138055897178,57.77961920797216,1747411079.45,2.892, +0,45.34713635899652,57.733476118637846,1747411079.459,2.9, +0,45.24348742345283,57.68601100921228,1747411079.467,2.908, +0,45.140449580400414,57.637233536149736,1747411079.475,2.917, +0,45.038038488057495,57.5871535234862,1747411079.484,2.925, +0,44.936269633561764,57.53578096000393,1747411079.492,2.933, +0,44.835158331771794,57.483125996399274,1747411079.5,2.942, +0,44.73471972410837,57.4291989424542,1747411079.509,2.95, +0,44.63496877743572,57.37401026421201,1747411079.517,2.958, +0,44.535920282982,57.31757058115756,1747411079.525,2.967, +0,44.43758885529878,57.25989066340237,1747411079.534,2.975, +0,44.33998893125912,57.20098142887504,1747411079.542,2.983, +0,44.24313476909421,57.140853940517346,1747411079.55,2.992, +0,44.14704044746756,57.079519403486366,1747411079.559,3.0, +0,44.051719864587085,57.01698916236298,1747411079.567,3.008, +0,43.9571867373543,56.95327469836713,1747411079.575,3.017, +0,43.863454600550355,56.888387626580155,1747411079.584,3.025, +0,43.77053680605875,56.82233969317459,1747411079.592,3.033, +0,43.678446522123934,56.75514277265167,1747411079.6,3.042, +0,43.58719673264606,56.68680886508699,1747411079.609,3.05, +0,43.49680023651087,56.61735009338448,1747411079.617,3.058, +0,43.407269646955,56.54677870053928,1747411079.625,3.067, +0,43.318617390965684,56.47510704690937,1747411079.634,3.075, +0,43.23085570871518,56.402347607496814,1747411079.642,3.083, +0,43.14399665302896,56.3285129692384,1747411079.65,3.092, +0,43.0580520888878,56.253615828306394,1747411079.659,3.1, +0,42.97303369296306,56.17766898741929,1747411079.667,3.108, +0,42.88895295318494,56.10068535316316,1747411079.675,3.117, +0,42.80582116834354,56.02267793332378,1747411079.684,3.125, +0,42.723649447721904,55.94365983422959,1747411079.692,3.133, +0,42.64244871076126,55.86364425810618,1747411079.7,3.142, +0,42.5622296867576,55.782644500441975,1747411079.709,3.15, +0,42.48300291458968,55.70067394736603,1747411079.717,3.158, +0,42.404778742477795,55.61774607303759,1747411079.725,3.167, +0,42.32756732777296,55.533874437047956,1747411079.734,3.175, +0,42.25137863677657,55.44907268183499,1747411079.742,3.183, +0,42.17622244458953,55.36335453011001,1747411079.75,3.192, +0,42.10210833499116,55.276733782298,1747411079.759,3.2, +0,42.02904570034703,55.189224313990586,1747411079.767,3.208, +0,41.95704374154569,55.10084007341264,1747411079.775,3.217, +0,41.8861114679639,55.01159507890238,1747411079.784,3.225, +0,41.81625769745973,54.921503416405095,1747411079.792,3.233, +0,41.74749105639375,54.83057923698101,1747411079.8,3.242, +0,41.67981997967735,54.73883675432718,1747411079.809,3.25, +0,41.613252710848315,54.64629024231377,1747411079.817,3.258, +0,41.54779730217313,54.552954032534835,1747411079.825,3.267, +0,41.483461614775614,54.45884251187377,1747411079.834,3.275, +0,41.420253318791694,54.36397012008365,1747411079.842,3.283, +0,41.35817989354985,54.26835134738254,1747411079.85,3.292, +0,41.29724862777713,54.172000732064134,1747411079.859,3.3, +0,41.23746661982995,54.0749328581235,1747411079.867,3.308, +0,41.17884077794996,53.97716235289863,1747411079.875,3.317, +0,41.12137782054402,53.878703884727315,1747411079.884,3.325, +0,41.065084276488534,53.779572160620106,1747411079.892,3.333, +0,41.009966485457305,53.679781923948994,1747411079.9,3.342, +0,40.956030598272974,53.57934795215228,1747411079.909,3.35, +0,40.90328257728151,53.478285054455625,1747411079.917,3.358, +0,40.85172819674948,53.376608069609375,1747411079.925,3.367, +0,40.80137304328375,53.27433186364233,1747411079.934,3.375, +0,40.75222251627347,53.17147132763225,1747411079.942,3.383, +0,40.70428182835366,53.06804137549281,1747411079.95,3.392, +0,40.65755600589051,52.96405694177754,1747411079.959,3.4, +0,40.61204988948775,52.85953297950054,1747411079.967,3.408, +0,40.56776813451391,52.75448445797429,1747411079.975,3.417, +0,40.524715211650246,52.64892636066457,1747411079.984,3.425, +0,40.482895407458756,52.54287368306246,1747411079.992,3.433, +0,40.44231282497026,52.43634143057382,1747411080.0,3.442, +0,40.40297138429214,52.32934461642605,1747411080.009,3.45, +0,40.36487482323527,52.2218982595923,1747411080.017,3.458, +0,40.32802669796015,52.11401738273331,1747411080.025,3.467, +0,40.29243038364162,52.00571701015683,1747411080.034,3.475, +0,40.25808907515211,51.8970121657947,1747411080.042,3.483, +0,40.22500578776292,51.78791787119791,1747411080.05,3.492, +0,40.19318335786341,51.67844914354923,1747411080.059,3.5, +0,40.162624443697666,51.56862099369388,1747411080.067,3.508, +0,40.133331526118454,51.45844842418825,1747411080.075,3.517, +0,40.10530690935805,51.34794642736655,1747411080.084,3.525, +0,40.07855272181579,51.23712998342548,1747411080.092,3.533, +0,40.05307091686197,51.12601405852724,1747411080.1,3.542, +0,40.028863273657755,51.01461360292025,1747411080.109,3.55, +0,40.005931397991084,50.90294354907917,1747411080.117,3.558, +0,39.98427672312786,50.791018809862074,1747411080.125,3.567, +0,39.963900510678435,50.67885427668615,1747411080.134,3.575, +0,39.94480385147906,50.56646481772216,1747411080.142,3.583, +0,39.92698766648806,50.45386527610702,1747411080.15,3.592, +0,39.91045270769631,50.34107046817479,1747411080.159,3.6, +0,39.89519955905187,50.22809518170625,1747411080.167,3.608, +0,39.88122863739851,50.11495417419677,1747411080.175,3.617, +0,39.86854019342773,50.00166217114277,1747411080.184,3.625, +0,39.85713431264411,49.88823386434677,1747411080.192,3.633, +0,39.847010916343784,49.77468391024065,1747411080.2,3.642, +0,39.838169762605524,49.66102692822788,1747411080.209,3.65, +0,39.83061044729449,49.547277499044,1747411080.217,3.658, +0,39.82433240507815,49.43345016313579,1747411080.225,3.667, +0,39.8193349104542,49.31955941905894,1747411080.234,3.675, +0,39.815617078790495,49.20561972190472,1747411080.242,3.683, +0,39.81317786737496,49.091645481693604,1747411080.25,3.692, +0,39.81201607647993,48.97765106189048,1747411080.259,3.7, +0,39.81213035043404,48.863650777835566,1747411080.267,3.708, +0,39.81351917870664,48.749658895245254,1747411080.275,3.717, +0,39.81618089700228,48.63568962872134,1747411080.284,3.725, +0,39.820113688365495,48.521757140278595,1747411080.292,3.733, +0,39.8253155842954,48.407875537891265,1747411080.3,3.742, +0,39.831784465870264,48.294058874057676,1747411080.309,3.75, +0,39.83951806488133,48.18032114438365,1747411080.317,3.758, +0,39.84851396497605,48.06667628618429,1747411080.325,3.767, +0,39.8587696028103,47.95313817710431,1747411080.334,3.775, +0,39.870282269209326,47.83972063375667,1747411080.342,3.783, +0,39.88304911033731,47.72643741037997,1747411080.35,3.792, +0,39.89706712887522,47.61330219751385,1747411080.359,3.8, +0,39.91233318520673,47.50032862069305,1747411080.367,3.808, +0,39.92884399861201,47.38753023915972,1747411080.375,3.817, +0,39.9465961484692,47.274920544594075,1747411080.384,3.825, +0,39.96558607546322,47.162512959863285,1747411080.392,3.833, +0,39.985810082801805,47.05032083778868,1747411080.4,3.842, +0,40.0072643374385,46.93835745993113,1747411080.409,3.85, +0,40.02994487130242,46.82663603539466,1747411080.417,3.858, +0,40.053847582534516,46.715169699647994,1747411080.425,3.867, +0,40.07896823673017,46.603971513364584,1747411080.434,3.875, +0,40.105302468187936,46.49305446128026,1747411080.442,3.883, +0,40.13284578116408,46.38243145106918,1747411080.45,3.892, +0,40.16159355113293,46.27211531223752,1747411080.459,3.9, +0,40.1915410260526,46.162118795035326,1747411080.467,3.908, +0,40.22268332763605,46.052454569386,1747411080.475,3.917, +0,40.25501545262717,45.94313522383373,1747411080.484,3.925, +0,40.288532274081845,45.834173264508436,1747411080.492,3.933, +0,40.32322854265351,45.72558111410889,1747411080.5,3.942, +0,40.35909888788332,45.617371110903,1747411080.509,3.95, +0,40.39613781949457,45.50955550774589,1747411080.517,3.958, +0,40.434339728691164,45.402146471115536,1747411080.525,3.967, +0,40.473698889460024,45.29515608016571,1747411080.534,3.975, +0,40.51420945987711,45.18859632579668,1747411080.542,3.983, +0,40.55586548341707,45.082479109742735,1747411080.55,3.992, +0,40.59866089026619,44.97681624367739,1747411080.559,4.0, +0,40.64258949863838,44.87161944833578,1747411080.567,4.008, +0,40.68764501609424,44.76690035265396,1747411080.575,4.017, +0,40.73382104086288,44.66267049292552,1747411080.584,4.025, +0,40.78111106316631,44.55894131197512,1747411080.592,4.033, +0,40.82950846654626,44.45572415834893,1747411080.6,4.042, +0,40.87900652919325,44.35303028552207,1747411080.609,4.05, +0,40.929598425277774,44.250870851122684,1747411080.617,4.058, +0,40.98127722628332,44.14925691617289,1747411080.625,4.067, +0,41.03403590234111,44.04819944434632,1747411080.634,4.075, +0,41.08786732356654,43.947709301242156,1747411080.642,4.083, +0,41.14276426139681,43.84779725367591,1747411080.65,4.092, +0,41.198719389930055,43.74847396898619,1747411080.659,4.1, +0,41.25572528726518,43.649750014358425,1747411080.667,4.108, +0,41.313774436842984,43.551635856164275,1747411080.675,4.117, +0,41.37285922878776,43.454141859317595,1747411080.684,4.125, +0,41.43297196124965,43.35727828664632,1747411080.692,4.133, +0,41.49410484174733,43.26105529828048,1747411080.7,4.142, +0,41.556249988511006,43.16548295105613,1747411080.709,4.15, +0,41.61939943182564,43.07057119793501,1747411080.717,4.158, +0,41.68354511537394,42.9763298874403,1747411080.725,4.167, +0,41.74867889757939,42.88276876310766,1747411080.734,4.175, +0,41.81479255294888,42.78989746295218,1747411080.742,4.183, +0,41.88187777341479,42.69772551895076,1747411080.75,4.192, +0,41.94992616967669,42.606262356539744,1747411080.759,4.2, +0,42.01892927254194,42.51551729412832,1747411080.767,4.208, +0,42.08887853426586,42.42549954262663,1747411080.775,4.217, +0,42.15976532989041,42.33621820498949,1747411080.784,4.225, +0,42.231580958582065,42.247682275774956,1747411080.792,4.233, +0,42.304316644968125,42.15990064071795,1747411080.8,4.242, +0,42.37796354047181,42.07288207631872,1747411080.809,4.25, +0,42.4525127246456,41.98663524944622,1747411080.817,4.258, +0,42.52795520650305,41.901168716956015,1747411080.825,4.267, +0,42.60428192584862,41.816490925322995,1747411080.834,4.275, +0,42.68148375460567,41.73261021028847,1747411080.842,4.283, +0,42.759551498142365,41.649534796521735,1747411080.85,4.292, +0,42.838475896595284,41.56727279729602,1747411080.859,4.3, +0,42.9182476261908,41.485832214178586,1747411080.867,4.308, +0,42.99885730056402,41.40522093673505,1747411080.875,4.317, +0,43.08029547207508,41.32544674224767,1747411080.884,4.325, +0,43.16255263312286,41.24651729544766,1747411080.892,4.333, +0,43.2456192174558,41.168440148261325,1747411080.9,4.342, +0,43.329485601479874,41.09122273956996,1747411080.909,4.35, +0,43.41414210556356,41.01487239498334,1747411080.917,4.358, +0,43.49957899533961,40.93939632662689,1747411080.925,4.367, +0,43.58578648300356,40.86480163294225,1747411080.934,4.375, +0,43.67275472860903,40.79109529850116,1747411080.942,4.383, +0,43.76047384135937,40.71828419383272,1747411080.95,4.392, +0,43.84893388089591,40.64637507526369,1747411080.959,4.4, +0,43.93812485858241,40.575374584771986,1747411080.967,4.408, +0,44.02803673878587,40.505289249852986,1747411080.975,4.417, +0,44.11865944015331,40.43612548339887,1747411080.984,4.425, +0,44.20998283688474,40.367889583590575,1747411080.992,4.433, +0,44.30199676000202,40.3005877338025,1747411081.0,4.442, +0,44.3946909986134,40.23422600251977,1747411081.009,4.45, +0,44.488055301174114,40.168810343267886,1747411081.017,4.458, +0,44.58207937674226,40.10434659455486,1747411081.025,4.467, +0,44.67675289623056,40.04084047982546,1747411081.034,4.475, +0,44.77206549365334,39.97829760742776,1747411081.042,4.483, +0,44.86800676736914,39.91672347059159,1747411081.05,4.492, +0,44.96456628131824,39.856123447419115,1747411081.059,4.5, +0,45.06173356625584,39.79650280088707,1747411081.067,4.508, +0,45.15949812097999,39.737866678860904,1747411081.075,4.517, +0,45.257849413554844,39.68022011412043,1747411081.084,4.525, +0,45.35677688252852,39.623568024397215,1747411081.092,4.533, +0,45.456269938146306,39.56791521242312,1747411081.1,4.542, +0,45.55631796355813,39.51326636599046,1747411081.109,4.55, +0,45.65691031602124,39.4596260580232,1747411081.117,4.558, +0,45.75803632809711,39.40699874665941,1747411081.125,4.567, +0,45.85968530884326,39.35538877534466,1747411081.134,4.575, +0,45.96184654499931,39.30480037293634,1747411081.142,4.583, +0,46.064509302167586,39.2552376538189,1747411081.15,4.592, +0,46.167662825987975,39.206704618029676,1747411081.159,4.6, +0,46.27129634330723,39.15920515139541,1747411081.167,4.608, +0,46.37539906334228,39.11274302567928,1747411081.175,4.617, +0,46.479960178837814,39.06732189873827,1747411081.184,4.625, +0,46.58496886721793,39.022945314690965,1747411081.192,4.633, +0,46.690414291731706,38.979616704095406,1747411081.2,4.642, +0,46.79628560259281,38.93733938413714,1747411081.209,4.65, +0,46.90257193811299,38.89611655882727,1747411081.217,4.658, +0,47.009262425829334,38.85595131921032,1747411081.225,4.667, +0,47.1163461836253,38.816846643581954,1747411081.234,4.675, +0,47.22381232084558,38.77880539771636,1747411081.242,4.683, +0,47.33164993940441,38.74183033510323,1747411081.25,4.692, +0,47.43984813488754,38.70592409719421,1747411081.259,4.7, +0,47.54839599764796,38.671089213658725,1747411081.267,4.708, +0,47.65728261389471,38.63732810264908,1747411081.275,4.717, +0,47.76649706677546,38.60464307107478,1747411081.284,4.725, +0,47.87602843745232,38.57303631488585,1747411081.292,4.733, +0,47.98586580617094,38.54250991936516,1747411081.3,4.742, +0,48.09599825332312,38.513065859429645,1747411081.309,4.75, +0,48.206414860502235,38.484705999940246,1747411081.317,4.758, +0,48.31710471155237,38.45743209602053,1747411081.325,4.767, +0,48.428056893610105,38.431245793383916,1747411081.334,4.775, +0,48.53926049813977,38.40614862866927,1747411081.342,4.783, +0,48.65070462196151,38.38214202978497,1747411081.35,4.792, +0,48.762378368272394,38.359227316261176,1747411081.359,4.8, +0,48.87427084766069,38.33740569961023,1747411081.367,4.808, +0,48.986371179112844,38.31667828369517,1747411081.375,4.817, +0,49.098668491013356,38.29704606510623,1747411081.384,4.825, +0,49.21115192213776,38.27850993354507,1747411081.392,4.833, +0,49.323810622637964,38.26107067221694,1747411081.4,4.842, +0,49.436633755020885,38.24472895823036,1747411081.409,4.85, +0,49.54961049511951,38.22948536300445,1747411081.417,4.858, +0,49.662730033056604,38.21534035268367,1747411081.425,4.867, +0,49.77598157420146,38.202294288559955,1747411081.434,4.875, +0,49.88935434011879,38.19034742750213,1747411081.442,4.883, +0,50.00283756951075,38.17949992239244,1747411081.45,4.892, +0,50.11642051915113,38.169751822570184,1747411081.459,4.9, +0,50.230092464812316,38.16110307428234,1747411081.467,4.908, +0,50.34384270218475,38.15355352114102,1747411081.475,4.917, +0,50.45766054778882,38.14710290458774,1747411081.484,4.925, +0,50.5715353398793,38.14175086436434,1747411081.492,4.933, +0,50.68545643934222,38.13749693899052,1747411081.5,4.942, +0,50.79941323058405,38.134340566247865,1747411081.509,4.95, +0,50.91339512241361,38.13228108367019,1747411081.517,4.958, +0,51.02739154891587,38.131317729040326,1747411081.525,4.967, +0,51.14139197031855,38.13144964089295,1747411081.534,4.975, +0,51.255385873850784,38.13267585902364,1747411081.542,4.983, +0,51.3693627745943,38.13499532500389,1747411081.55,4.992, +0,51.483312216326624,38.13840688270204,1747411081.559,5.0, +0,51.597223772356934,38.14290927881006,1747411081.567,5.008, +0,51.711087046353896,38.14850116337607,1747411081.575,5.017, +0,51.82489167316569,38.15518109034243,1747411081.584,5.025, +0,51.93862731963274,38.16294751808948,1747411081.592,5.033, +0,52.05228368539208,38.171798809984665,1747411081.6,5.042, +0,52.16585050367412,38.18173323493702,1747411081.609,5.05, +0,52.27931754209209,38.19274896795697,1747411081.617,5.058, +0,52.39267460342267,38.20484409072129,1747411081.625,5.067, +0,52.50591152637979,38.2180165921431,1747411081.634,5.075, +0,52.61901818638005,38.23226436894697,1747411081.642,5.083, +0,52.731984496300285,38.24758522624883,1747411081.65,5.092, +0,52.84480040722762,38.26397687814077,1747411081.659,5.1, +0,52.95745590920117,38.28143694828047,1747411081.667,5.108, +0,53.069941031946314,38.299962970485446,1747411081.675,5.117, +0,53.18224584560091,38.31955238933164,1747411081.684,5.125, +0,53.29436046143346,38.34020256075664,1747411081.692,5.133, +0,53.40627503255372,38.36191075266717,1747411081.7,5.142, +0,53.517979754615276,38.384674145550974,1747411081.709,5.15, +0,53.629464866509885,38.408489833092744,1747411081.717,5.158, +0,53.74072065105466,38.43335482279435,1747411081.725,5.167, +0,53.851737435670586,38.45926603659896,1747411081.734,5.175, +0,53.96250559305367,38.486220311519205,1747411081.742,5.183, +0,54.07301554183783,38.514214400269076,1747411081.75,5.192, +0,54.18325774725026,38.54324497189977,1747411081.759,5.2, +0,54.29322272175837,38.573308612439035,1747411081.767,5.208, +0,54.402901025709454,38.60440182553431,1747411081.775,5.217, +0,54.51228326796205,38.636521033099285,1747411081.784,5.225, +0,54.62136010650927,38.66966257596381,1747411081.792,5.233, +0,54.730122249094876,38.70382271452745,1747411081.8,5.242, +0,54.83856045382074,38.73899762941596,1747411081.809,5.25, +0,54.94666552974692,38.77518342214129,1747411081.817,5.258, +0,55.054428337483586,38.81237611576438,1747411081.825,5.267, +0,55.16183978977537,38.85057165556134,1747411081.834,5.275, +0,55.26889085207745,38.88976590969223,1747411081.842,5.283, +0,55.37557254312418,38.929954669873,1747411081.85,5.292, +0,55.481875935489626,38.97113365205006,1747411081.859,5.3, +0,55.58779215614034,39.013298497077606,1747411081.867,5.308, +0,55.693312386980374,39.05644477139764,1747411081.875,5.317, +0,55.79842786538831,39.100567967722455,1747411081.884,5.325, +0,55.90312988474668,39.14566350571966,1747411081.892,5.333, +0,56.00740979496343,39.19172673269961,1747411081.9,5.342, +0,56.11125900298579,39.238752924305174,1747411081.909,5.35, +0,56.214668973306054,39.28673728520369,1747411081.917,5.358, +0,56.31763122846003,39.33567494978122,1747411081.925,5.367, +0,56.42013734951736,39.385560982838776,1747411081.934,5.375, +0,56.522178976564305,39.43639038029063,1747411081.942,5.383, +0,56.62374780917881,39.488158069864625,1747411081.95,5.392, +0,56.72483560689789,39.540858911804364,1747411081.959,5.4, +0,56.82543418967705,39.59448769957298,1747411081.967,5.408, +0,56.92553543834257,39.6490391605591,1747411081.975,5.417, +0,57.02513129503565,39.70450795678402,1747411081.984,5.425, +0,57.12421376364911,39.760888685610695,1747411081.992,5.433, +0,57.22277491025648,39.81817588045422,1747411082.0,5.442, +0,57.32080686353346,39.876364011493735,1747411082.009,5.45, +0,57.41830181517194,39.93544748638581,1747411082.017,5.458, +0,57.5152520202861,39.99542065097894,1747411082.025,5.467, +0,57.61164979781137,40.05627779002947,1747411082.034,5.475, +0,57.707487530895605,40.11801312791857,1747411082.042,5.483, +0,57.802757667283,40.180620829370525,1747411082.05,5.492, +0,57.89745271969006,40.24409500017163,1747411082.059,5.5, +0,57.991565266174774,40.30842968789061,1747411082.067,5.508, +0,58.08508795049776,40.37361888259948,1747411082.075,5.517, +0,58.17801348247631,40.439656517595516,1747411082.084,5.525, +0,58.27033463833093,40.506536470123855,1747411082.092,5.533, +0,58.36204426102458,40.57425256210092,1747411082.1,5.542, +0,58.45313526059451,40.642798560838344,1747411082.109,5.55, +0,58.54360061447677,40.71216817976765,1747411082.117,5.558, +0,58.63343336782347,40.782355079165235,1747411082.125,5.567, +0,58.72262663381267,40.85335286687797,1747411082.134,5.575, +0,58.811173593951175,40.92515509904918,1747411082.142,5.583, +0,58.8990674983699,40.99775528084477,1747411082.15,5.592, +0,58.98630166611232,41.07114686717994,1747411082.159,5.6, +0,59.07286948541535,41.145323263445704,1747411082.167,5.608, +0,59.15876441398349,41.220277826235915,1747411082.175,5.617, +0,59.243979979255656,41.296003864074194,1747411082.184,5.625, +0,59.32850977866479,41.37249463814083,1747411082.192,5.633, +0,59.4123474798907,41.44974336299979,1747411082.2,5.642, +0,59.495486821105615,41.52774320732555,1747411082.209,5.65, +0,59.57792161121287,41.606487294629765,1747411082.217,5.658, +0,59.65964573007856,41.685968703987754,1747411082.225,5.667, +0,59.74065312875621,41.76618047076475,1747411082.234,5.675, +0,59.820937829704675,41.847115587341776,1747411082.242,5.683, +0,59.9004939269989,41.92876700384109,1747411082.25,5.692, +0,59.979315586534014,42.011127628851334,1747411082.259,5.7, +0,60.057397046222555,42.09419033015208,1747411082.267,5.708, +0,60.13473261618487,42.177947935437885,1747411082.275,5.717, +0,60.21131667893266,42.262393233041635,1747411082.284,5.725, +0,60.287143689546,42.34751897265748,1747411082.292,5.733, +0,60.362208175843435,42.433317866062794,1747411082.3,5.742, +0,60.436504738545466,42.51978258783945,1747411082.309,5.75, +0,60.510028051431505,42.606905776094464,1747411082.317,5.758, +0,60.582772861490035,42.69468003317949,1747411082.325,5.767, +0,60.654733989062294,42.78309792640958,1747411082.334,5.775, +0,60.72590632797943,42.87215198878101,1747411082.342,5.783, +0,60.79628484569302,42.96183471968787,1747411082.35,5.792, +0,60.86586458339932,43.05213858563787,1747411082.359,5.8, +0,60.93464065615677,43.14305602096678,1747411082.367,5.808, +0,61.00260825299743,43.234579428551996,1747411082.375,5.817, +0,61.0697626370317,43.32670118052447,1747411082.384,5.825, +0,61.13609914554697,43.419413618979874,1747411082.392,5.833, +0,61.201613190099714,43.51270905668801,1747411082.4,5.842, +0,61.26630025660152,43.606579777801166,1747411082.409,5.85, +0,61.33015590539877,43.70101803856098,1747411082.417,5.858, +0,61.39317577134608,43.7960160680038,1747411082.425,5.867, +0,61.45535556387365,43.89156606866462,1747411082.434,5.875, +0,61.516691067048434,43.98766021727949,1747411082.442,5.883, +0,61.57717813962918,44.08429066548624,1747411082.45,5.892, +0,61.636812715115454,44.181449540523694,1747411082.459,5.9, +0,61.69559080179066,44.279128945929266,1747411082.467,5.908, +0,61.75350848275886,44.37732096223446,1747411082.475,5.917, +0,61.810561915976024,44.47601764765933,1747411082.484,5.925, +0,61.86674733427489,44.575211038804326,1747411082.492,5.933, +0,61.92206104538435,44.674893151340925,1747411082.5,5.942, +0,61.97649943194274,44.77505598070013,1747411082.509,5.95, +0,62.03005895150534,44.87569150275894,1747411082.517,5.958, +0,62.082736136546245,44.97679167452516,1747411082.525,5.967, +0,62.134527594454326,45.07834843481993,1747411082.534,5.975, +0,62.185430007523635,45.18035370495845,1747411082.542,5.983, +0,62.23544013293796,45.28279938942828,1747411082.55,5.992, +0,62.28455480275001,45.38567737656603,1747411082.559,6.0, +0,62.33277092385477,45.488979539231416,1747411082.567,6.008, +0,62.38008547795746,45.59269773547942,1747411082.575,6.017, +0,62.426495521535905,45.69682380923008,1747411082.584,6.025, +0,62.4719981857975,45.80134959093612,1747411082.592,6.033, +0,62.51659067663063,45.90626689824811,1747411082.6,6.042, +0,62.56027027455084,46.01156753667759,1747411082.609,6.05, +0,62.60303433464149,46.1172433002574,1747411082.617,6.058, +0,62.64488028648923,46.22328597220003,1747411082.625,6.067, +0,62.685805634114104,46.32968732555327,1747411082.634,6.075, +0,62.72580795589443,46.43643912385345,1747411082.642,6.083, +0,62.7648849044865,46.54353312177615,1747411082.65,6.092, +0,62.80303420673908,46.65096106578443,1747411082.659,6.1, +0,62.84025366360286,46.758714694774525,1747411082.667,6.108, +0,62.876541150034654,46.86678574071866,1747411082.675,6.117, +0,62.91189461489681,46.97516592930574,1747411082.684,6.125, +0,62.946312080851314,47.08384698057875,1747411082.692,6.133, +0,62.97979164424916,47.19282060956996,1747411082.7,6.142, +0,63.01233147501471,47.30207852693324,1747411082.709,6.15, +0,63.04392981652509,47.41161243957345,1747411082.717,6.158, +0,63.07458498548489,47.521414051273354,1747411082.725,6.167, +0,63.10429537179587,47.6314750633173,1747411082.734,6.175, +0,63.13305943842212,47.741787175112734,1747411082.742,6.183, +0,63.16087572125022,47.852342084807894,1747411082.75,6.192, +0,63.18774282894497,47.96313148990756,1747411082.759,6.2, +0,63.21365944280025,48.074147087885144,1747411082.767,6.208, +0,63.23862431658545,48.18538057679231,1747411082.775,6.217, +0,63.26263627638719,48.296823655865396,1747411082.784,6.225, +0,63.28569422044657,48.408468026128666,1747411082.792,6.233, +0,63.30779711899194,48.52030539099506,1747411082.8,6.242, +0,63.328944014067176,48.63232745686328,1747411082.809,6.25, +0,63.34913401935555,48.74452593371207,1747411082.817,6.258, +0,63.368366319999296,48.8568925356916,1747411082.825,6.267, +0,63.38664017241472,48.9694189817113,1747411082.834,6.275, +0,63.40395490410316,49.08209699602484,1747411082.842,6.283, +0,63.420309913457544,49.19491830881175,1747411082.85,6.292, +0,63.435704669564885,49.30787465675609,1747411082.859,6.3, +0,63.45013871200446,49.42095778362151,1747411082.867,6.308, +0,63.46361165064201,49.53415944082353,1747411082.875,6.317, +0,63.476123165419686,49.647471387998095,1747411082.884,6.325, +0,63.48767300614206,49.76088539356723,1747411082.892,6.333, +0,63.498260992258096,49.87439323530118,1747411082.9,6.342, +0,63.50788701263913,49.98798670087722,1747411082.909,6.35, +0,63.51655102535292,50.10165758843524,1747411082.917,6.358, +0,63.5242530574338,50.215397707129775,1747411082.925,6.367, +0,63.53099320464905,50.32919887767897,1747411082.934,6.375, +0,63.536771631261324,50.443052932909644,1747411082.942,6.383, +0,63.54158856978743,50.5569517182995,1747411082.95,6.392, +0,63.54544432075331,50.670887092515414,1747411082.959,6.4, +0,63.54833925244535,50.78485092794861,1747411082.967,6.408, +0,63.55027380065804,50.89883511124605,1747411082.975,6.417, +0,63.55124846843798,51.012831543838765,1747411082.984,6.425, +0,63.55126382582441,51.12683214246606,1747411082.992,6.433, +0,63.55032050958607,51.240828839696846,1747411083.0,6.442, +0,63.54841922295471,51.354813584447,1747411083.009,6.45, +0,63.54556073535505,51.46877834249318,1747411083.017,6.458, +0,63.54174588213133,51.582715096983485,1747411083.025,6.467, +0,63.536975564270556,51.696615848943914,1747411083.034,6.475, +0,63.53125074812233,51.810472617781805,1747411083.042,6.483, +0,63.524572465115426,51.92427744178515,1747411083.05,6.492, +0,63.51694181147114,52.03802237861868,1747411083.059,6.5, +0,63.50835994791333,52.151699505816175,1747411083.067,6.508, +0,63.498828099375366,52.26530092126895,1747411083.075,6.517, +0,63.488347554703914,52.378818743711044,1747411083.084,6.525, +0,63.47691966635963,52.49224511320024,1747411083.092,6.533, +0,63.46454585015235,52.605572191264294,1747411083.1,6.542, +0,63.45122758478202,52.71879216275113,1747411083.109,6.55, +0,63.43696641176489,52.83189723415998,1747411083.117,6.558, +0,63.421763934963735,52.94487963558309,1747411083.125,6.567, +0,63.40562182031357,53.057731620787585,1747411083.134,6.575, +0,63.388541795504615,53.17044546767434,1747411083.142,6.583, +0,63.37052564966236,53.28301347873309,1747411083.15,6.592, +0,63.35157523302486,53.39542798149404,1747411083.159,6.6, +0,63.33169245661726,53.50768132897554,1747411083.167,6.608, +0,63.310879291923676,53.6197659001279,1747411083.175,6.617, +0,63.2891377705563,53.73167410027365,1747411083.184,6.625, +0,63.266469983921986,53.84339836154369,1747411083.192,6.633, +0,63.24287808288613,53.95493114330991,1747411083.2,6.642, +0,63.21836427743409,54.06626493261379,1747411083.209,6.65, +0,63.19293083632999,54.17739224459144,1747411083.217,6.658, +0,63.16658008677312,54.288305622894484,1747411083.225,6.667, +0,63.13931441405188,54.39899764010729,1747411083.234,6.675, +0,63.11113626134363,54.509460897588596,1747411083.242,6.683, +0,63.08204812879047,54.61968802811211,1747411083.25,6.692, +0,63.052052573977065,54.72967169300943,1747411083.259,6.7, +0,63.021152211039855,54.839404584691266,1747411083.267,6.708, +0,62.989349710438646,54.94887942652929,1747411083.275,6.717, +0,62.95664779859663,55.058088973250484,1747411083.284,6.725, +0,62.923049257538295,55.16702601132706,1747411083.292,6.733, +0,62.888556924525105,55.27568335936303,1747411083.3,6.742, +0,62.853173691689136,55.384053868476414,1747411083.309,6.75, +0,62.81690250566462,55.492130422677874,1747411083.317,6.758, +0,62.779746367217406,55.5999059392455,1747411083.325,6.767, +0,62.74170833087247,55.70737336909553,1747411083.334,6.775, +0,62.70279150453948,55.81452569714905,1747411083.342,6.783, +0,62.66299904913638,55.92135594269532,1747411083.35,6.792, +0,62.62233417821115,56.02785715975047,1747411083.359,6.8, +0,62.58080015756158,56.13402243741307,1747411083.367,6.808, +0,62.538400304853454,56.23984490021508,1747411083.375,6.817, +0,62.49513798923665,56.345317708469494,1747411083.384,6.825, +0,62.45101663095983,56.45043405861361,1747411083.392,6.833, +0,62.40603970098308,56.55518718354871,1747411083.4,6.842, +0,62.36021072058918,56.65957035297566,1747411083.409,6.85, +0,62.31353326099297,56.76357687372675,1747411083.417,6.858, +0,62.26601094294929,56.867200090093455,1747411083.425,6.867, +0,62.217647436359314,56.970433384150375,1747411083.434,6.875, +0,62.168446459875256,57.073270176075305,1747411083.442,6.883, +0,62.11841178050369,57.175703924465324,1747411083.45,6.892, +0,62.067547213207284,57.27772812664914,1747411083.459,6.9, +0,62.01585662050529,57.379336318995136,1747411083.467,6.908, +0,61.96334391207239,57.480522077216065,1747411083.475,6.917, +0,61.91001304433635,57.58127901666946,1747411083.484,6.925, +0,61.85586802007437,57.68160079265413,1747411083.492,6.933, +0,61.80091288800787,57.78148110070315,1747411083.5,6.942, +0,61.745151742396445,57.88091367687238,1747411083.509,6.95, +0,61.68858872263017,57.979892298025575,1747411083.517,6.958, +0,61.63122801282094,58.078410782115476,1747411083.525,6.967, +0,61.573073841392684,58.17646298846073,1747411083.534,6.975, +0,61.514130480670204,58.27404281801948,1747411083.542,6.983, +0,61.45440224646725,58.371144213658454,1747411083.55,6.992, +0,61.39389349767315,58.4677611604188,1747411083.559,7.0, +0,61.33260863583884,58.563887685777445,1747411083.567,7.008, +0,61.27055210476153,58.659517859905066,1747411083.575,7.017, +0,61.20772839006858,58.75464579591991,1747411083.584,7.025, +0,61.144142018800395,58.84926565013799,1747411083.592,7.033, +0,61.079797558992446,58.94337162231915,1747411083.6,7.042, +0,61.01469961925642,59.0369579559095,1747411083.609,7.05, +0,60.948852848360474,59.13001893827998,1747411083.617,7.058, +0,60.88226193480876,59.222548900960966,1747411083.625,7.067, +0,60.814931606420096,59.314542219873196,1747411083.634,7.075, +0,60.746866629905995,59.405993315554745,1747411083.642,7.083, +0,60.678071810447875,59.49689665338432,1747411083.65,7.092, +0,60.60855199127361,59.587246743800605,1747411083.659,7.1, +0,60.53831205323359,59.677038142517766,1747411083.667,7.108, +0,60.467356914375834,59.766265450737464,1747411083.675,7.117, +0,60.395691529520775,59.85492331535678,1747411083.684,7.125, +0,60.32332088983553,59.94300642917225,1747411083.692,7.133, +0,60.250250022407265,60.03050953108067,1747411083.7,7.142, +0,60.176483989816674,60.11742740627532,1747411083.709,7.15, +0,60.102027889710186,60.20375488643941,1747411083.717,7.158, +0,60.02688685437257,60.2894868499348,1747411083.725,7.167, +0,59.95106605029859,60.37461822198753,1747411083.734,7.175, +0,59.874570677764325,60.459143974869676,1747411083.742,7.183, +0,59.797405970398394,60.54305912807707,1747411083.75,7.192, +0,59.71957719475254,60.62635874850372,1747411083.759,7.2, +0,59.64108964987227,60.70903795061212,1747411083.767,7.208, +0,59.56194866686687,60.79109189660027,1747411083.775,7.217, +0,59.482159608479414,60.87251579656466,1747411083.784,7.225, +0,59.40172786865648,60.953304908659796,1747411083.792,7.233, +0,59.32065887211777,61.03345453925387,1747411083.8,7.242, +0,59.23895807392536,61.11296004308099,1747411083.809,7.25, +0,59.15663095905317,61.19181682338947,1747411083.817,7.258, +0,59.073683041955924,61.27002033208683,1747411083.825,7.267, +0,58.990119866138485,61.34756606988072,1747411083.834,7.275, +0,58.90594700372466,61.42444958641671,1747411083.842,7.283, +0,58.821170055026556,61.500666480411994,1747411083.85,7.292, +0,58.73579464811332,61.57621239978589,1747411083.859,7.3, +0,58.64982643838043,61.65108304178652,1747411083.867,7.308, +0,58.563271108118784,61.72527415311393,1747411083.875,7.317, +0,58.476134366084,61.798781530039705,1747411083.884,7.325, +0,58.388421947065716,61.87160101852299,1747411083.892,7.333, +0,58.300139611457055,61.94372851432304,1747411083.9,7.342, +0,58.21129314482452,62.015159963108,1747411083.909,7.35, +0,58.12188835747762,62.08589136056046,1747411083.917,7.358, +0,58.031931084038995,62.15591875247942,1747411083.925,7.367, +0,57.94142718301494,62.22523823487848,1747411083.934,7.375, +0,57.85038253636581,62.293845954080965,1747411083.942,7.383, +0,57.758803049076974,62.361738106811295,1747411083.95,7.392, +0,57.666694648730086,62.428910940282975,1747411083.959,7.4, +0,57.57406328507455,62.495360752283176,1747411083.967,7.408, +0,57.48091492959965,62.56108389125368,1747411083.975,7.417, +0,57.38725557510654,62.62607675636881,1747411083.984,7.425, +0,57.29309123528144,62.69033579760939,1747411083.992,7.433, +0,57.198427944268325,62.753857515833914,1747411084.0,7.442, +0,57.103271756243,62.81663846284576,1747411084.009,7.45, +0,57.00762874498704,62.87867524145743,1747411084.017,7.458, +0,56.911505003462395,62.9399645055513,1747411084.025,7.467, +0,56.81490664338669,63.00050296013701,1747411084.034,7.475, +0,56.71783979480897,63.060287361405464,1747411084.042,7.483, +0,56.620310605685944,63.11931451677967,1747411084.05,7.492, +0,56.52232524145896,63.17758128496216,1747411084.059,7.5, +0,56.42388988463158,63.235084575979144,1747411084.067,7.508, +0,56.32501073434778,63.29182135122138,1747411084.075,7.517, +0,56.22569400597074,63.34778862348187,1747411084.084,7.525, +0,56.12594593066264,63.402983456990086,1747411084.092,7.533, +0,56.02577275496459,63.457402967443315,1747411084.1,7.542, +0,55.925180740378025,63.51104432203443,1747411084.109,7.55, +0,55.82417616294623,63.56390473947664,1747411084.117,7.558, +0,55.722765312837005,63.61598149002509,1747411084.125,7.567, +0,55.62095449392599,63.66727189549517,1747411084.134,7.575, +0,55.51875002338081,63.717773329277726,1747411084.142,7.583, +0,55.41615823124621,63.7674832163511,1747411084.15,7.592, +0,55.313185460029736,63.81639903329015,1747411084.159,7.6, +0,55.20983806428876,63.86451830827195,1747411084.167,7.608, +0,55.10612241021796,63.91183862107854,1747411084.175,7.617, +0,55.00204487523784,63.95835760309668,1747411084.184,7.625, +0,54.89761184758453,64.00407293731426,1747411084.192,7.633, +0,54.7928297259001,64.04898235831392,1747411084.2,7.642, +0,54.68770491882399,64.09308365226349,1747411084.209,7.65, +0,54.58224384458559,64.13637465690351,1747411084.217,7.658, +0,54.47645293059773,64.17885326153163,1747411084.225,7.667, +0,54.37033861305112,64.22051740698416,1747411084.234,7.675, +0,54.26390733651011,64.26136508561446,1747411084.242,7.683, +0,54.15716555350916,64.3013943412686,1747411084.25,7.692, +0,54.050119724150775,64.34060326925794,1747411084.259,7.7, +0,53.94277631570427,64.37899001632876,1747411084.267,7.708, +0,53.83514180220578,64.4165527806291,1747411084.275,7.717, +0,53.72722266405955,64.45328981167263,1747411084.284,7.725, +0,53.61902538764005,64.48919941029968,1747411084.292,7.733, +0,53.510556464895586,64.52427992863537,1747411084.3,7.742, +0,53.40182239295318,64.55852977004487,1747411084.309,7.75, +0,53.292829673724086,64.59194738908606,1747411084.317,7.758, +0,53.183584813511395,64.62453129145906,1747411084.325,7.767, +0,53.074094322618095,64.65628003395318,1747411084.334,7.775, +0,52.96436471495696,64.68719222439107,1747411084.342,7.783, +0,52.85440250766151,64.71726652157,1747411084.35,7.792, +0,52.744214220698154,64.74650163520056,1747411084.359,7.8, +0,52.633806376479896,64.77489632584255,1747411084.367,7.808, +0,52.52318549948124,64.80244940483813,1747411084.375,7.817, +0,52.41235811585439,64.8291597342424,1747411084.384,7.825, +0,52.301330753046976,64.85502622675116,1747411084.392,7.833, +0,52.190109939421035,64.88004784562614,1747411084.4,7.842, +0,52.07870220387341,64.90422360461751,1747411084.409,7.85, +0,51.96711407545758,64.92755256788388,1747411084.417,7.858, +0,51.855352083006885,64.95003384990952,1747411084.425,7.867, +0,51.743422754759344,64.97166661541912,1747411084.434,7.875, +0,51.63133261798356,64.9924500792901,1747411084.442,7.883, +0,51.51908819860668,65.01238350646199,1747411084.45,7.892, +0,51.40669602084313,65.03146621184372,1747411084.459,7.9, +0,51.29416260682547,65.04969756021812,1747411084.467,7.908, +0,51.18149447623639,65.06707696614401,1747411084.475,7.917, +0,51.06869814594236,65.08360389385578,1747411084.484,7.925, +0,50.95578012962884,65.09927785716053,1747411084.492,7.933, +0,50.842746937436914,65.1140984193328,1747411084.5,7.942, +0,50.7296050756018,65.12806519300683,1747411084.509,7.95, +0,50.61636104609243,65.14117784006636,1747411084.517,7.958, +0,50.50302134625316,65.1534360715322,1747411084.525,7.967, +0,50.38959246844668,65.16483964744722,1747411084.534,7.975, +0,50.276080899698705,65.17538837675923,1747411084.542,7.983, +0,50.162493121344525,65.18508211720125,1747411084.55,7.992, +0,50.04883560867658,65.19392077516967,1747411084.559,8.0, +0,49.935114830594394,65.20190430560007,1747411084.567,8.008, +0,49.82133724925566,65.20903271184063,1747411084.575,8.017, +0,49.70750931972931,65.21530604552349,1747411084.584,8.025, +0,49.5936374896501,65.22072440643366,1747411084.592,8.033, +0,49.479728198874966,65.22528794237581,1747411084.6,8.042, +0,49.365787879140974,65.22899684903888,1747411084.609,8.05, +0,49.25182295372536,65.23185136985835,1747411084.617,8.058, +0,49.137839837106775,65.23385179587656,1747411084.625,8.067, +0,49.023844934628656,65.23499846560063,1747411084.634,8.075, +0,48.9098446421642,65.23529176485843,1747411084.642,8.083, +0,48.7958453458003,65.23473212665249,1747411084.65,8.092, +0,48.68185342143781,65.23332003101122,1747411084.659,8.1, +0,48.567875234564056,65.23105600483903,1747411084.667,8.108, +0,48.45391713985698,65.22794062176364,1747411084.675,8.117, +0,48.33998548087597,65.22397450198154,1747411084.684,8.125, +0,48.226086589737825,65.2191583121016,1747411084.692,8.133, +0,48.11222678679406,65.21349276498631,1747411084.7,8.142, +0,47.998412380310576,65.20697861959147,1747411084.709,8.15, +0,47.88464966614867,65.19961668080344,1747411084.717,8.158, +0,47.77094492744841,65.19140779927491,1747411084.725,8.167, +0,47.65730443431339,65.1823528712583,1747411084.734,8.175, +0,47.54373444349751,65.17245283843754,1747411084.742,8.183, +0,47.43024119809418,65.16170868775785,1747411084.75,8.192, +0,47.3168309272262,65.15012145125358,1747411084.759,8.2, +0,47.20350984573891,65.13769220587432,1747411084.767,8.208, +0,47.090284153894125,65.12442207330896,1747411084.775,8.217, +0,46.977160037066845,65.11031221980826,1747411084.784,8.225, +0,46.86414366544307,65.09536385600519,1747411084.792,8.233, +0,46.751241193720325,65.0795782367338,1747411084.8,8.242, +0,46.63845876080965,65.06295666084623,1747411084.809,8.25, +0,46.52580248953941,65.04550047102785,1747411084.817,8.258, +0,46.41327848636167,65.0272110536109,1747411084.825,8.267, +0,46.30089284105982,65.00808983838616,1747411084.834,8.275, +0,46.18865162645867,64.98813829841306,1747411084.842,8.283, +0,46.0765608981361,64.96735794982816,1747411084.85,8.292, +0,45.96462669413734,64.94575035165181,1747411084.859,8.3, +0,45.85285503469025,64.92331710559326,1747411084.867,8.308, +0,45.741251921923535,64.90005985585417,1747411084.875,8.317, +0,45.62982333958644,64.87598028893045,1747411084.884,8.325, +0,45.518575252770546,64.85108013341254,1747411084.892,8.333, +0,45.407513607633675,64.82536115978415,1747411084.9,8.342, +0,45.29664433112567,64.79882518021934,1747411084.909,8.35, +0,45.18597333071616,64.7714740483782,1747411084.917,8.358, +0,45.075506494124674,64.74330965920089,1747411084.925,8.367, +0,44.96524968905234,64.71433394870033,1747411084.934,8.375, +0,44.85520876291596,64.68454889375322,1747411084.942,8.383, +0,44.74538954258388,64.65395651188976,1747411084.95,8.392, +0,44.635797834114136,64.62255886108183,1747411084.959,8.4, +0,44.52643942249444,64.59035803952979,1747411084.967,8.408, +0,44.417320071384445,64.55735618544786,1747411084.975,8.417, +0,44.30844552285975,64.52355547684807,1747411084.984,8.425, +0,44.199821497158275,64.48895813132292,1747411084.992,8.433, +0,44.0914536924286,64.4535664058266,1747411085.0,8.442, +0,43.98334778448031,64.41738259645494,1747411085.009,8.45, +0,43.87550942653648,64.38040903822397,1747411085.017,8.458, +0,43.76794424898809,64.3426481048472,1747411085.025,8.467, +0,43.660657859151016,64.30410220851178,1747411085.034,8.475, +0,43.55365584102436,64.26477379965303,1747411085.042,8.483, +0,43.44694375505137,64.22466536672808,1747411085.05,8.492, +0,43.340527137882525,64.18377943598814,1747411085.059,8.5, +0,43.23441150214026,64.14211857124947,1747411085.067,8.508, +0,43.12860233618625,64.09968537366332,1747411085.075,8.517, +0,43.023105103890586,64.0564824814846,1747411085.084,8.525, +0,42.917925244402944,64.01251256983933,1747411085.092,8.533, +0,42.81306817192613,63.967778350491116,1747411085.1,8.542, +0,42.70853927549163,63.92228257160636,1747411085.109,8.55, +0,42.604343918737094,63.876028017518394,1747411085.117,8.558, +0,42.50048743968619,63.82901750849053,1747411085.125,8.567, +0,42.39697515053045,63.78125390047808,1747411085.134,8.575, +0,42.293812337413335,63.7327400848893,1747411085.142,8.583, +0,42.19100426021616,63.683478988345186,1747411085.15,8.592, +0,42.088556152346484,63.63347357243842,1747411085.159,8.6, +0,41.98647322052842,63.58272683349123,1747411085.167,8.608, +0,41.88476064459509,63.53124180231221,1747411085.175,8.617, +0,41.78342357728321,63.47902154395227,1747411085.184,8.625, +0,41.68246714403002,63.42606915745965,1747411085.192,8.633, +0,41.581896442771786,63.37238777563377,1747411085.2,8.642, +0,41.48171654374527,63.31798056477855,1747411085.209,8.65, +0,41.3819324892904,63.26285072445441,1747411085.217,8.658, +0,41.282549293655876,63.20700148722971,1747411085.225,8.667, +0,41.18357194280641,63.15043611843116,1747411085.234,8.675, +0,41.08500539423225,63.0931579158934,1747411085.242,8.683, +0,40.986854576761004,63.03517020970781,1747411085.25,8.692, +0,40.88912439037123,62.97647636197039,1747411085.259,8.7, +0,40.7918197060085,62.91707976652894,1747411085.267,8.708, +0,40.69494536540352,62.85698384872947,1747411085.275,8.717, +0,40.59850618089226,62.796192065161705,1747411085.284,8.725, +0,40.50250693523831,62.73470790340398,1747411085.292,8.733, +0,40.40695238145736,62.67253488176731,1747411085.3,8.742, +0,40.31184724264387,62.60967654903885,1747411085.309,8.75, +0,40.21719621179983,62.54613648422453,1747411085.317,8.758, +0,40.123003951665595,62.481918296291084,1747411085.325,8.767, +0,40.029275094552816,62.41702562390728,1747411085.334,8.775, +0,39.936014242179986,62.35146213518489,1747411085.342,8.783, +0,39.84322596550916,62.28523152741835,1747411085.35,8.792, +0,39.75091480458588,62.218337526824484,1747411085.359,8.8, +0,39.65908526838041,62.1507838882812,1747411085.367,8.808, +0,39.56774183463159,62.08257439506574,1747411085.375,8.817, +0,39.476888949692565,62.01371285859238,1747411085.384,8.825, +0,39.38653102837876,61.94420311814948,1747411085.392,8.833, +0,39.29667245381786,61.87404904063605,1747411085.4,8.842, +0,39.207317577302156,61.80325452029787,1747411085.409,8.85, +0,39.118470718142724,61.73182347846296,1747411085.417,8.858, +0,39.03013616352584,61.65975986327656,1747411085.425,8.867, +0,38.94231816837163,61.58706764943585,1747411085.434,8.875, +0,38.855020955194725,61.513750837923936,1747411085.442,8.883, +0,38.76824871396688,61.43981345574346,1747411085.45,8.892, +0,38.68200560198212,61.36525955565,1747411085.459,8.9, +0,38.596295743723445,61.29009321588461,1747411085.467,8.908, +0,38.51112323073232,61.21431853990657,1747411085.475,8.917, +0,38.426492121479484,61.13793965612507,1747411085.484,8.925, +0,38.34240644123857,61.06096071763109,1747411085.492,8.933, +0,38.25887018196136,60.98338590192856,1747411085.5,8.942, +0,38.17588730215539,60.905219410665396,1747411085.509,8.95, +0,38.09346172676354,60.826465469364166,1747411085.517,8.958, +0,38.01159734704574,60.747128327152296,1747411085.525,8.967, +0,37.93029802046273,60.667212256492164,1747411085.534,8.975, +0,37.849567570561995,60.5867215529109,1747411085.542,8.983, +0,37.769409786865694,60.50566053472977,1747411085.55,8.992, +0,37.68982842476072,60.42403354279346,1747411085.559,9.0, +0,37.610827205390855,60.341844940199124,1747411085.567,9.008, +0,37.53240981555088,60.25909911202507,1747411085.575,9.017, +0,37.454579907582904,60.175800465059396,1747411085.584,9.025, +0,37.37734109927466,60.09195342752829,1747411085.592,9.033, +0,37.30069697375994,60.00756244882436,1747411085.6,9.042, +0,37.22465107942102,59.922631999234575,1747411085.609,9.05, +0,37.149206929793166,59.837166569668184,1747411085.617,9.058, +0,37.074368003471164,59.75117067138444,1747411085.625,9.067, +0,37.00013774401798,59.66464883572031,1747411085.634,9.075, +0,36.92651955987537,59.5776056138179,1747411085.642,9.083, +0,36.853516824276596,59.490045576352,1747411085.65,9.092, +0,36.78113287516105,59.4019733132573,1747411085.659,9.1, +0,36.70937101509117,59.31339343345585,1747411085.667,9.108, +0,36.63823451117108,59.22431056458419,1747411085.675,9.117, +0,36.567726594967446,59.13472935272057,1747411085.684,9.125, +0,36.497850462432226,59.044654462112085,1747411085.692,9.133, +0,36.42860927382765,58.95409057490205,1747411085.7,9.142, +0,36.360006153652805,58.86304239085678,1747411085.709,9.15, +0,36.29204419057274,58.77151462709325,1747411085.717,9.158, +0,36.22472643734912,58.67951201780595,1747411085.725,9.167, +0,36.1580559107731,58.5870393139943,1747411085.734,9.175, +0,36.09203559160022,58.494101283190076,1747411085.742,9.183, +0,36.026668424486985,58.4007027091844,1747411085.75,9.192, +0,35.961957317929944,58.306848391755814,1747411085.759,9.2, +0,35.8979051442062,58.21254314639734,1747411085.767,9.208, +0,35.83451473931614,58.1177918040443,1747411085.775,9.217, +0,35.77178890292835,58.02259921080236,1747411085.784,9.225, +0,35.7097303983259,57.92697022767507,1747411085.792,9.233, +0,35.648341952355196,57.830909730292255,1747411085.8,9.242, +0,35.587626255376335,57.73442260863806,1747411085.809,9.25, +0,35.52758596121578,57.63751376677962,1747411085.817,9.258, +0,35.46822368712051,57.54018812259534,1747411085.825,9.267, +0,35.409542013714535,57.44245060750387,1747411085.834,9.275, +0,35.35154348495709,57.34430616619319,1747411085.842,9.283, +0,35.2942306081028,57.24575975634968,1747411085.85,9.292, +0,35.23760585366376,57.146816348387645,1747411085.859,9.3, +0,35.18167165537349,57.04748092517902,1747411085.867,9.308, +0,35.12643041015297,56.94775848178352,1747411085.875,9.317, +0,35.07188447807818,56.84765402517851,1747411085.884,9.325, +0,35.01803618234996,56.74717257398992,1747411085.892,9.333, +0,34.96488780926542,56.646319158222774,1747411085.9,9.342, +0,34.91244160819147,56.54509881899253,1747411085.909,9.35, +0,34.860699791540036,56.44351660825645,1747411085.917,9.358, +0,34.80966453474515,56.34157758854524,1747411085.925,9.367, +0,34.759337976242136,56.239286832695534,1747411085.934,9.375, +0,34.709722217448174,56.1366494235818,1747411085.942,9.383, +0,34.66081932274531,56.03367045384983,1747411085.95,9.392, +0,34.61263131946469,55.930355025649426,1747411085.959,9.4, +0,34.56516019787308,55.826708250368235,1747411085.967,9.408, +0,34.518407911161006,55.722735248365794,1747411085.975,9.417, +0,34.4723763754327,55.618441148707774,1747411085.984,9.425, +0,34.427067469697946,55.513831088901,1747411085.992,9.433, +0,34.38248303586553,55.408910214628335,1747411086.0,9.442, +0,34.33862487873897,55.30368367948513,1747411086.009,9.45, +0,34.29549476601319,55.19815664471442,1747411086.017,9.458, +0,34.25309442827392,55.09233427894431,1747411086.025,9.467, +0,34.211425558998165,54.98622175792471,1747411086.034,9.475, +0,34.17048981455676,54.879824264264926,1747411086.042,9.483, +0,34.13028881421867,54.77314698717196,1747411086.05,9.492, +0,34.0908241401569,54.66619512218878,1747411086.059,9.5, +0,34.0520973374563,54.55897387093372,1747411086.067,9.508, +0,34.01410991412298,54.451488440839796,1747411086.075,9.517, +0,33.976863341095594,54.34374404489518,1747411086.084,9.525, +0,33.9403590522582,54.23574590138368,1747411086.092,9.533, +0,33.90459844445489,54.1274992336261,1747411086.1,9.542, +0,33.86958287750626,54.01900926972223,1747411086.109,9.55, +0,33.83531367422724,53.91028124229286,1747411086.117,9.558, +0,33.80179212044703,53.80132038822322,1747411086.125,9.567, +0,33.76901946503038,53.692131948406214,1747411086.134,9.575, +0,33.73699691990079,53.58272116748699,1747411086.142,9.583, +0,33.70572566006512,53.47309329360737,1747411086.15,9.592, +0,33.67520682364029,53.36325357815197,1747411086.159,9.6, +0,33.64544151188093,53.25320727549317,1747411086.167,9.608, +0,33.6164307892094,53.1429596427386,1747411086.175,9.617, +0,33.58817568324709,53.0325159394786,1747411086.184,9.625, +0,33.56067718484738,52.92188142753401,1747411086.192,9.633, +0,33.53393624813019,52.811061370704934,1747411086.2,9.642, +0,33.50795379051827,52.70006103452008,1747411086.209,9.65, +0,33.482730692774986,52.588885685987094,1747411086.217,9.658, +0,33.45826779904367,52.47754059334304,1747411086.225,9.667, +0,33.4345659168887,52.36603102580606,1747411086.234,9.675, +0,33.41162581733805,52.25436225332765,1747411086.242,9.683, +0,33.389448234927386,52.14253954634532,1747411086.25,9.692, +0,33.36803386774588,52.030568175536736,1747411086.259,9.7, +0,33.34738337748338,51.91845341157364,1747411086.267,9.708, +0,33.32749738947928,51.80620052487739,1747411086.275,9.717, +0,33.308376492772844,51.69381478537474,1747411086.284,9.725, +0,33.29002124015508,51.58130146225446,1747411086.292,9.733, +0,33.27243214822218,51.46866582372506,1747411086.3,9.742, +0,33.255609697430366,51.355913136772685,1747411086.309,9.75, +0,33.23955433215242,51.243048666920664,1747411086.317,9.758, +0,33.22426646073545,51.13007767798883,1747411086.325,9.767, +0,33.20974645556045,51.01700543185463,1747411086.334,9.775, +0,33.19599465310303,50.90383718821432,1747411086.342,9.783, +0,33.183011353995866,50.7905782043453,1747411086.35,9.792, +0,33.1707968230925,50.67723373486947,1747411086.359,9.8, +0,33.15935128953258,50.56380903151692,1747411086.367,9.808, +0,33.14867494680858,50.45030934289107,1747411086.375,9.817, +0,33.13876795283393,50.33673991423397,1747411086.384,9.825, +0,33.129630430012625,50.22310598719327,1747411086.392,9.833, +0,33.12126246531018,50.10941279958916,1747411086.4,9.842, +0,33.11366411032499,49.99566558516616,1747411086.409,9.85, +0,33.10683538136648,49.881869573429825,1747411086.417,9.858, +0,33.10077625952361,49.768029989315274,1747411086.425,9.867, +0,33.095486690745965,49.65415205302566,1747411086.434,9.875, +0,33.09096658592064,49.54024097978754,1747411086.442,9.883, +0,33.08721582095147,49.426301979623325,1747411086.45,9.892, +0,33.08423423683972,49.312340257125044,1747411086.459,9.9, +0,33.082021639766126,49.19836101122897,1747411086.467,9.908, +0,33.08057780117426,49.08436943499138,1747411086.475,9.917, +0,33.079902457855155,48.97037071536467,1747411086.484,9.925, +0,33.07999531203338,48.85637003297532,1747411086.492,9.933, +0,33.08085603145433,48.7423725619017,1747411086.5,9.942, +0,33.08248424947287,48.62838346945389,1747411086.509,9.95, +0,33.0848795651432,48.51440791595384,1747411086.517,9.958, +0,33.08804154331011,48.40045105451662,1747411086.525,9.967, +0,33.09196971470145,48.28651803083279,1747411086.534,9.975, +0,33.09666357602184,48.17261398295158,1747411086.542,9.983, +0,33.102122590047685,48.05874404106514,1747411086.55,9.992, +0,33.10834618572346,47.94491332729391,1747411086.559,10.0, +0,33.115333758259155,47.831126955472605,1747411086.567,10.008, +0,33.123084669229,47.71739003093763,1747411086.575,10.017, +0,33.131598246671395,47.60370765031554,1747411086.584,10.025, +0,33.140873785190124,47.49008490131187,1747411086.592,10.033, +0,33.15091054605662,47.37652686250189,1747411086.6,10.042, +0,33.16170775731357,47.263038603121586,1747411086.609,10.05, +0,33.17326461387965,47.14962518286014,1747411086.617,10.058, +0,33.185580277655404,47.03629165165359,1747411086.625,10.067, +0,33.19865387763032,46.92304304947889,1747411086.634,10.075, +0,33.21248450999107,46.809884406149784,1747411086.642,10.083, +0,33.227071238230906,46.69682074111301,1747411086.65,10.092, +0,33.24241309326014,46.58385706324635,1747411086.659,10.1, +0,33.258509073517814,46.47099837065678,1747411086.667,10.108, +0,33.27535814508447,46.35824965048085,1747411086.675,10.117, +0,33.29295924179598,46.24561587868507,1747411086.684,10.125, +0,33.3113112653586,46.133102019867984,1747411086.692,10.133, +0,33.330413085464954,46.02071302706324,1747411086.7,10.142, +0,33.35026353991128,45.90845384154354,1747411086.709,10.15, +0,33.37086143471556,45.796329392626035,1747411086.717,10.158, +0,33.39220554423687,45.68434459747841,1747411086.725,10.167, +0,33.414294611295716,45.572504360926445,1747411086.734,10.175, +0,33.43712734729544,45.46081357526235,1747411086.742,10.183, +0,33.46070243234456,45.349277120054644,1747411086.75,10.192, +0,33.48501851538036,45.2378998619586,1747411086.759,10.2, +0,33.51007421429328,45.126686654528214,1747411086.767,10.208, +0,33.535868116052384,45.01564233802935,1747411086.775,10.217, +0,33.56239877683187,44.90477173925368,1747411086.784,10.225, +0,33.58966472213856,44.79407967133389,1747411086.792,10.233, +0,33.61766444694031,44.6835709335601,1747411086.8,10.242, +0,33.646396415795465,44.573250311197526,1747411086.809,10.25, +0,33.67585906298319,44.46312257530505,1747411086.817,10.258, +0,33.70605079263491,44.35319248255486,1747411086.825,10.267, +0,33.73696997886646,44.24346477505381,1747411086.834,10.275, +0,33.7686149659114,44.1339441801652,1747411086.842,10.283, +0,33.800984068255076,44.024635410332266,1747411086.85,10.292, +0,33.83407557076977,43.915543162902445,1747411086.859,10.3, +0,33.86788772885059,43.80667211995315,1747411086.867,10.308, +0,33.9024187685523,43.69802694811855,1747411086.875,10.317, +0,33.937666886727186,43.58961229841734,1747411086.884,10.325, +0,33.973630251163534,43.481432806082125,1747411086.892,10.333, +0,34.01030700072525,43.37349309038947,1747411086.9,10.342, +0,34.0476952454921,43.265797754491736,1747411086.909,10.35, +0,34.085793066901,43.15835138524938,1747411086.917,10.358, +0,34.12459851788798,43.05115855306515,1747411086.925,10.367, +0,34.1641096230312,42.94422381171874,1747411086.934,10.375, +0,34.20432437869451,42.837551698203434,1747411086.942,10.383, +0,34.24524075317191,42.731146732563566,1747411086.95,10.392, +0,34.28685668683315,42.62501341773264,1747411086.959,10.4, +0,34.32917009226949,42.51915623937382,1747411086.967,10.408, +0,34.372178854440875,42.413579665720555,1747411086.975,10.417, +0,34.41588083082338,42.30828814741912,1747411086.984,10.425, +0,34.460273851557865,42.2032861173718,1747411086.992,10.433, +0,34.50535571959905,42.09857799058172,1747411087.0,10.442, +0,34.551124210865424,41.99416816399885,1747411087.009,10.45, +0,34.5975770743901,41.89006101636677,1747411087.017,10.458, +0,34.64471203247201,41.78626090807144,1747411087.025,10.467, +0,34.69252678082822,41.68277218099039,1747411087.034,10.475, +0,34.74101898874675,41.579599158343484,1747411087.042,10.483, +0,34.790186299240005,41.47674614454533,1747411087.05,10.492, +0,34.84002632919915,41.37421742505804,1747411087.059,10.5, +0,34.890536669549036,41.27201726624575,1747411087.067,10.508, +0,34.94171488540381,41.17014991523038,1747411087.075,10.517, +0,34.99355851622299,41.06861959974882,1747411087.084,10.525, +0,35.04606507596872,40.96743052801045,1747411087.092,10.533, +0,35.09923205326315,40.866586888556924,1747411087.1,10.542, +0,35.15305691154665,40.76609285012278,1747411087.109,10.55, +0,35.2075370892367,40.665952561497214,1747411087.117,10.558, +0,35.26266999988742,40.56617015138702,1747411087.125,10.567, +0,35.318453032349524,40.46674972828116,1747411087.134,10.575, +0,35.37488355093114,40.36769538031611,1747411087.142,10.583, +0,35.43195889555893,40.26901117514288,1747411087.15,10.592, +0,35.48967638194007,40.170701159794966,1747411087.159,10.6, +0,35.54803330172475,40.07276936055746,1747411087.167,10.608, +0,35.60702692266844,39.975219782838835,1747411087.175,10.617, +0,35.6666544887977,39.87805641103904,1747411087.184,10.625, +0,35.7269132205712,39.781283208427666,1747411087.192,10.633, +0,35.78780031504623,39.68490411701512,1747411087.2,10.642, +0,35.84931294604374,39.58892305742847,1747411087.209,10.65, +0,35.91144826431365,39.49334392878876,1747411087.217,10.658, +0,35.97420339770132,39.39817060858881,1747411087.225,10.667, +0,36.03757545131419,39.303406952572495,1747411087.234,10.675, +0,36.101561507689,39.2090567946154,1747411087.242,10.683, +0,36.16615862695949,39.11512394660653,1747411087.25,10.692, +0,36.23136384702474,39.02161219833126,1747411087.259,10.7, +0,36.297174183717466,38.92852531735602,1747411087.267,10.708, +0,36.36358663097358,38.83586704891334,1747411087.275,10.717, +0,36.430598161001384,38.74364111578912,1747411087.284,10.725, +0,36.49820572445175,38.65185121821049,1747411087.292,10.733, +0,36.566406250588656,38.56050103373504,1747411087.3,10.742, +0,36.63519664745982,38.46959421714167,1747411087.309,10.75, +0,36.704573802068154,38.37913440032223,1747411087.317,10.758, +0,36.7745345805435,38.28912519217457,1747411087.325,10.767, +0,36.845075828314506,38.1995701784972,1747411087.334,10.775, +0,36.916194370281445,38.1104729218844,1747411087.342,10.783, +0,36.987887010988715,38.02183696162362,1747411087.35,10.792, +0,37.06015053479837,37.933665813593215,1747411087.359,10.8, +0,37.13298170606354,37.84596297016203,1747411087.367,10.808, +0,37.206377269302656,37.75873190008977,1747411087.375,10.817, +0,37.28033394937332,37.67197604842934,1747411087.384,10.825, +0,37.35484845164745,37.58569883642949,1747411087.392,10.833, +0,37.429917462186054,37.49990366143939,1747411087.4,10.842, +0,37.50553764791437,37.414593896814495,1747411087.409,10.85, +0,37.5817056567978,37.32977289182312,1747411087.417,10.858, +0,37.658418118017565,37.24544397155483,1747411087.425,10.867, +0,37.73567164214718,37.16161043682964,1747411087.434,10.875, +0,37.813462821328876,37.07827556410878,1747411087.442,10.883, +0,37.89178822945031,36.995442605406645,1747411087.45,10.892, +0,37.97064442232164,36.91311478820399,1747411087.459,10.9, +0,38.050027937853116,36.83129531536207,1747411087.467,10.908, +0,38.12993529623236,36.74998736503857,1747411087.475,10.917, +0,38.21036300010229,36.66919409060452,1747411087.484,10.925, +0,38.2913075347395,36.58891862056204,1747411087.492,10.933, +0,38.372765368231995,36.50916405846442,1747411087.5,10.942, +0,38.45473295165837,36.429933482836006,1747411087.509,10.95, +0,38.537206719266024,36.35122994709474,1747411087.517,10.958, +0,38.62018308865048,36.27305647947483,1747411087.525,10.967, +0,38.703658460934356,36.19541608295134,1747411087.534,10.975, +0,38.78762922094683,36.11831173516574,1747411087.542,10.983, +0,38.872091737403146,36.041746388352706,1747411087.55,10.992, +0,38.95704236308421,35.96572296926835,1747411087.559,11.0, +0,39.04247743501665,35.89024437911934,1747411087.567,11.008, +0,39.12839327465276,35.815313493493605,1747411087.575,11.017, +0,39.21478618805074,35.74093316229202,1747411087.584,11.025, +0,39.3016524660548,35.66710620966166,1747411087.592,11.033, +0,39.38898838447612,35.5938354339296,1747411087.6,11.042, +0,39.4767902042729,35.52112360753886,1747411087.609,11.05, +0,39.565054171731546,35.4489734769848,1747411087.617,11.058, +0,39.653776518647135,35.37738776275322,1747411087.625,11.067, +0,39.74295346250443,35.306369159259575,1747411087.634,11.075, +0,39.832581206659235,35.235920334789014,1747411087.642,11.083, +0,39.922655940519064,35.16604393143836,1747411087.65,11.092, +0,40.01317383972465,35.09674256505871,1747411087.659,11.1, +0,40.104131066331064,35.02801882519959,1747411087.667,11.108, +0,40.19552376898921,34.95987527505403,1747411087.675,11.117, +0,40.287348083126986,34.892314451405305,1747411087.684,11.125, +0,40.37960013113103,34.8253388645743,1747411087.692,11.133, +0,40.47227602252802,34.75895099836859,1747411087.7,11.142, +0,40.5653718541663,34.69315331003244,1747411087.709,11.15, +0,40.65888371039742,34.62794823019815,1747411087.717,11.158, +0,40.752807663257656,34.56333816283851,1747411087.725,11.167, +0,40.847139772649726,34.49932548522054,1747411087.734,11.175, +0,40.941876086524395,34.43591254786026,1747411087.742,11.183, +0,41.03701264106191,34.37310167447899,1747411087.75,11.192, +0,41.132545460853834,34.310895161960396,1747411087.759,11.2, +0,41.228470559084414,34.2492952803092,1747411087.767,11.208, +0,41.32478393771237,34.18830427261058,1747411087.775,11.217, +0,41.421481587652195,34.12792435499125,1747411087.784,11.225, +0,41.51855948895576,34.068157716581396,1747411087.792,11.233, +0,41.6160136109939,34.00900651947783,1747411087.8,11.242, +0,41.71383991263748,33.950472898708504,1747411087.809,11.25, +0,41.812034342439226,33.8925589621979,1747411087.817,11.258, +0,41.91059283881424,33.83526679073415,1747411087.825,11.267, +0,42.00951133022215,33.77859843793638,1747411087.834,11.275, +0,42.10878573534764,33.72255593022421,1747411087.842,11.283, +0,42.208411963281364,33.66714126678802,1747411087.85,11.292, +0,42.30838591370147,33.61235641956002,1747411087.859,11.3, +0,42.40870347705395,33.55820333318716,1747411087.867,11.308, +0,42.50936053473353,33.504683925004684,1747411087.875,11.317, +0,42.610352959264546,33.45180008501099,1747411087.884,11.325, +0,42.71167661448086,33.39955367584386,1747411087.892,11.333, +0,42.81332735570691,33.347946532757376,1747411087.9,11.342, +0,42.915301029937595,33.29698046360039,1747411087.909,11.35, +0,43.01759347601825,33.246657248796076,1747411087.917,11.358, +0,43.12020052482499,33.19697864132233,1747411087.925,11.367, +0,43.223117999444305,33.147946366693645,1747411087.934,11.375, +0,43.326341715352534,33.09956212294404,1747411087.942,11.383, +0,43.429867480595746,33.051827580610926,1747411087.95,11.392, +0,43.533691095968635,33.00474438272036,1747411087.959,11.4, +0,43.63780835519401,32.95831414477322,1747411087.967,11.408, +0,43.742215045101254,32.91253845473272,1747411087.975,11.417, +0,43.84690694580575,32.86741887301268,1747411087.984,11.425, +0,43.95187983088686,32.822956932467356,1747411087.992,11.433, +0,44.05712946756624,32.779154138382154,1747411088.0,11.442, +0,44.16265161688647,32.73601196846528,1747411088.009,11.45, +0,44.26844203388855,32.693531872840836,1747411088.017,11.458, +0,44.374496467789726,32.65171527404281,1747411088.025,11.467, +0,44.48081066216084,32.61056356701022,1747411088.034,11.475, +0,44.58738035510372,32.570078119083334,1747411088.042,11.483, +0,44.69420127942789,32.53026027000103,1747411088.05,11.492, +0,44.80126916282769,32.49111133189908,1747411088.059,11.5, +0,44.90857972805844,32.45263258930977,1747411088.067,11.508, +0,45.01612869311257,32.41482529916245,1747411088.075,11.517, +0,45.1239117713959,32.37769069078513,1747411088.084,11.525, +0,45.23192467190306,32.3412299659072,1747411088.092,11.533, +0,45.34016309939295,32.30544429866329,1747411088.1,11.542, +0,45.448622754563786,32.270334835598035,1747411088.109,11.55, +0,45.55729933422797,32.235902695672074,1747411088.117,11.558, +0,45.66618853148664,32.20214897026894,1747411088.125,11.567, +0,45.77528603590379,32.169074723203146,1747411088.134,11.575, +0,45.88458753368033,32.13668099072922,1747411088.142,11.583, +0,45.99408870782735,32.104968781551904,1747411088.15,11.592, +0,46.10378523833984,32.073939076837206,1747411088.159,11.6, +0,46.21367280236911,32.04359283022477,1747411088.167,11.608, +0,46.323747074395996,32.01393096784089,1747411088.175,11.617, +0,46.43400372640268,31.984954388313017,1747411088.184,11.625, +0,46.54443842804483,31.956663962784877,1747411088.192,11.633, +0,46.65504684682301,31.929060534932926,1747411088.2,11.642, +0,46.76582464825417,31.902144920983602,1747411088.209,11.65, +0,46.87676749604221,31.87591790973175,1747411088.217,11.658, +0,46.98787105224886,31.850380262559913,1747411088.225,11.667, +0,47.09913097746354,31.825532713458774,1747411088.234,11.675, +0,47.210542930973126,31.80137596904851,1747411088.242,11.683, +0,47.32210257093145,31.777910708601194,1747411088.25,11.692, +0,47.43380555452837,31.755137584064094,1747411088.259,11.7, +0,47.54564753815799,31.733057220084156,1747411088.267,11.708, +0,47.657624177587635,31.711670214033205,1747411088.275,11.717, +0,47.76973112812462,31.690977136034448,1747411088.284,11.725, +0,47.881964044784596,31.670978528989636,1747411088.292,11.733, +0,47.99431858245795,31.65167490860744,1747411088.3,11.742, +0,48.106790396076995,31.63306676343262,1747411088.309,11.75, +0,48.219375140780976,31.615154554876412,1747411088.317,11.758, +0,48.332068472082995,31.597938717247537,1747411088.325,11.767, +0,48.44486604603471,31.581419657784412,1747411088.334,11.775, +0,48.557763519391564,31.565597756688202,1747411088.342,11.783, +0,48.670756549776684,31.550473367156936,1747411088.35,11.792, +0,48.78384079584533,31.536046815420406,1747411088.359,11.8, +0,48.89701191744821,31.522318400776147,1747411088.367,11.808, +0,49.01026557579443,31.50928839562628,1747411088.375,11.817, +0,49.12359743361456,31.496957045515263,1747411088.384,11.825, +0,49.23700315532208,31.485324569168686,1747411088.392,11.833, +0,49.35047840717555,31.474391158532836,1747411088.4,11.842, +0,49.46401885743989,31.46415697881527,1747411088.409,11.85, +0,49.577620176546695,31.454622168526306,1747411088.417,11.858, +0,49.691278037254584,31.44578683952138,1747411088.425,11.867, +0,49.80498811480918,31.437651077044322,1747411088.434,11.875, +0,49.9187460871021,31.43021493977155,1747411088.442,11.883, +0,50.03254763483001,31.42347845985711,1747411088.45,11.892, +0,50.14638844165244,31.417441642978694,1747411088.459,11.9, +0,50.26026419435001,31.41210446838443,1747411088.467,11.908, +0,50.37417058298123,31.40746688894067,1747411088.475,11.917, +0,50.48810330103967,31.403528831180548,1747411088.484,11.925, +0,50.60205804560972,31.40029019535348,1747411088.492,11.933, +0,50.71603051752258,31.39775085547552,1747411088.5,11.942, +0,50.8300164215114,31.395910659380544,1747411088.509,11.95, +0,50.94401146636573,31.394769428772335,1747411088.517,11.958, +0,51.05801136508572,31.39432695927749,1747411088.525,11.967, +0,51.17201183503571,31.394583020499205,1747411088.534,11.975, +0,51.28600859809715,31.395537356071856,1747411088.542,11.983, +0,51.39999738082102,31.397189683716476,1747411088.55,11.992, +0,51.51397391458012,31.39953969529704,1747411088.559,12.0, +0,51.62793393571966,31.402587056877547,1747411088.567,12.008, +0,51.741873185690054,31.406331408779323,1747411088.575,12.017, +0,51.85578741127186,31.41077236564234,1747411088.584,12.025, +0,51.96967236461291,31.415909516481094,1747411088.592,12.033, +0,52.08352380345237,31.42174242474734,1747411088.6,12.042, +0,52.19733749125056,31.428270628390717,1747411088.609,12.05, +0,52.311109197337,31.43549363992075,1747411088.617,12.058, +0,52.42483469705749,31.44341094646962,1747411088.625,12.067, +0,52.53850977192136,31.452022009855764,1747411088.634,12.075, +0,52.652130209747014,31.461326266648207,1747411088.642,12.083, +0,52.765691804808135,31.47132312823174,1747411088.65,12.092, +0,52.879190357978246,31.48201198087281,1747411088.659,12.1, +0,52.99262167687526,31.493392185786224,1747411088.667,12.108, +0,53.105981576005426,31.505463079202624,1747411088.675,12.117, +0,53.21926587690608,31.518223972436665,1747411088.684,12.125, +0,53.33247040828871,31.531674151956043,1747411088.692,12.133, +0,53.44559100618066,31.545812879451194,1747411088.7,12.142, +0,53.55862351406648,31.560639391905774,1747411088.709,12.15, +0,53.6715637830287,31.57615290166788,1747411088.717,12.158, +0,53.78440767188789,31.59235259652199,1747411088.725,12.167, +0,53.89715104734213,31.60923763976168,1747411088.734,12.175, +0,54.00978978410593,31.626807170263014,1747411088.742,12.183, +0,54.122319765048324,31.64506030255868,1747411088.75,12.192, +0,54.23473688133045,31.663996126912842,1747411088.759,12.2, +0,54.347037032542666,31.683613709396738,1747411088.767,12.208, +0,54.45921612684078,31.703912091964924,1747411088.775,12.217, +0,54.57127008108117,31.724890292532177,1747411088.784,12.225, +0,54.68319482095696,31.74654730505138,1747411088.792,12.233, +0,54.79498628113089,31.768882099591586,1747411088.8,12.242, +0,54.906640405370325,31.79189362241735,1747411088.809,12.25, +0,55.018153146679445,31.815580796068264,1747411088.817,12.258, +0,55.12952046743196,31.83994251943947,1747411088.825,12.267, +0,55.24073833950288,31.864977667862718,1747411088.834,12.275, +0,55.35180274439924,31.890685093188072,1747411088.842,12.283, +0,55.46270967339095,31.917063623866404,1747411088.85,12.292, +0,55.57345512763997,31.944112065032353,1747411088.859,12.3, +0,55.68403511832983,31.97182919858815,1747411088.867,12.308, +0,55.79444566679366,32.0002137832879,1747411088.875,12.317, +0,55.90468280464213,32.02926455482265,1747411088.884,12.325, +0,56.014742573890075,32.05898022590597,1747411088.892,12.333, +0,56.124621027083315,32.08935948636029,1747411088.9,12.342, +0,56.23431422742389,32.12040100320377,1747411088.909,12.35, +0,56.34381824889494,32.152103420737745,1747411088.917,12.358, +0,56.45312917638556,32.18446536063509,1747411088.925,12.367, +0,56.56224310581362,32.21748542202868,1747411088.934,12.375, +0,56.671156144249,32.25116218160094,1747411088.942,12.383, +0,56.7798644100358,32.285494193673756,1747411088.95,12.392, +0,56.88836403291356,32.320479990298956,1747411088.959,12.4, +0,56.99665115413823,32.35611808134956,1747411088.967,12.408, +0,57.10472192660209,32.3924069546114,1747411088.975,12.417, +0,57.21257251495332,32.429345075875574,1747411088.984,12.425, +0,57.32019909571432,32.46693088903115,1747411088.992,12.433, +0,57.427597857399846,32.50516281615873,1747411089.0,12.442, +0,57.53476500063408,32.544039257624405,1747411089.009,12.45, +0,57.6416967382674,32.583558592174455,1747411089.017,12.458, +0,57.74838929549175,32.6237191770303,1747411089.025,12.467, +0,57.85483890995608,32.664519347984324,1747411089.034,12.475, +0,57.96104183188062,32.705957419496116,1747411089.042,12.483, +0,58.066994324170125,32.74803168478901,1747411089.05,12.492, +0,58.172692662538324,32.7907404159522,1747411089.059,12.5, +0,58.27813313557533,32.83408186402032,1747411089.067,12.508, +0,58.38331204492617,32.878054259098946,1747411089.075,12.517, +0,58.488225705356534,32.92265581044536,1747411089.084,12.525, +0,58.59287044487429,32.96788470657262,1747411089.092,12.533, +0,58.697242604838266,33.01373911534917,1747411089.1,12.542, +0,58.801338540067086,33.06021718409946,1747411089.109,12.55, +0,58.905154618946995,33.10731703970485,1747411089.117,12.558, +0,59.00868722353839,33.15503678870475,1747411089.125,12.567, +0,59.11193274968274,33.20337451739883,1747411089.134,12.575, +0,59.21488760710771,33.25232829194915,1747411089.142,12.583, +0,59.31754821953214,33.301896158483096,1747411089.15,12.592, +0,59.41991102476987,33.3520761431966,1747411089.159,12.6, +0,59.521972474833525,33.40286625245813,1747411089.167,12.608, +0,59.62372903603656,33.4542644729127,1747411089.175,12.617, +0,59.72517718909512,33.506268771586576,1747411089.184,12.625, +0,59.82631342922963,33.5588770959927,1747411089.192,12.633, +0,59.92713426626438,33.61208737423593,1747411089.2,12.642, +0,60.02763622472757,33.66589751511933,1747411089.209,12.65, +0,60.12781584394987,33.72030540825054,1747411089.217,12.658, +0,60.2276696781627,33.77530892414878,1747411089.225,12.667, +0,60.32719429659499,33.83090591435195,1747411089.234,12.675, +0,60.426386283570636,33.88709421152487,1747411089.242,12.683, +0,60.52524223860312,33.9438716295668,1747411089.25,12.692, +0,60.623758776491485,34.00123596372064,1747411089.259,12.7, +0,60.72193252741394,34.0591849906815,1747411089.267,12.708, +0,60.81976013702169,34.117716468706305,1747411089.275,12.717, +0,60.91723826653149,34.17682813772354,1747411089.284,12.725, +0,61.01436359281778,34.236517719443476,1747411089.292,12.733, +0,61.111132808503626,34.296782917468654,1747411089.3,12.742, +0,61.20754262205129,34.35762141740488,1747411089.309,12.75, +0,61.30358975785179,34.419030886972536,1747411089.317,12.758, +0,61.39927095631386,34.481008976118304,1747411089.325,12.767, +0,61.494582973951964,34.543553317127156,1747411089.334,12.775, +0,61.58952258347402,34.606661524735074,1747411089.342,12.783, +0,61.68408657386738,34.67033119624138,1747411089.35,12.792, +0,61.778271750484855,34.734559911622085,1747411089.359,12.8, +0,61.87207493513014,34.79934523364359,1747411089.367,12.808, +0,61.965492966141355,34.86468470797605,1747411089.375,12.817, +0,62.05852269847513,34.93057586330791,1747411089.384,12.825, +0,62.15116100378913,34.99701621146027,1747411089.392,12.833, +0,62.243404770523675,35.06400324750155,1747411089.4,12.842, +0,62.33525090398348,35.131534449862954,1747411089.409,12.85, +0,62.42669632641763,35.19960728045365,1747411089.417,12.858, +0,62.517737977099145,35.26821918477656,1747411089.425,12.867, +0,62.608372812403964,35.337367592044465,1747411089.434,12.875, +0,62.69859780588921,35.40704991529658,1747411089.442,12.883, +0,62.78840994836995,35.477263551514824,1747411089.45,12.892, +0,62.87780624799603,35.54800588174107,1747411089.459,12.9, +0,62.96678373032784,35.61927427119438,1747411089.467,12.908, +0,63.05533943841101,35.69106606938835,1747411089.475,12.917, +0,63.143470432850634,35.763378610249,1747411089.484,12.925, +0,63.2311737918848,35.83620921223294,1747411089.492,12.933, +0,63.31844661145715,35.90955517844571,1747411089.5,12.942, +0,63.40528600528841,35.98341379676011,1747411089.509,12.95, +0,63.491689104947916,36.05778233993551,1747411089.517,12.958, +0,63.57765305992341,36.13265806573653,1747411089.525,12.967, +0,63.663175037690785,36.20803821705266,1747411089.534,12.975, +0,63.748252223782686,36.28392002201779,1747411089.542,12.983, +0,63.83288182185646,36.360300694130046,1747411089.55,12.992, +0,63.91706105376122,36.437177432371826,1747411089.559,13.0, +0,64.00078715960434,36.514547421330235,1747411089.567,13.008, +0,64.0840573978169,36.59240783131746,1747411089.575,13.017, +0,64.16686904521843,36.670755818491514,1747411089.584,13.025, +0,64.24921939708116,36.74958852497739,1747411089.592,13.033, +0,64.33110576719291,36.828903078987906,1747411089.6,13.042, +0,64.41252548791985,36.908696594945376,1747411089.609,13.05, +0,64.49347591026797,36.98896617360298,1747411089.617,13.058, +0,64.57395440394419,37.069708902166745,1747411089.625,13.067, +0,64.65395835741606,37.150921854417156,1747411089.634,13.075, +0,64.7334851779715,37.23260209083158,1747411089.642,13.083, +0,64.81253229177722,37.31474665870651,1747411089.65,13.092, +0,64.89109714393626,37.397352592279915,1747411089.659,13.1, +0,64.96917719854545,37.48041691285428,1747411089.667,13.108, +0,65.0467699387511,37.56393662891889,1747411089.675,13.117, +0,65.12387286680486,37.64790873627334,1747411089.684,13.125, +0,65.20048350411803,37.73233021815031,1747411089.692,13.133, +0,65.27659939131576,37.817198045339154,1747411089.7,13.142, +0,65.35221808828982,37.90250917630905,1747411089.709,13.15, +0,65.42733717425118,37.988260557332836,1747411089.717,13.158, +0,65.50195424778146,38.07444912261066,1747411089.725,13.167, +0,65.57606692688364,38.16107179439378,1747411089.734,13.175, +0,65.6496728490322,38.24812548310864,1747411089.742,13.183, +0,65.72276967122218,38.335607087481,1747411089.75,13.192, +0,65.79535507001765,38.423513494659964,1747411089.759,13.2, +0,65.8674267415995,38.51184158034263,1747411089.767,13.208, +0,65.93898240181224,38.60058820889839,1747411089.775,13.217, +0,66.01001978621024,38.689750233493584,1747411089.784,13.225, +0,66.08053665010269,38.77932449621586,1747411089.792,13.233, +0,66.15053076859883,38.8693078281995,1747411089.8,13.242, +0,66.2199999366511,38.95969704974967,1747411089.809,13.25, +0,66.28894196909873,39.050488970467875,1747411089.817,13.258, +0,66.35735470070959,39.14168038937664,1747411089.825,13.267, +0,66.42523598622199,39.23326809504485,1747411089.834,13.275, +0,66.49258370038521,39.32524886571274,1747411089.842,13.283, +0,66.55939573799962,39.41761946941736,1747411089.85,13.292, +0,66.62567001395573,39.51037666411761,1747411089.859,13.3, +0,66.69140446327278,39.6035171978199,1747411089.867,13.308, +0,66.75659704113632,39.69703780870349,1747411089.875,13.317, +0,66.82124572293523,39.79093522524602,1747411089.884,13.325, +0,66.88534850429764,39.88520616634878,1747411089.892,13.333, +0,66.94890340112659,39.97984734146276,1747411089.9,13.342, +0,67.01190844963443,40.074855450713834,1747411089.909,13.35, +0,67.07436170637688,40.170227185028736,1747411089.917,13.358, +0,67.13626124828602,40.26595922626058,1747411089.925,13.367, +0,67.19760517270262,40.36204824731456,1747411089.934,13.375, +0,67.25839159740781,40.458490912273774,1747411089.942,13.383, +0,67.31861866065393,40.55528387652494,1747411089.95,13.392, +0,67.37828452119456,40.65242378688426,1747411089.959,13.4, +0,67.43738735831388,40.749907281722955,1747411089.967,13.408, +0,67.49592537185526,40.84773099109337,1747411089.975,13.417, +0,67.55389678224905,40.94589153685442,1747411089.984,13.425, +0,67.61129983053968,41.04438553279758,1747411089.992,13.433, +0,67.66813277841206,41.14320958477273,1747411090.0,13.442, +0,67.72439390821711,41.24236029081371,1747411090.009,13.45, +0,67.78008152299658,41.341834241264195,1747411090.017,13.458, +0,67.83519394650715,41.441628018903316,1747411090.025,13.467, +0,67.88972952324383,41.54173819907152,1747411090.034,13.475, +0,67.94368661846262,41.642161349796154,1747411090.042,13.483, +0,67.99706361820229,41.742894031917224,1747411090.05,13.492, +0,68.04985892930537,41.843932799212496,1747411090.059,13.5, +0,68.10207097943893,41.94527419852385,1747411090.067,13.508, +0,68.15369821711394,42.04691476988225,1747411090.075,13.517, +0,68.2047391117043,42.148851046633474,1747411090.084,13.525, +0,68.25519215346493,42.25107955556323,1747411090.092,13.533, +0,68.30505585354942,42.35359681702294,1747411090.1,13.542, +0,68.35432874402656,42.45639934505466,1747411090.109,13.55, +0,68.40300937789644,42.559483647516444,1747411090.117,13.558, +0,68.45109632910581,42.66284622620783,1747411090.125,13.567, +0,68.49858819256238,42.766483576994375,1747411090.134,13.575, +0,68.54548358414887,42.87039218993301,1747411090.142,13.583, +0,68.59178114073605,42.97456854939708,1747411090.15,13.592, +0,68.63747952019501,43.0790091342008,1747411090.159,13.6, +0,68.68257740140903,43.18371041772457,1747411090.167,13.608, +0,68.72707348428423,43.28866886803893,1747411090.175,13.617, +0,68.77096648976016,43.3938809480301,1747411090.184,13.625, +0,68.814255159819,43.499343115523565,1747411090.192,13.633, +0,68.85693825749439,43.605051823408765,1747411090.2,13.642, +0,68.8990145668798,43.71100351976372,1747411090.209,13.65, +0,68.94048289313551,43.817194647978596,1747411090.217,13.658, +0,68.98134206249554,43.923621646880044,1747411090.225,13.667, +0,69.02159092227363,44.0302809508555,1747411090.234,13.675, +0,69.06122834086821,44.13716898997596,1747411090.242,13.683, +0,69.10025320776737,44.244282190120884,1747411090.25,13.692, +0,69.13866443355232,44.35161697310085,1747411090.259,13.7, +0,69.17646094990083,44.459169756781336,1747411090.267,13.708, +0,69.21364170958954,44.566936955205946,1747411090.275,13.717, +0,69.25020568649582,44.67491497871968,1747411090.284,13.725, +0,69.28615187559872,44.783100234091535,1747411090.292,13.733, +0,69.32147929297943,44.891489124637815,1747411090.3,13.742, +0,69.35618697582102,45.00007805034454,1747411090.309,13.75, +0,69.39027398240725,45.10886340798995,1747411090.317,13.758, +0,69.42373939212113,45.21784159126714,1747411090.325,13.767, +0,69.4565823054424,45.32700899090607,1747411090.334,13.775, +0,69.48880184394446,45.43636199479564,1747411090.342,13.783, +0,69.52039715029076,45.54589698810569,1747411090.35,13.792, +0,69.5513673882303,45.65561035340852,1747411090.359,13.8, +0,69.58171174259257,45.76549847080055,1747411090.367,13.808, +0,69.61142941928185,45.87555771802379,1747411090.375,13.817, +0,69.64051964527059,45.9857844705866,1747411090.384,13.825, +0,69.6689816685926,46.09617510188515,1747411090.392,13.833, +0,69.69681475833504,46.20672598332398,1747411090.4,13.842, +0,69.72401820463011,46.317433484436485,1747411090.409,13.85, +0,69.75059131864593,46.42829397300559,1747411090.417,13.858, +0,69.77653343257676,46.53930381518375,1747411090.425,13.867, +0,69.80184389963262,46.650459375613096,1747411090.434,13.875, +0,69.82652209402818,46.76175701754512,1747411090.442,13.883, +0,69.85056741097105,46.87319310296014,1747411090.45,13.892, +0,69.87397926664946,46.984763992687,1747411090.459,13.9, +0,69.8967570982191,47.09646604652208,1747411090.467,13.908, +0,69.9189003637895,47.20829562334789,1747411090.475,13.917, +0,69.94040854240978,47.32024908125238,1747411090.484,13.925, +0,69.96128113405362,47.43232277764708,1747411090.492,13.933, +0,69.98151765960354,47.544513069385154,1747411090.5,13.942, +0,70.00111766083485,47.65681631287982,1747411090.509,13.95, +0,70.02008070039862,47.76922886422199,1747411090.517,13.958, +0,70.03840636180423,47.88174707929777,1747411090.525,13.967, +0,70.05609424940118,47.9943673139058,1747411090.534,13.975, +0,70.07314398836031,48.10708592387424,1747411090.542,13.983, +0,70.08955522465439,48.21989926517782,1747411090.55,13.992, +0,70.10532762503804,48.3328036940539,1747411090.559,14.0, +0,70.12046087702717,48.44579556711935,1747411090.567,14.008, +0,70.1349546888776,48.55887124148638,1747411090.575,14.017, +0,70.14880878956319,48.67202707487804,1747411090.584,14.025, +0,70.16202292875332,48.78525942574417,1747411090.592,14.033, +0,70.17459687678978,48.89856465337647,1747411090.6,14.042, +0,70.18653042466298,49.011939118023314,1747411090.609,14.05, +0,70.19782338398764,49.12537918100483,1747411090.617,14.058, +0,70.20847558697781,49.238881204827166,1747411090.625,14.067, +0,70.21848688642132,49.352441553296494,1747411090.634,14.075, +0,70.2278571556536,49.466056591633055,1747411090.642,14.083, +0,70.2365862885309,49.579722686584816,1747411090.65,14.092, +0,70.244674199403,49.69343620654067,1747411090.659,14.1, +0,70.25212082308514,49.80719352164329,1747411090.667,14.108, +0,70.25892611482959,49.92099100390229,1747411090.675,14.117, +0,70.26509005029644,50.03482502730631,1747411090.684,14.125, +0,70.27061262552391,50.14869196793516,1747411090.692,14.133, +0,70.27549385689801,50.262588204071896,1747411090.7,14.142, +0,70.27973378112168,50.376510116313966,1747411090.709,14.15, +0,70.28333245518331,50.490454087684974,1747411090.717,14.158, +0,70.28628995632471,50.60441650374502,1747411090.725,14.167, +0,70.28860638200844,50.71839375270159,1747411090.734,14.175, +0,70.29028184988469,50.83238222551978,1747411090.742,14.183, +0,70.29131649775746,50.94637831603258,1747411090.75,14.192, +0,70.2917104835503,51.06037842104991,1747411090.759,14.2, +0,70.2914639852713,51.174378940468436,1747411090.767,14.208, +0,70.29057720097782,51.28837627738026,1747411090.775,14.217, +0,70.28905034874029,51.402366838182076,1747411090.784,14.225, +0,70.28688366660575,51.51634703268283,1747411090.792,14.233, +0,70.28407741256075,51.630313274212355,1747411090.8,14.242, +0,70.28063186449359,51.744261979728684,1747411090.809,14.25, +0,70.2765473201562,51.858189569925656,1747411090.817,14.258, +0,70.27182409712529,51.97209246933939,1747411090.825,14.267, +0,70.26646253276313,52.08596710645575,1747411090.834,14.275, +0,70.26046298417761,52.19980991381602,1747411090.842,14.283, +0,70.25382582818195,52.313617328123115,1747411090.85,14.292, +0,70.24655146125369,52.427385790347245,1747411090.859,14.3, +0,70.23864029949334,52.54111174583092,1747411090.867,14.308, +0,70.23009277858233,52.654791644394166,1747411090.875,14.317, +0,70.22090935374051,52.768421940439055,1747411090.884,14.325, +0,70.21109049968314,52.8819990930536,1747411090.892,14.333, +0,70.20063671057736,52.995519566115924,1747411090.9,14.342, +0,70.18954849999807,53.10897982839773,1747411090.909,14.35, +0,70.17782640088336,53.22237635366701,1747411090.917,14.358, +0,70.1654709654895,53.335705620791025,1747411090.925,14.367, +0,70.15248276534518,53.44896411383912,1747411090.934,14.375, +0,70.13886239120554,53.562148322183845,1747411090.942,14.383, +0,70.12461045300542,53.67525474060323,1747411090.95,14.392, +0,70.10972757981236,53.788279869381874,1747411090.959,14.4, +0,70.09421441977892,53.901220214411616,1747411090.967,14.408, +0,70.0780716400946,54.01407228729216,1747411090.975,14.417, +0,70.06129992693711,54.12683260543155,1747411090.984,14.425, +0,70.04389998542352,54.23949769214476,1747411090.992,14.433, +0,70.0258725395604,54.35206407675445,1747411091.0,14.442, +0,70.0072183321939,54.46452829468897,1747411091.009,14.45, +0,69.98793812495923,54.57688688758101,1747411091.017,14.458, +0,69.96803269822948,54.689136403366135,1747411091.025,14.467, +0,69.94750285106424,54.801273396380196,1747411091.034,14.475, +0,69.92634940115761,54.913294427456734,1747411091.042,14.483, +0,69.90457318478562,55.025196064024136,1747411091.05,14.492, +0,69.88217505675347,55.1369748802019,1747411091.059,14.5, +0,69.85915589034212,55.24862745689686,1747411091.067,14.508, +0,69.83551657725425,55.3601503818994,1747411091.075,14.517, +0,69.8112580275603,55.47154024997796,1747411091.084,14.525, +0,69.78638116964336,55.58279366297455,1747411091.092,14.533, +0,69.76088695014415,55.693907229899295,1747411091.1,14.542, +0,69.73477633390534,55.80487756702409,1747411091.109,14.55, +0,69.70805030391534,55.915701297976895,1747411091.117,14.558, +0,69.68070986125186,56.02637505383439,1747411091.125,14.567, +0,69.65275602502481,56.13689547321535,1747411091.134,14.575, +0,69.62418983231896,56.24725920237265,1747411091.142,14.583, +0,69.59501233813596,56.357462895285714,1747411091.15,14.592, +0,69.56522461533609,56.467503213751684,1747411091.159,14.6, +0,69.5348277545795,56.577376827476975,1747411091.167,14.608, +0,69.50382286426701,56.68708041416784,1747411091.175,14.617, +0,69.47221107048071,56.79661065962023,1747411091.184,14.625, +0,69.43999351692362,56.905964257810744,1747411091.192,14.633, +0,69.40717136485958,57.01513791098495,1747411091.2,14.642, +0,69.37374579305211,57.124128329747265,1747411091.209,14.65, +0,69.33971799770342,57.23293223314888,1747411091.217,14.658, +0,69.30508919239263,57.341546348776205,1747411091.225,14.667, +0,69.26986060801357,57.4499674128388,1747411091.234,14.675, +0,69.2340334927126,57.55819217025599,1747411091.242,14.683, +0,69.19760911182534,57.66621737474454,1747411091.25,14.692, +0,69.16058874781379,57.77403978890415,1747411091.259,14.7, +0,69.12297370020227,57.881656184304276,1747411091.267,14.708, +0,69.08476528551375,57.98906334156866,1747411091.275,14.717, +0,69.04596483720506,58.0962580504614,1747411091.284,14.725, +0,69.00657370560222,58.2032371099707,1747411091.292,14.733, +0,68.96659325783529,58.30999732839322,1747411091.3,14.742, +0,68.92602487777246,58.41653552341831,1747411091.309,14.75, +0,68.88486996595441,58.52284852221058,1747411091.317,14.758, +0,68.84312993952781,58.62893316149286,1747411091.325,14.767, +0,68.80080623217859,58.73478628762867,1747411091.334,14.775, +0,68.75790029406483,58.84040475670403,1747411091.342,14.783, +0,68.71441359174929,58.94578543460908,1747411091.35,14.792, +0,68.67034760813172,59.05092519711843,1747411091.359,14.8, +0,68.62570384238055,59.15582092997231,1747411091.367,14.808, +0,68.58048380986435,59.26046952895625,1747411091.375,14.817, +0,68.53468904208302,59.364867899980766,1747411091.384,14.825, +0,68.48832108659853,59.46901295916033,1747411091.392,14.833, +0,68.44138150696529,59.57290163289224,1747411091.4,14.842, +0,68.39387188266011,59.676530857934765,1747411091.409,14.85, +0,68.34579380901229,59.77989758148444,1747411091.417,14.858, +0,68.29714889713262,59.882998761253795,1747411091.425,14.867, +0,68.24793877384258,59.985831365547966,1747411091.434,14.875, +0,68.19816508160315,60.08839237334084,1747411091.442,14.883, +0,68.14782947844306,60.19067877435104,1747411091.45,14.892, +0,68.09693363788688,60.292687569117305,1747411091.459,14.9, +0,68.04547924888288,60.394415769073035,1747411091.467,14.908, +0,67.99346801573034,60.49586039662109,1747411091.475,14.917, +0,67.9409016580066,60.59701848520764,1747411091.484,14.925, +0,67.88778191049401,60.69788707939528,1747411091.492,14.933, +0,67.8341105231063,60.798463234936364,1747411091.5,14.942, +0,67.77988926081481,60.898744018845264,1747411091.509,14.95, +0,67.7251199035742,60.99872650947059,1747411091.517,14.958, +0,67.66980424624828,61.09840779656636,1747411091.525,14.967, +0,67.61394409853501,61.197784981363455,1747411091.534,14.975, +0,67.55754128489164,61.29685517663988,1747411091.542,14.983, +0,67.5005976444593,61.395615506790875,1747411091.55,14.992, +0,67.44311503098737,61.49406310789866,1747411091.559,15.0, +0,67.38509531275771,61.59219512780124,1747411091.567,15.008, +0,67.32654037250822,61.690008726161416,1747411091.575,15.017, +0,67.26745210735663,61.78750107453456,1747411091.584,15.025, +0,67.20783242872356,61.88466935643639,1747411091.592,15.033, +0,67.14768326225567,61.98151076741008,1747411091.6,15.042, +0,67.08700654774812,62.07802251509305,1747411091.609,15.05, +0,67.02580423906726,62.174201819282956,1747411091.617,15.058, +0,66.96407830407264,62.27004591200337,1747411091.625,15.067, +0,66.90183072453894,62.36555203756915,1747411091.634,15.075, +0,66.83906349607766,62.46071745265094,1747411091.642,15.083, +0,66.77577862805845,62.55553942633938,1747411091.65,15.092, +0,66.71197814353029,62.650015240208866,1747411091.659,15.1, +0,66.64766407914223,62.74414218838092,1747411091.667,15.108, +0,66.58283848506431,62.83791757758645,1747411091.675,15.117, +0,66.51750342490756,62.93133872722852,1747411091.684,15.125, +0,66.45166097564454,63.0244029694435,1747411091.692,15.133, +0,66.38531322752894,63.11710764916279,1747411091.7,15.142, +0,66.31846228401531,63.20945012417325,1747411091.709,15.15, +0,66.25111026167868,63.301427765177465,1747411091.717,15.158, +0,66.18325929013346,63.39303795585357,1747411091.725,15.167, +0,66.11491151195264,63.48427809291442,1747411091.734,15.175, +0,66.04606908258651,63.575145586166165,1747411091.742,15.183, +0,65.97673417028099,63.66563785856686,1747411091.75,15.192, +0,65.90690895599633,63.755752346283614,1747411091.759,15.2, +0,65.83659563332465,63.845486498750546,1747411091.767,15.208, +0,65.76579640840842,63.93483777872472,1747411091.775,15.217, +0,65.69451349985769,64.02380366234296,1747411091.784,15.225, +0,65.62274913866767,64.11238163917734,1747411091.792,15.233, +0,65.55050556813609,64.20056921229033,1747411091.8,15.242, +0,65.47778504378019,64.28836389828962,1747411091.809,15.25, +0,65.4045898332535,64.3757632273823,1747411091.817,15.258, +0,65.33092221626252,64.46276474342862,1747411091.825,15.267, +0,65.25678448448346,64.54936600399489,1747411091.834,15.275, +0,65.18217894147801,64.63556458040672,1747411091.842,15.283, +0,65.10710790260995,64.72135805780064,1747411091.85,15.292, +0,65.03157369496073,64.8067440351761,1747411091.859,15.3, +0,64.95557865724524,64.89172012544667,1747411091.867,15.308, +0,64.87912513972762,64.97628395549037,1747411091.875,15.317, +0,64.80221550413619,65.06043316620045,1747411091.884,15.325, +0,64.7248521235791,65.14416541253435,1747411091.892,15.333, +0,64.6470373824591,65.22747836356328,1747411091.9,15.342, +0,64.56877367638836,65.31036970252093,1747411091.909,15.35, +0,64.49006341210342,65.39283712685126,1747411091.917,15.358, +0,64.41090900737962,65.47487834825638,1747411091.925,15.367, +0,64.33131289094543,65.55649109274351,1747411091.934,15.375, +0,64.25127750239673,65.63767310067186,1747411091.942,15.383, +0,64.1708052921108,65.71842212679857,1747411091.95,15.392, +0,64.0898987211604,65.79873594032429,1747411091.959,15.4, +0,64.0085602612276,65.87861232493819,1747411091.967,15.408, +0,63.92679239451714,65.95804907886286,1747411091.975,15.417, +0,63.84459761367033,66.03704401489796,1747411091.984,15.425, +0,63.76197842167791,66.11559496046432,1747411091.992,15.433, +0,63.67893733179375,66.19369975764651,1747411092.0,15.442, +0,63.59547686744776,66.27135626323566,1747411092.009,15.45, +0,63.51159956215879,66.34856234877147,1747411092.017,15.458, +0,63.42730795944764,66.42531590058367,1747411092.025,15.467, +0,63.34260461274948,66.50161481983328,1747411092.034,15.475, +0,63.257492085326966,66.57745702255274,1747411092.042,15.483, +0,63.17197295018225,66.65284043968626,1747411092.05,15.492, +0,63.08604978996941,66.72776301712939,1747411092.059,15.5, +0,62.999725196906965,66.80222271576767,1747411092.067,15.508, +0,62.913001772689775,66.87621751151548,1747411092.075,15.517, +0,62.8258821284013,66.94974539535369,1747411092.084,15.525, +0,62.738368884425206,67.02280437336756,1747411092.092,15.533, +0,62.65046467035748,67.09539246678344,1747411092.1,15.542, +0,62.56217212491825,67.16750771200509,1747411092.109,15.55, +0,62.473493895862994,67.23914816065017,1747411092.117,15.558, +0,62.384432639894634,67.3103118795851,1747411092.125,15.567, +0,62.29499102257434,67.3809969509606,1747411092.134,15.575, +0,62.20517171823381,67.45120147224543,1747411092.142,15.583, +0,62.11497740988561,67.52092355626108,1747411092.15,15.592, +0,62.024410789135025,67.59016133121469,1747411092.159,15.6, +0,61.933474556090836,67.65891294073225,1747411092.167,15.608, +0,61.842171419276674,67.72717654389078,1747411092.175,15.617, +0,61.7505040955417,67.79495031525055,1747411092.184,15.625, +0,61.65847530997167,67.86223244488629,1747411092.192,15.633, +0,61.5660877957999,67.92902113841811,1747411092.2,15.642, +0,61.473344294317734,67.99531461704206,1747411092.209,15.65, +0,61.380247554785385,68.06111111755997,1747411092.217,15.658, +0,61.28680033434297,68.12640889240862,1747411092.225,15.667, +0,61.19300539792038,68.1912062096891,1747411092.234,15.675, +0,61.0988655181484,68.25550135319486,1747411092.242,15.683, +0,61.00438347526901,68.31929262243975,1747411092.25,15.692, +0,60.909562057045946,68.38257833268523,1747411092.259,15.7, +0,60.814404058674604,68.4453568149678,1747411092.267,15.708, +0,60.71891228269333,68.50762641612454,1747411092.275,15.717, +0,60.62308953889279,68.56938549881984,1747411092.284,15.725, +0,60.526938644226824,68.63063244157033,1747411092.292,15.733, +0,60.4304624227223,68.69136563876997,1747411092.3,15.742, +0,60.33366370538977,68.75158350071429,1747411092.309,15.75, +0,60.236545330133225,68.8112844536245,1747411092.317,15.758, +0,60.1391101416605,68.87046693967068,1747411092.325,15.767, +0,60.04136099139342,68.9291294169948,1747411092.334,15.775, +0,59.94330073737753,68.98727035973329,1747411092.342,15.783, +0,59.84493224419261,69.04488825803867,1747411092.35,15.792, +0,59.746258382862706,69.10198161810106,1747411092.359,15.8, +0,59.64728203076574,69.15854896216936,1747411092.367,15.808, +0,59.54800607154418,69.21458882857124,1747411092.375,15.817, +0,59.44843339501453,69.27009977173347,1747411092.384,15.825, +0,59.348566897077625,69.32508036220125,1747411092.392,15.833, +0,59.24840947962858,69.37952918665707,1747411092.4,15.842, +0,59.14796405046704,69.43344484793919,1747411092.409,15.85, +0,59.04723352320643,69.48682596505991,1747411092.417,15.858, +0,58.94622081718528,69.53967117322247,1747411092.425,15.867, +0,58.8449288573758,69.59197912383874,1747411092.434,15.875, +0,58.74336057429505,69.64374848454516,1747411092.442,15.883, +0,58.64151890391431,69.69497793921907,1747411092.45,15.892, +0,58.53940678756943,69.74566618799419,1747411092.459,15.9, +0,58.4370271718709,69.79581194727552,1747411092.467,15.908, +0,58.33438300861381,69.84541394975415,1747411092.475,15.917, +0,58.23147725468819,69.89447094442102,1747411092.484,15.925, +0,58.128312871988726,69.94298169658086,1747411092.492,15.933, +0,58.02489282732542,69.99094498786506,1747411092.5,15.942, +0,57.9212200923335,70.03835961624434,1747411092.509,15.95, +0,57.81729764338373,70.08522439604089,1747411092.517,15.958, +0,57.71312846149245,70.13153815794013,1747411092.525,15.967, +0,57.60871553223216,70.17729974900182,1747411092.534,15.975, +0,57.50406184564199,70.22250803267056,1747411092.542,15.983, +0,57.39917039613736,70.26716188878648,1747411092.55,15.992, +0,57.294044182421196,70.3112602135945,1747411092.559,16.0, +0,57.188686207393815,70.35480191975395,1747411092.567,16.008, +0,57.08309947806385,70.39778593634713,1747411092.575,16.017, +0,56.97728700545847,70.44021120888777,1747411092.584,16.025, +0,56.87125180453414,70.48207669932881,1747411092.592,16.033, +0,56.76499689408738,70.52338138606973,1747411092.6,16.042, +0,56.65852529666522,70.56412426396358,1747411092.609,16.05, +0,56.551840038476264,70.60430434432327,1747411092.617,16.058, +0,56.44494414930134,70.64392065492757,1747411092.625,16.067, +0,56.33784066240437,70.68297224002666,1747411092.634,16.075, +0,56.23053261444367,70.72145816034698,1747411092.642,16.083, +0,56.12302304538255,70.759377493096,1747411092.65,16.092, +0,56.015314998400704,70.79672933196612,1747411092.659,16.1, +0,55.90741151980542,70.83351278713833,1747411092.667,16.108, +0,55.79931565894248,70.86972698528548,1747411092.675,16.117, +0,55.69103046810806,70.90537106957476,1747411092.684,16.125, +0,55.58255900245989,70.94044419967003,1747411092.692,16.133, +0,55.47390431992824,70.97494555173373,1747411092.7,16.142, +0,55.3650694811285,71.00887431842787,1747411092.709,16.15, +0,55.25605754927221,71.0422297089151,1747411092.717,16.158, +0,55.14687159007881,71.07501094885909,1747411092.725,16.167, +0,55.03751467168766,71.10721728042432,1747411092.734,16.175, +0,54.9279898645702,71.13884796227566,1747411092.742,16.183, +0,54.8183002414415,71.16990226957735,1747411092.75,16.192, +0,54.70844887717276,71.20037949399156,1747411092.759,16.2, +0,54.59843884870362,71.23027894367648,1747411092.767,16.208, +0,54.48827323495409,71.259599943284,1747411092.775,16.217, +0,54.377955116737375,71.28834183395696,1747411092.784,16.225, +0,54.26748757667238,71.31650397332575,1747411092.792,16.233, +0,54.156873699096074,71.34408573550482,1747411092.8,16.242, +0,54.04611656997694,71.37108651108834,1747411092.809,16.25, +0,53.935219276826956,71.39750570714577,1747411092.817,16.258, +0,53.82418490861547,71.4233427472167,1747411092.825,16.267, +0,53.713016555681605,71.4485970713055,1747411092.834,16.275, +0,53.60171730964821,71.47326813587524,1747411092.842,16.283, +0,53.49029026333447,71.49735541384155,1747411092.85,16.292, +0,53.37873851067006,71.52085839456552,1747411092.859,16.3, +0,53.2670651466084,71.54377658384675,1747411092.867,16.308, +0,53.15527326704035,71.5661095039155,1747411092.875,16.317, +0,53.04336596870847,71.58785669342458,1747411092.884,16.325, +0,52.93134634912059,71.6090177074409,1747411092.892,16.333, +0,52.81921750646418,71.62959211743635,1747411092.9,16.342, +0,52.706982539520716,71.64957951127846,1747411092.909,16.35, +0,52.59464454757963,71.66897949322058,1747411092.917,16.358, +0,52.482206630353616,71.68779168389149,1747411092.925,16.367, +0,52.36967188789271,71.70601572028477,1747411092.934,16.375, +0,52.25704342049939,71.72365125574765,1747411092.942,16.383, +0,52.144324328643485,71.74069795996942,1747411092.95,16.392, +0,52.03151771287727,71.75715551896947,1747411092.959,16.4, +0,51.91862667375111,71.77302363508483,1747411092.967,16.408, +0,51.80565431172833,71.78830202695737,1747411092.975,16.417, +0,51.69260372710134,71.80299042952055,1747411092.984,16.425, +0,51.57947801990705,71.81708859398566,1747411092.992,16.433, +0,51.46628028984279,71.83059628782786,1747411093.0,16.442, +0,51.35301363618275,71.8435132947715,1747411093.009,16.45, +0,51.23968115769372,71.85583941477535,1747411093.017,16.458, +0,51.126285952551775,71.86757446401711,1747411093.025,16.467, +0,51.01283111825865,71.87871827487778,1747411093.034,16.475, +0,50.89931975155899,71.88927069592538,1747411093.042,16.483, +0,50.78575494835629,71.89923159189841,1747411093.05,16.492, +0,50.672139803631175,71.90860084368889,1747411093.059,16.5, +0,50.5584774113573,71.9173783483249,1747411093.067,16.508, +0,50.44477086442,71.92556401895285,1747411093.075,16.517, +0,50.331023254533214,71.9331577848192,1747411093.084,16.525, +0,50.21723767215724,71.94015959125187,1747411093.092,16.533, +0,50.103417206417056,71.94656939964125,1747411093.1,16.542, +0,49.989564945020284,71.9523871874207,1747411093.109,16.55, +0,49.87568397417523,71.9576129480469,1747411093.117,16.558, +0,49.76177737850993,71.96224669097944,1747411093.125,16.567, +0,49.64784824099056,71.96628844166034,1747411093.134,16.575, +0,49.53389964284002,71.96973824149305,1747411093.142,16.583, +0,49.41993466345763,71.97259614782092,1747411093.15,16.592, +0,49.30595638033796,71.97486223390558,1747411093.159,16.6, +0,49.1919678689907,71.97653658890466,1747411093.167,16.608, +0,49.07797220285952,71.97761931784925,1747411093.175,16.617, +0,48.963972453242924,71.97811054162092,1747411093.184,16.625, +0,48.849971689213646,71.97801039692843,1747411093.192,16.633, +0,48.7359729775392,71.97731903628393,1747411093.2,16.642, +0,48.621979382602305,71.97603662797893,1747411093.209,16.65, +0,48.50799396632123,71.97416335605976,1747411093.217,16.658, +0,48.39401978807142,71.9716994203027,1747411093.225,16.667, +0,48.280059904605594,71.96864503618875,1747411093.234,16.675, +0,48.166117369975964,71.96500043487802,1747411093.242,16.683, +0,48.05219523545517,71.96076586318368,1747411093.25,16.692, +0,47.93829654945827,71.95594158354562,1747411093.259,16.7, +0,47.8244243574644,71.95052787400373,1747411093.267,16.708, +0,47.71058170193925,71.94452502817069,1747411093.275,16.717, +0,47.59677162225718,71.9379333552046,1747411093.284,16.725, +0,47.482997154624,71.93075317978106,1747411093.292,16.733, +0,47.369261331999716,71.92298484206496,1747411093.3,16.742, +0,47.25556718402144,71.91462869768192,1747411093.309,16.75, +0,47.14191773692672,71.90568511768927,1747411093.317,16.758, +0,47.02831601347716,71.89615448854687,1747411093.325,16.767, +0,46.91476503288212,71.88603721208734,1747411093.334,16.775, +0,46.80126781072215,71.87533370548607,1747411093.342,16.783, +0,46.68782735887401,71.86404440123084,1747411093.35,16.792, +0,46.5744466854345,71.85216974709112,1747411093.359,16.8, +0,46.461128794645035,71.83971020608689,1747411093.367,16.808, +0,46.34787668681687,71.82666625645729,1747411093.375,16.817, +0,46.23469335825608,71.81303839162881,1747411093.384,16.825, +0,46.121581801188704,71.79882712018312,1747411093.392,16.833, +0,46.00854500368659,71.78403296582461,1747411093.4,16.842, +0,45.895585949593055,71.76865646734757,1747411093.409,16.85, +0,45.78270761844927,71.75269817860304,1747411093.417,16.858, +0,45.66991298541973,71.7361586684652,1747411093.425,16.867, +0,45.55720502122006,71.71903852079762,1747411093.434,16.875, +0,45.444586692042776,71.70133833441908,1747411093.442,16.883, +0,45.33206095948473,71.68305872306891,1747411093.45,16.892, +0,45.21963078047439,71.66420031537226,1747411093.459,16.9, +0,45.107299107199395,71.64476375480483,1747411093.467,16.908, +0,44.995068887034485,71.62474969965743,1747411093.475,16.917, +0,44.882943062469096,71.60415882299998,1747411093.484,16.925, +0,44.77092457103636,71.58299181264547,1747411093.492,16.933, +0,44.65901634524093,71.56124937111336,1747411093.5,16.942, +0,44.54722131248831,71.53893221559277,1747411093.509,16.95, +0,44.4355423950139,71.51604107790533,1747411093.517,16.958, +0,44.32398250981206,71.4925767044677,1747411093.525,16.967, +0,44.21254456856586,71.4685398562537,1747411093.534,16.975, +0,44.101231477577024,71.44393130875633,1747411093.542,16.983, +0,43.99004613769596,71.4187518519492,1747411093.55,16.992, +0,43.878991444252215,71.39300229024785,1747411093.559,17.0, +0,43.76807028698498,71.3666834424707,1747411093.567,17.008, +0,43.657285549974176,71.3397961417996,1747411093.575,17.017, +0,43.54664011157165,71.31234123574025,1747411093.584,17.025, +0,43.436136844332395,71.2843195860821,1747411093.592,17.033, +0,43.325778614946714,71.2557320688582,1747411093.6,17.042, +0,43.21556828417194,71.22657957430445,1747411093.609,17.05, +0,43.105508706764304,71.19686300681869,1747411093.617,17.058, +0,42.995602731412625,71.16658328491975,1747411093.625,17.067, +0,42.88585320067007,71.13574134120563,1747411093.634,17.075, +0,42.77626295088754,71.10433812231184,1747411093.642,17.083, +0,42.666834812147364,71.07237458886937,1747411093.65,17.092, +0,42.55757160819671,71.03985171546215,1747411093.659,17.1, +0,42.448476156381474,71.00677049058451,1747411093.667,17.108, +0,42.3395512675805,70.97313191659812,1747411093.675,17.117, +0,42.23079974614037,70.93893700968876,1747411093.684,17.125, +0,42.12222438981018,70.90418679982288,1747411093.692,17.133, +0,42.01382798967586,70.8688823307035,1747411093.7,17.142, +0,41.90561333009666,70.83302465972639,1747411093.709,17.15, +0,41.797583188639834,70.7966148579355,1747411093.717,17.158, +0,41.68974033601724,70.75965400997832,1747411093.725,17.167, +0,41.58208753602119,70.72214321406102,1747411093.734,17.175, +0,41.4746275454612,70.68408358190308,1747411093.742,17.183, +0,41.36736311410034,70.64547623869186,1747411093.75,17.192, +0,41.26029698459307,70.60632232303686,1747411093.759,17.2, +0,41.15343189242188,70.56662298692359,1747411093.767,17.208, +0,41.046770565835516,70.52637939566739,1747411093.775,17.217, +0,40.94031572578672,70.48559272786669,1747411093.784,17.225, +0,40.83407008587019,70.44426417535618,1747411093.792,17.233, +0,40.728036352261924,70.40239494315992,1747411093.8,17.242, +0,40.62221722365732,70.35998624944366,1747411093.809,17.25, +0,40.516615391211104,70.31703932546756,1747411093.817,17.258, +0,40.41123353847556,70.27355541553779,1747411093.825,17.267, +0,40.30607434134183,70.22953577695901,1747411093.834,17.275, +0,40.20114046797879,70.18498167998543,1747411093.842,17.283, +0,40.09643457877406,70.13989440777254,1747411093.85,17.292, +0,39.99195932627436,70.09427525632799,1747411093.859,17.3, +0,39.887717355126554,70.04812553446247,1747411093.867,17.308, +0,39.78371130201916,70.00144656374046,1747411093.875,17.317, +0,39.679943795623565,69.9542396784304,1747411093.884,17.325, +0,39.57641745653598,69.90650622545482,1747411093.892,17.333, +0,39.47313489722008,69.85824756434042,1747411093.9,17.342, +0,39.370098721948665,69.80946506716732,1747411093.909,17.35, +0,39.26731152674758,69.76016011851901,1747411093.917,17.358, +0,39.16477589933762,69.71033411543084,1747411093.925,17.367, +0,39.062494419079144,69.65998846733956,1747411093.934,17.375, +0,38.96046965691492,69.60912459603162,1747411093.942,17.383, +0,38.85870417531456,69.55774393559174,1747411093.95,17.392, +0,38.75720052821868,69.50584793235107,1747411093.959,17.4, +0,38.655961260984206,69.4534380448355,1747411093.967,17.408, +0,38.55498891032856,69.40051574371302,1747411093.975,17.417, +0,38.45428600427531,69.3470825117415,1747411093.984,17.425, +0,38.35385506210014,69.29313984371613,1747411093.992,17.433, +0,38.25369859427602,69.23868924641619,1747411094.0,17.442, +0,38.153819102420144,69.18373223855224,1747411094.009,17.45, +0,38.05421907924045,69.12827035071282,1747411094.017,17.458, +0,37.95490100848195,69.07230512531062,1747411094.025,17.467, +0,37.855867364874534,69.01583811652901,1747411094.034,17.475, +0,37.75712061408052,68.95887089026807,1747411094.042,17.483, +0,37.65866321264204,68.9014050240903,1747411094.05,17.492, +0,37.56049760792952,68.84344210716621,1747411094.059,17.5, +0,37.46262623809028,68.78498374022,1747411094.067,17.508, +0,37.365051531997025,68.72603153547446,1747411094.075,17.517, +0,37.267775909197425,68.6665871165963,1747411094.084,17.525, +0,37.17080177986307,68.60665211864061,1747411094.092,17.533, +0,37.07413154473965,68.5462281879958,1747411094.1,17.542, +0,36.97776759509712,68.48531698232797,1747411094.109,17.55, +0,36.88171231267962,68.4239201705249,1747411094.117,17.558, +0,36.78596806965707,68.3620394326405,1747411094.125,17.567, +0,36.690537228575344,68.29967645983817,1747411094.134,17.575, +0,36.59542214230831,68.23683295433486,1747411094.142,17.583, +0,36.50062515400955,68.17351062934442,1747411094.15,17.592, +0,36.40614859706423,68.10971120902087,1747411094.159,17.6, +0,36.311994795041365,68.04543642840136,1747411094.167,17.608, +0,36.21816606164687,67.98068803334931,1747411094.175,17.617, +0,36.12466470067686,67.91546778049731,1747411094.184,17.625, +0,36.03149300597012,67.84977743718906,1747411094.192,17.633, +0,35.938653261362894,67.78361878142253,1747411094.2,17.642, +0,35.846147740641996,67.7169936017915,1747411094.209,17.65, +0,35.7539787075002,67.64990369742826,1747411094.217,17.658, +0,35.662148415489916,67.58235087794482,1747411094.225,17.667, +0,35.57065910797897,67.51433696337513,1747411094.234,17.675, +0,35.47951301810571,67.44586378411641,1747411094.242,17.683, +0,35.38871236873485,67.37693318087061,1747411094.25,17.692, +0,35.29825937241323,67.30754700458539,1747411094.259,17.7, +0,35.20815623132657,67.23770711639554,1747411094.267,17.708, +0,35.118405137255934,67.16741538756358,1747411094.275,17.717, +0,35.029008271534906,67.09667369942063,1747411094.284,17.725, +0,34.93996780500693,67.02548394330702,1747411094.292,17.733, +0,34.85128589798309,66.95384802051268,1747411094.3,17.742, +0,34.76296470019993,66.8817678422172,1747411094.309,17.75, +0,34.67500635077826,66.80924532943041,1747411094.317,17.758, +0,34.58741297818155,66.73628241293201,1747411094.325,17.767, +0,34.5001867001751,66.66288103321146,1747411094.334,17.775, +0,34.41332962378548,66.58904314040777,1747411094.342,17.783, +0,34.3268438452602,66.51477069424891,1747411094.35,17.792, +0,34.240731450027994,66.44006566399145,1747411094.359,17.8, +0,34.154994512658725,66.36493002835938,1747411094.367,17.808, +0,34.06963509682491,66.28936577548386,1747411094.375,17.817, +0,33.98465525526204,66.21337490284158,1747411094.384,17.825, +0,33.90005702973057,66.13695941719408,1747411094.392,17.833, +0,33.815842450977385,66.06012133452623,1747411094.4,17.842, +0,33.73201353869815,65.98286267998508,1747411094.409,17.85, +0,33.64857230149938,65.90518548781787,1747411094.417,17.858, +0,33.565520736861686,65.82709180131091,1747411094.425,17.867, +0,33.48286083110253,65.74858367272742,1747411094.434,17.875, +0,33.40059455933995,65.66966316324583,1747411094.442,17.883, +0,33.318723885456194,65.5903323428976,1747411094.45,17.892, +0,33.237250762062004,65.51059329050524,1747411094.459,17.9, +0,33.15617713046103,65.43044809361997,1747411094.467,17.908, +0,33.07550492061456,65.34989884845922,1747411094.475,17.917, +0,32.99523605110702,65.26894765984444,1747411094.484,17.925, +0,32.91537242911109,65.1875966411382,1747411094.492,17.933, +0,32.835915950353765,65.10584791418158,1747411094.5,17.942, +0,32.756868499082636,65.0237036092315,1747411094.509,17.95, +0,32.67823194803216,64.94116586489753,1747411094.517,17.958, +0,32.60000815839085,64.85823682807907,1747411094.525,17.967, +0,32.522198979768184,64.77491865390208,1747411094.534,17.975, +0,32.44480625016245,64.69121350565598,1747411094.542,17.983, +0,32.367831795928424,64.60712355473014,1747411094.55,17.992, +0,32.291277431745726,64.52265098055061,1747411094.559,18.0, +0,32.21514496058745,64.43779797051653,1747411094.567,18.008, +0,32.13943617368895,64.35256671993645,1747411094.575,18.017, +0,32.064152850517274,64.26695943196478,1747411094.584,18.025, +0,31.989296758740675,64.1809783175378,1747411094.592,18.033, +0,31.914869654198487,64.09462559530978,1747411094.6,18.042, +0,31.840873280871666,64.0079034915892,1747411094.609,18.05, +0,31.76730937085324,63.92081424027455,1747411094.617,18.058, +0,31.6941796443193,63.83336008279005,1747411094.625,18.067, +0,31.62148580950042,63.74554326802169,1747411094.634,18.075, +0,31.549229562653256,63.65736605225277,1747411094.642,18.083, +0,31.477412588032426,63.568830699099315,1747411094.65,18.092, +0,31.406036557863292,63.47993947944622,1747411094.659,18.1, +0,31.335103132314043,63.39069467138192,1747411094.667,18.108, +0,31.26461395946929,63.30109856013446,1747411094.675,18.117, +0,31.19457067530308,63.2111534380064,1747411094.684,18.125, +0,31.124974903652806,63.120861604310264,1747411094.692,18.133, +0,31.055828256193035,63.03022536530344,1747411094.7,18.142, +0,30.987132332410276,62.93924703412377,1747411094.709,18.15, +0,30.9188887195774,62.84792893072418,1747411094.717,18.158, +0,30.851098992728897,62.7562733818079,1747411094.725,18.167, +0,30.783764714636273,62.664282720763325,1747411094.734,18.175, +0,30.71688743578369,62.57195928759872,1747411094.742,18.183, +0,30.650468694344294,62.47930542887736,1747411094.75,18.192, +0,30.584510016156546,62.38632349765207,1747411094.759,18.2, +0,30.51901291470097,62.29301585339991,1747411094.767,18.208, +0,30.453978891077423,62.19938486195698,1747411094.775,18.217, +0,30.389409433982436,62.105432895452864,1747411094.784,18.225, +0,30.32530601968704,62.0111623322452,1747411094.792,18.233, +0,30.261670112015064,61.91657555685431,1747411094.8,18.242, +0,30.198503162321597,61.82167495989776,1747411094.809,18.25, +0,30.135806609471484,61.72646293802414,1747411094.817,18.258, +0,30.073581879819,61.630941893848224,1747411094.825,18.267, +0,30.011830387187135,61.535114235885004,1747411094.834,18.275, +0,29.950553532847373,61.43898237848379,1747411094.842,18.283, +0,29.889752705499973,61.342548741762656,1747411094.85,18.292, +0,29.829429281254605,61.24581575154282,1747411094.859,18.3, +0,29.769584623611024,61.148785839282496,1747411094.867,18.308, +0,29.710220083440387,61.051461442011274,1747411094.875,18.317, +0,29.651336998966784,60.95384500226413,1747411094.884,18.325, +0,29.59293669574917,60.8559389680157,1747411094.892,18.333, +0,29.535020486663505,60.757745792614124,1747411094.9,18.342, +0,29.4775896718855,60.6592679347155,1747411094.909,18.35, +0,29.420645538873085,60.560507858217065,1747411094.917,18.358, +0,29.36418936235029,60.46146803219239,1747411094.925,18.367, +0,29.308222404290156,60.362150930824164,1747411094.934,18.375, +0,29.252745913899304,60.262559033339336,1747411094.942,18.383, +0,29.197761127601506,60.16269482394187,1747411094.95,18.392, +0,29.14326926902278,60.06256079174757,1747411094.959,18.4, +0,29.089271548976164,59.962159430717755,1747411094.967,18.408, +0,29.03576916544688,59.86149323959303,1747411094.975,18.417, +0,28.982763303577894,59.760564721827066,1747411094.984,18.425, +0,28.930255135656033,59.659376385520915,1747411094.992,18.433, +0,28.878245821098137,59.55793074335665,1747411095.0,18.442, +0,28.826736506437598,59.456230312531176,1747411095.009,18.45, +0,28.775728325311334,59.354277614690176,1747411095.017,18.458, +0,28.72522239844713,59.252075175862146,1747411095.025,18.467, +0,28.675219833651035,59.149625526391894,1747411095.034,18.475, +0,28.625721725795504,59.046931200874845,1747411095.042,18.483, +0,28.576729156807417,58.94399473809044,1747411095.05,18.492, +0,28.52824319565694,58.84081868093655,1747411095.059,18.5, +0,28.4802648983461,58.73740557636269,1747411095.067,18.508, +0,28.43279530789845,58.63375797530477,1747411095.075,18.517, +0,28.3858354543483,58.529878432618226,1747411095.084,18.525, +0,28.339386354730802,58.425769507012376,1747411095.092,18.533, +0,28.29344901307213,58.321433760984156,1747411095.1,18.542, +0,28.248024420379977,58.21687376075191,1747411095.109,18.55, +0,28.203113554634704,58.11209207618994,1747411095.117,18.558, +0,28.158717380780267,58.00709128076177,1747411095.125,18.567, +0,28.114836850715932,57.90187395145454,1747411095.134,18.575, +0,28.07147290328808,57.79644266871281,1747411095.142,18.583, +0,28.028626464282542,57.690800016372904,1747411095.15,18.592, +0,27.98629844641691,57.58494858159642,1747411095.159,18.6, +0,27.944489749333634,57.47889095480491,1747411095.167,18.608, +0,27.9032012595931,57.37262972961372,1747411095.175,18.617, +0,27.862433850667003,57.266167502765775,1747411095.184,18.625, +0,27.822188382932467,57.15950687406644,1747411095.192,18.633, +0,27.782465703665984,57.05265044631721,1747411095.2,18.642, +0,27.743266647037952,56.94560082525005,1747411095.209,18.65, +0,27.704592034107453,56.838360619461575,1747411095.217,18.658, +0,27.666442672817507,56.730932440347694,1747411095.225,18.667, +0,27.628819357990267,56.62331890203728,1747411095.234,18.675, +0,27.591722871323103,56.51552262132742,1747411095.242,18.683, +0,27.555153981384365,56.40754621761678,1747411095.25,18.692, +0,27.51911344361012,56.299392312841206,1747411095.259,18.7, +0,27.483602000300582,56.19106353140718,1747411095.267,18.708, +0,27.44862038061731,56.082562500126876,1747411095.275,18.717, +0,27.41416930058061,55.97389184815278,1747411095.284,18.725, +0,27.380249463067077,55.865054206912,1747411095.292,18.733, +0,27.346861557807745,55.75605221004132,1747411095.3,18.742, +0,27.314006261386297,55.64688849332159,1747411095.309,18.75, +0,27.281684237237755,55.53756569461276,1747411095.317,18.758, +0,27.24989613564742,55.42808645378857,1747411095.325,18.767, +0,27.218642593750108,55.31845341267149,1747411095.334,18.775, +0,27.1879242355297,55.2086692149674,1747411095.342,18.783, +0,27.157741671819128,55.09873650620108,1747411095.35,18.792, +0,27.128095500300557,54.98865793365108,1747411095.359,18.8, +0,27.09898630550581,54.87843614628458,1747411095.367,18.808, +0,27.07041465881724,54.768073794692626,1747411095.375,18.817, +0,27.04238111846895,54.65757353102588,1747411095.384,18.825, +0,27.014886229548086,54.54693800892908,1747411095.392,18.833, +0,26.987930523996788,54.43616988347735,1747411095.4,18.842, +0,26.96151452061405,54.325271811110696,1747411095.409,18.85, +0,26.93563872505829,54.214246449570446,1747411095.417,18.858, +0,26.91030362984984,54.10309645783384,1747411095.425,18.867, +0,26.885509714374127,53.99182449605067,1747411095.434,18.875, +0,26.861257444884824,53.8804332254782,1747411095.442,18.883, +0,26.837547274507543,53.76892530841749,1747411095.45,18.892, +0,26.814379643243644,53.65730340814882,1747411095.459,18.9, +0,26.791754977974588,53.54557018886811,1747411095.467,18.908, +0,26.76967369246633,53.43372831562274,1747411095.475,18.917, +0,26.74813618737416,53.32178045424736,1747411095.484,18.925, +0,26.72714285024784,53.20972927130036,1747411095.492,18.933, +0,26.706694055537067,53.097577434000456,1747411095.5,18.942, +0,26.686790164597127,52.98532761016247,1747411095.509,18.95, +0,26.667431525694933,52.87298246813399,1747411095.517,18.958, +0,26.648618474015336,52.76054467673185,1747411095.525,18.967, +0,26.630351331667814,52.64801690517904,1747411095.534,18.975, +0,26.612630407693253,52.53540182304076,1747411095.542,18.983, +0,26.595455998071312,52.42270210016192,1747411095.55,18.992, +0,26.578828385727867,52.30992040660385,1747411095.559,19.0, +0,26.56274784054272,52.197059412580515,1747411095.567,19.008, +0,26.54721461935786,52.08412178839672,1747411095.575,19.017, +0,26.532228965985784,51.971110204384615,1747411095.584,19.025, +0,26.517791111218152,51.85802733084106,1747411095.592,19.033, +0,26.5039012728348,51.74487583796497,1747411095.6,19.042, +0,26.49055965561303,51.63165839579498,1747411095.609,19.05, +0,26.47776645133709,51.51837767414642,1747411095.617,19.058, +0,26.465521838808137,51.405036342549906,1747411095.625,19.067, +0,26.453825983854284,51.29163707018828,1747411095.634,19.075, +0,26.442679039341044,51.17818252583467,1747411095.642,19.083, +0,26.432081145182106,51.06467537779084,1747411095.65,19.092, +0,26.422032428350267,50.95111829382505,1747411095.659,19.1, +0,26.412533002888715,50.83751394110972,1747411095.667,19.108, +0,26.403582969922656,50.72386498616057,1747411095.675,19.117, +0,26.39518241767116,50.610174094774756,1747411095.684,19.125, +0,26.387331421459212,50.49644393196878,1747411095.692,19.133, +0,26.380030043730276,50.382677161918025,1747411095.7,19.142, +0,26.373278334058885,50.26887644789507,1747411095.709,19.15, +0,26.367076329163673,50.15504445220853,1747411095.717,19.158, +0,26.361424052920615,50.0411838361417,1747411095.725,19.167, +0,26.356321516376603,49.92729725989271,1747411095.734,19.175, +0,26.351768717763246,49.813387382512786,1747411095.742,19.183, +0,26.347765642510943,49.69945686184526,1747411095.75,19.192, +0,26.3443122632633,49.58550835446643,1747411095.759,19.2, +0,26.341408539891773,49.47154451562392,1747411095.767,19.208, +0,26.339054419510557,49.3575679991769,1747411095.775,19.217, +0,26.337249836491825,49.243581457535726,1747411095.784,19.225, +0,26.335994712481167,49.12958754160184,1747411095.792,19.233, +0,26.335288956413354,49.01558890070831,1747411095.8,19.242, +0,26.335132464528357,48.90158818255927,1747411095.809,19.25, +0,26.335525120387587,48.787588033170934,1747411095.817,19.258, +0,26.336466794890512,48.67359109681159,1747411095.825,19.267, +0,26.33795734629142,48.55960001594279,1747411095.834,19.275, +0,26.33999662021655,48.44561743115924,1747411095.842,19.283, +0,26.34258444968141,48.33164598113027,1747411095.85,19.292, +0,26.345720655108437,48.21768830254088,1747411095.859,19.3, +0,26.349405044344852,48.10374703003229,1747411095.867,19.308, +0,26.35363741268082,47.98982479614392,1747411095.875,19.317, +0,26.358417542867848,47.87592423125461,1747411095.884,19.325, +0,26.36374520513749,47.76204796352343,1747411095.892,19.333, +0,26.369620157220268,47.64819861883252,1747411095.9,19.342, +0,26.37604214436482,47.534378820728165,1747411095.909,19.35, +0,26.383010899357433,47.420591190362885,1747411095.917,19.358, +0,26.390526142541688,47.306838346437935,1747411095.925,19.367, +0,26.398587581838477,47.193122905144946,1747411095.934,19.375, +0,26.407194912766172,47.07944748010887,1747411095.942,19.383, +0,26.416347818461166,46.9658146823302,1747411095.95,19.392, +0,26.426045969698553,46.85222712012787,1747411095.959,19.4, +0,26.436289024913165,46.738687399081826,1747411095.967,19.408, +0,26.44707663022073,46.625198121976766,1747411095.975,19.417, +0,26.458408419439476,46.51176188874415,1747411095.984,19.425, +0,26.470284014111773,46.39838129640629,1747411095.992,19.433, +0,26.482703023526184,46.28505893901961,1747411096.0,19.442, +0,26.49566504473962,46.17179740761865,1747411096.009,19.45, +0,26.509169662599952,46.05859929015884,1747411096.017,19.458, +0,26.523216449768643,45.94546717146127,1747411096.025,19.467, +0,26.53780496674374,45.83240363315664,1747411096.034,19.475, +0,26.55293476188312,45.71941125362922,1747411096.042,19.483, +0,26.568605371427946,45.606492607961414,1747411096.05,19.492, +0,26.584816319526357,45.493650267878365,1747411096.059,19.5, +0,26.601567118257417,45.38088680169266,1747411096.067,19.508, +0,26.61885726765535,45.26820477424875,1747411096.075,19.517, +0,26.636686255733895,45.15560674686885,1747411096.084,19.525, +0,26.655053558511003,45.04309527729738,1747411096.092,19.533, +0,26.673958640033717,44.930672919646916,1747411096.1,19.542, +0,26.6934009524034,44.81834222434302,1747411096.109,19.55, +0,26.713379935800994,44.706105738070484,1747411096.117,19.558, +0,26.73389501851267,44.59396600371923,1747411096.125,19.567, +0,26.75494561695565,44.481925560330104,1747411096.134,19.575, +0,26.77653113570439,44.36998694304076,1747411096.142,19.583, +0,26.798650967516682,44.25815268303292,1747411096.15,19.592, +0,26.82130449336033,44.14642530747823,1747411096.159,19.6, +0,26.844491082439923,44.034807339484956,1747411096.167,19.608, +0,26.86821009222373,43.92330129804529,1747411096.175,19.617, +0,26.892460868471026,43.81190969798185,1747411096.184,19.625, +0,26.917242745259326,43.700635049895936,1747411096.192,19.633, +0,26.942555045012384,43.58947986011341,1747411096.2,19.642, +0,26.968397078527786,43.478446630633584,1747411096.209,19.65, +0,26.994768145005192,43.36753785907649,1747411096.217,19.658, +0,27.021667532074662,43.25675603863069,1747411096.225,19.667, +0,27.04909451582517,43.146103658001735,1747411096.234,19.675, +0,27.077048360833466,43.03558320136001,1747411096.242,19.683, +0,27.10552832019293,42.925197148289804,1747411096.25,19.692, +0,27.13453363554286,42.81494797373758,1747411096.259,19.7, +0,27.16406353709802,42.70483814796041,1747411096.267,19.708, +0,27.194117243677955,42.59487013647624,1747411096.275,19.717, +0,27.224693962737202,42.4850464000117,1747411096.284,19.725, +0,27.255792890395114,42.37536939445245,1747411096.292,19.733, +0,27.28741321146627,42.265841570792205,1747411096.3,19.742, +0,27.31955409949077,42.15646537508323,1747411096.309,19.75, +0,27.352214716765324,42.04724324838497,1747411096.317,19.758, +0,27.385394214373704,41.938177626715635,1747411096.325,19.767, +0,27.419091732218106,41.829270941001745,1747411096.334,19.775, +0,27.45330639905052,41.72052561702852,1747411096.342,19.783, +0,27.488037332504003,41.611944075391335,1747411096.35,19.792, +0,27.523283639124752,41.50352873144555,1747411096.359,19.8, +0,27.559044414403644,41.3952819952588,1747411096.367,19.808, +0,27.595318742808743,41.287206271561125,1747411096.375,19.817, +0,27.632105697817362,41.17930395969731,1747411096.384,19.825, +0,27.66940434194875,41.07157745357802,1747411096.392,19.833, +0,27.707213726796834,40.96402914163169,1747411096.4,19.842, +0,27.745532893062933,40.85666140675717,1747411096.409,19.85, +0,27.78436087058912,40.74947662627528,1747411096.417,19.858, +0,27.82369667839147,40.64247717188151,1747411096.425,19.867, +0,27.863539324693626,40.535665409598494,1747411096.434,19.875, +0,27.903887806960313,40.42904369972935,1747411096.442,19.883, +0,27.9447411119315,40.32261439681007,1747411096.45,19.892, +0,27.986098215656273,40.21637984956327,1747411096.459,19.9, +0,28.027958083527217,40.110342400851394,1747411096.467,19.908, +0,28.07031967031497,40.00450438763015,1747411096.475,19.917, +0,28.11318192020253,39.89886814090313,1747411096.484,19.925, +0,28.156543766820686,39.7934359856745,1747411096.492,19.933, +0,28.20040413328242,39.68821024090471,1747411096.5,19.942, +0,28.24476193221852,39.58319321946397,1747411096.509,19.95, +0,28.289616065812808,39.47838722808729,1747411096.517,19.958, +0,28.334965425837865,39.37379456732898,1747411096.525,19.967, +0,28.38080889369055,39.26941753151826,1747411096.534,19.975, +0,28.427145340428048,39.16525840871424,1747411096.542,19.983, +0,28.473973626804153,39.06131948066101,1747411096.55,19.992, +0,28.521292603305238,38.95760302274405,1747411096.559,20.0, +0,28.56910111018694,38.854111303945594,1747411096.567,20.008, +0,28.61739797751071,38.75084658680093,1747411096.575,20.017, +0,28.66618202518077,38.64781112735439,1747411096.584,20.025, +0,28.715452062980837,38.545007175116375,1747411096.592,20.033, +0,28.765206890611477,38.442436973019745,1747411096.6,20.042, +0,28.815445297727468,38.34010275737657,1747411096.609,20.05, +0,28.86616606397504,38.23800675783586,1747411096.617,20.058, +0,28.917367959029853,38.13615119734024,1747411096.625,20.067, +0,28.969049742634574,38.03453829208404,1747411096.634,20.075, +0,29.02121016463703,37.93317025147073,1747411096.642,20.083, +0,29.073847965028367,37.832049278070926,1747411096.65,20.092, +0,29.126961873981173,37.731177567581,1747411096.659,20.1, +0,29.1805506118883,37.6305573087808,1747411096.667,20.108, +0,29.234612889401177,37.53019068349292,1747411096.675,20.117, +0,29.289147407468814,37.43007986654119,1747411096.684,20.125, +0,29.344152857376677,37.3302270257099,1747411096.692,20.133, +0,29.39962792078595,37.230634321702794,1747411096.7,20.142, +0,29.45557126977252,37.131303908103106,1747411096.709,20.15, +0,29.511981566866638,37.03223793133284,1747411096.717,20.158, +0,29.56885746509273,36.933438530612335,1747411096.725,20.167, +0,29.626197608008503,36.834907837921484,1747411096.734,20.175, +0,29.684000629745437,36.73664797795906,1747411096.742,20.183, +0,29.74226515504839,36.63866106810406,1747411096.75,20.192, +0,29.80098979931613,36.540949218375864,1747411096.759,20.2, +0,29.860173168641644,36.44351453139544,1747411096.767,20.208, +0,29.919813859852187,36.34635910234714,1747411096.775,20.217, +0,29.97991046055039,36.24948501893951,1747411096.784,20.225, +0,30.040461549155037,36.15289436136685,1747411096.792,20.233, +0,30.10146569494161,36.05658920227187,1747411096.8,20.242, +0,30.162921458083602,35.960571606707255,1747411096.809,20.25, +0,30.224827389693804,35.864843632098,1747411096.817,20.258, +0,30.287182031865317,35.76940732820442,1747411096.825,20.267, +0,30.349983917713455,35.674264737084314,1747411096.834,20.275, +0,30.41323157141689,35.579417893056714,1747411096.842,20.283, +0,30.476923508259947,35.48486882266432,1747411096.85,20.292, +0,30.54105823467406,35.39061954463756,1747411096.859,20.3, +0,30.605634248279884,35.29667206985823,1747411096.867,20.308, +0,30.670650037929658,35.20302840132304,1747411096.875,20.317, +0,30.736104083749215,35.109690534108175,1747411096.884,20.325, +0,30.801994857180468,35.01666045533358,1747411096.892,20.333, +0,30.868320821024305,34.92394014412706,1747411096.9,20.342, +0,30.935080429482674,34.8315315715899,1747411096.909,20.35, +0,31.00227212820177,34.739436700761416,1747411096.917,20.358, +0,31.069894354314957,34.647657486584215,1747411096.925,20.367, +0,31.13794553648574,34.55619587586983,1747411096.934,20.375, +0,31.206424094950854,34.46505380726455,1747411096.942,20.383, +0,31.275328441563655,34.374233211215234,1747411096.95,20.392, +0,31.34465697983758,34.283736009935474,1747411096.959,20.4, +0,31.414408104989644,34.1935641173721,1747411096.967,20.408, +0,31.484580203984038,34.103719439171805,1747411096.975,20.417, +0,31.555171655576043,34.01420387264796,1747411096.984,20.425, +0,31.62618083035577,33.92501930674783,1747411096.992,20.433, +0,31.697606090792387,33.83616762201965,1747411097.0,20.442, +0,31.769445791277732,33.74765069058086,1747411097.009,20.45, +0,31.84169827817129,33.659470376084926,1747411097.017,20.458, +0,31.914361889843942,33.571628533690166,1747411097.025,20.467, +0,31.987434956722648,33.48412701002766,1747411097.034,20.475, +0,32.06091580133504,33.39696764316977,1747411097.042,20.483, +0,32.134802738354054,33.31015226259888,1747411097.05,20.492, +0,32.20909407464264,33.22368268917645,1747411097.059,20.5, +0,32.28378810929877,33.13756073511203,1747411097.067,20.508, +0,32.35888313370026,33.051788203932915,1747411097.075,20.517, +0,32.43437743155018,32.966366890453415,1747411097.084,20.525, +0,32.510269278921626,32.881298580745224,1747411097.092,20.533, +0,32.58655694430337,32.79658505210713,1747411097.1,20.542, +0,32.66323868864494,32.71222807303578,1747411097.109,20.55, +0,32.74031276540271,32.628229403195505,1747411097.117,20.558, +0,32.81777742058452,32.544590793390306,1747411097.125,20.567, +0,32.89563089279631,32.461313985533835,1747411097.134,20.575, +0,32.973871413287455,32.378400712621186,1747411097.142,20.583, +0,33.052497205996666,32.29585269870037,1747411097.15,20.592, +0,33.13150648759789,32.21367165884418,1747411097.159,20.6, +0,33.2108974675466,32.1318592991219,1747411097.167,20.608, +0,33.290668348126104,32.05041731657149,1747411097.175,20.617, +0,33.370817324493004,31.969347399172676,1747411097.184,20.625, +0,33.451342584724344,31.88865122581897,1747411097.192,20.633, +0,33.532242309863776,31.808330466290773,1747411097.2,20.642, +0,33.61351467396797,31.72838678122872,1747411097.209,20.65, +0,33.695157844153066,31.64882182210712,1747411097.217,20.658, +0,33.77716998064177,31.569637231207267,1747411097.225,20.667, +0,33.859549236809855,31.490834641591505,1747411097.234,20.675, +0,33.94229375923284,31.41241567707756,1747411097.242,20.683, +0,34.02540168773331,31.33438195221246,1747411097.25,20.692, +0,34.10887115542751,31.25673507224749,1747411097.259,20.7, +0,34.192700288772805,31.179476633112706,1747411097.267,20.708, +0,34.27688720761436,31.10260822139239,1747411097.275,20.717, +0,34.36143002523274,31.02613141430002,1747411097.284,20.725, +0,34.44632684839105,30.950047779653936,1747411097.292,20.733, +0,34.531575777382656,30.874358875852824,1747411097.3,20.742, +0,34.61717490607798,30.799066251852288,1747411097.309,20.75, +0,34.703122321972415,30.724171447140726,1747411097.317,20.758, +0,34.789416106233936,30.649675991715835,1747411097.325,20.767, +0,34.8760543337508,30.575581406061257,1747411097.334,20.775, +0,34.963035073178915,30.501889201123856,1747411097.342,20.783, +0,35.05035638699003,30.428600878290553,1747411097.35,20.792, +0,35.13801633151928,30.35571792936603,1747411097.359,20.8, +0,35.22601295701341,30.283241836550165,1747411097.367,20.808, +0,35.31434430767853,30.211174072416092,1747411097.375,20.817, +0,35.40300842172809,30.139516099888432,1747411097.384,20.825, +0,35.49200333143134,30.06826937222134,1747411097.392,20.833, +0,35.581327063161055,29.997435332977535,1747411097.4,20.842, +0,35.670977637442114,29.927015416006842,1747411097.409,20.85, +0,35.76095306899947,29.857011045425526,1747411097.417,20.858, +0,35.851251366806856,29.787423635595353,1747411097.425,20.867, +0,35.94187053413458,29.7182545911036,1747411097.434,20.875, +0,36.032808568599,29.649505306742107,1747411097.442,20.883, +0,36.124063462209676,29.581177167488313,1747411097.45,20.892, +0,36.215633201418726,29.513271548484934,1747411097.459,20.9, +0,36.30751576716972,29.445789815020287,1747411097.467,20.908, +0,36.399709134945574,29.37873332250958,1747411097.475,20.917, +0,36.492211274817535,29.312103416475725,1747411097.484,20.925, +0,36.58502015149402,29.245901432530474,1747411097.492,20.933, +0,36.67813372436949,29.18012869635586,1747411097.5,20.942, +0,36.771549947572964,29.114786523686128,1747411097.509,20.95, +0,36.86526677001707,29.049876220289516,1747411097.517,20.958, +0,36.95928213544693,28.985399081950543,1747411097.525,20.967, +0,37.053593982489325,28.921356394452225,1747411097.534,20.975, +0,37.14820024470145,28.85774943355895,1747411097.542,20.983, +0,37.2430988506196,28.79457946499958,1747411097.55,20.992, +0,37.33828772380936,28.731847744449876,1747411097.559,21.0, +0,37.43376478291348,28.66955551751666,1747411097.567,21.008, +0,37.52952794170172,28.607704019720984,1747411097.575,21.017, +0,37.62557510912001,28.54629447648202,1747411097.584,21.025, +0,37.72190418933931,28.485328103101324,1747411097.592,21.033, +0,37.818513081805044,28.42480610474708,1747411097.6,21.042, +0,37.915399681286715,28.364729676438444,1747411097.609,21.05, +0,38.01256187792668,28.305100003030663,1747411097.617,21.058, +0,38.10999755728969,28.2459182592,1747411097.625,21.067, +0,38.207704600412534,28.187185609428802,1747411097.634,21.075, +0,38.305680883852794,28.12890320799146,1747411097.642,21.083, +0,38.403924279739236,28.071072198939497,1747411097.65,21.092, +0,38.50243265581999,28.013693716088337,1747411097.659,21.1, +0,38.60120387551321,27.956768883002827,1747411097.667,21.108, +0,38.70023579795588,27.90029881298406,1747411097.675,21.117, +0,38.79952627805366,27.844284609055897,1747411097.684,21.125, +0,38.8990731665299,27.788727363952162,1747411097.692,21.133, +0,38.99887430997615,27.733628160103283,1747411097.7,21.142, +0,39.098927550900584,27.678988069624314,1747411097.709,21.15, +0,39.19923072777847,27.624808154302077,1747411097.717,21.158, +0,39.299781675101315,27.57108946558328,1747411097.725,21.167, +0,39.400578223426876,27.51783304456241,1747411097.734,21.175, +0,39.50161819942808,27.465039921970426,1747411097.742,21.183, +0,39.602899425943534,27.412711118162907,1747411097.75,21.192, +0,39.70441972202653,27.360847643109164,1747411097.759,21.2, +0,39.80617690299524,27.30945049638102,1747411097.767,21.208, +0,39.90816878048177,27.258520667142395,1747411097.775,21.217, +0,40.01039316248258,27.208059134138452,1747411097.784,21.225, +0,40.11284785340751,27.15806686568565,1747411097.792,21.233, +0,40.21553065412979,27.10854481966158,1747411097.8,21.242, +0,40.31843936203582,27.05949394349513,1747411097.809,21.25, +0,40.42157177107474,27.01091517415698,1747411097.817,21.258, +0,40.52492567180827,26.962809438150238,1747411097.825,21.267, +0,40.62849885146021,26.915177651501413,1747411097.834,21.275, +0,40.73228909396632,26.86802071975151,1747411097.842,21.283, +0,40.8362941800241,26.821339537947352,1747411097.85,21.292, +0,40.94051188714229,26.775134990633262,1747411097.859,21.3, +0,41.04493998969089,26.72940795184279,1747411097.867,21.308, +0,41.14957625895046,26.68415928509095,1747411097.875,21.317, +0,41.25441846316219,26.63938984336633,1747411097.884,21.325, +0,41.3594643675777,26.595100469123622,1747411097.892,21.333, +0,41.464711734508015,26.55129199427663,1747411097.9,21.342, +0,41.570158323374244,26.507965240190906,1747411097.909,21.35, +0,41.675801890756446,26.465121017677244,1747411097.917,21.358, +0,41.78164019044377,26.422760126984976,1747411097.925,21.367, +0,41.88767097348385,26.38088335779572,1747411097.934,21.375, +0,41.99389198823296,26.33949148921714,1747411097.942,21.383, +0,42.10030098040472,26.29858528977739,1747411097.95,21.392, +0,42.20689569312065,26.258165517419148,1747411097.959,21.4, +0,42.313673866959455,26.218232919494323,1747411097.967,21.408, +0,42.42063324000632,26.178788232759008,1747411097.975,21.417, +0,42.527771547903086,26.13983218336828,1747411097.984,21.425, +0,42.63508652389703,26.10136548687178,1747411097.992,21.433, +0,42.742575898891396,26.06338884820885,1747411098.0,21.442, +0,42.85023740149383,26.025902961704656,1747411098.009,21.45, +0,42.958068758066865,25.988908511065805,1747411098.017,21.458, +0,43.06606769277699,25.95240616937668,1747411098.025,21.467, +0,43.17423192764363,25.91639659909597,1747411098.034,21.475, +0,43.28255918258963,25.880880452053024,1747411098.042,21.483, +0,43.391047175489796,25.845858369444933,1747411098.05,21.492, +0,43.499693622220654,25.81133098183354,1747411098.059,21.5, +0,43.60849623670987,25.777298909142715,1747411098.067,21.508, +0,43.71745273098584,25.743762760655812,1747411098.075,21.517, +0,43.826560815225506,25.710723135013904,1747411098.084,21.525, +0,43.93581819780527,25.678180620213226,1747411098.092,21.533, +0,44.04522258535028,25.646135793603413,1747411098.1,21.542, +0,44.1547716827824,25.614589221886277,1747411098.109,21.55, +0,44.26446319337035,25.583541461114184,1747411098.117,21.558, +0,44.37429481877871,25.552993056688962,1747411098.125,21.567, +0,44.48426425911683,25.52294454336109,1747411098.134,21.575, +0,44.594369212988035,25.493396445228925,1747411098.142,21.583, +0,44.70460737753882,25.464349275738257,1747411098.15,21.592, +0,44.81497644850745,25.43580353768215,1747411098.159,21.6, +0,44.92547412027341,25.407759723200797,1747411098.167,21.608, +0,45.03609808590598,25.38021831378181,1747411098.175,21.617, +0,45.14684603721338,25.3531797802606,1747411098.184,21.625, +0,45.25771566479137,25.326644582821043,1747411098.192,21.633, +0,45.368704658072275,25.30061317099631,1747411098.2,21.642, +0,45.47981070537386,25.27508598366992,1747411098.209,21.65, +0,45.59103149394774,25.250063449077096,1747411098.217,21.658, +0,45.70236471002837,25.22554598480621,1747411098.225,21.667, +0,45.81380803888108,25.201533997800656,1747411098.234,21.675, +0,45.92535916485184,25.17802788436051,1747411098.242,21.683, +0,46.03701577141464,25.155028030144994,1747411098.25,21.692, +0,46.14877554122046,25.1325348101747,1747411098.259,21.7, +0,46.26063615614576,25.110548588834213,1747411098.267,21.708, +0,46.37259529734082,25.089069719874896,1747411098.275,21.717, +0,46.4846506452783,25.068098546417918,1747411098.284,21.725, +0,46.596799879775816,25.047635400962093,1747411098.292,21.733, +0,46.70904068014526,25.027680605369024,1747411098.3,21.742, +0,46.821370725090084,25.008234470894276,1747411098.309,21.75, +0,46.93378769285391,24.989297298172847,1747411098.317,21.758, +0,47.046289261243665,24.970869377227828,1747411098.325,21.767, +0,47.15887310767698,24.952950987474843,1747411098.334,21.775, +0,47.271536909230946,24.93554239772641,1747411098.342,21.783, +0,47.384278342689626,24.91864386619673,1747411098.35,21.792, +0,47.49709508459203,24.902255640506638,1747411098.359,21.8, +0,47.609984811279766,24.886377957688715,1747411098.367,21.808, +0,47.72294519894478,24.871011044192688,1747411098.375,21.817, +0,47.83597392367715,24.856155115890942,1747411098.384,21.825, +0,47.949068661513,24.841810378084286,1747411098.392,21.833, +0,48.062227088481116,24.827977025508037,1747411098.4,21.842, +0,48.175446880651464,24.814655242338073,1747411098.409,21.85, +0,48.288725714181815,24.801845202197335,1747411098.417,21.858, +0,48.40206126536588,24.789547068162335,1747411098.425,21.867, +0,48.51545121067958,24.777760992770098,1747411098.434,21.875, +0,48.62889322682943,24.766487118025,1747411098.442,21.883, +0,48.74238499079852,24.755725575406185,1747411098.45,21.892, +0,48.85592417989488,24.745476485874796,1747411098.459,21.9, +0,48.96950847179708,24.735739959881773,1747411098.467,21.908, +0,49.08313554460212,24.726516097375598,1747411098.475,21.917, +0,49.19680307687224,24.71780498781033,1747411098.484,21.925, +0,49.310508747681354,24.709606710153864,1747411098.492,21.933, +0,49.424250236662076,24.701921332896383,1747411098.5,21.942, +0,49.538025224052,24.69474891405899,1747411098.509,21.95, +0,49.65183139074087,24.688089501202544,1747411098.517,21.958, +0,49.76566641831634,24.68194313143672,1747411098.525,21.967, +0,49.87952798911112,24.67630983142926,1747411098.534,21.975, +0,49.99341378624884,24.67118961741538,1747411098.542,21.983, +0,50.10732149369057,24.66658249520746,1747411098.55,21.992, +0,50.221248796280555,24.662488460204887,1747411098.559,22.0, +0,50.33519337979312,24.658907497404044,1747411098.567,22.008, +0,50.449152930978016,24.655839581408603,1747411098.575,22.017, +0,50.5631251376066,24.65328467643994,1747411098.584,22.025, +0,50.67710768851797,24.651242736347765,1747411098.592,22.033, +0,50.79109827366379,24.649713704620947,1747411098.6,22.042, +0,50.90509458415558,24.648697514398545,1747411098.609,22.05, +0,51.01909431230858,24.648194088481034,1747411098.617,22.058, +0,51.13309515168894,24.64820333934169,1747411098.625,22.067, +0,51.247094797157644,24.64872516913822,1747411098.634,22.075, +0,51.361090944916974,24.64975946972455,1747411098.642,22.083, +0,51.4750812925552,24.65130612266281,1747411098.65,22.092, +0,51.58906353909194,24.653364999235542,1747411098.659,22.1, +0,51.70303538502339,24.655935960458038,1747411098.667,22.108, +0,51.816994532367,24.65901885709094,1747411098.675,22.117, +0,51.93093868470666,24.66261352965295,1747411098.684,22.125, +0,52.04486554723749,24.666719808433847,1747411098.692,22.133, +0,52.158772826810214,24.67133751350753,1747411098.7,22.142, +0,52.272658231976536,24.676466454745427,1747411098.709,22.15, +0,52.38651947303276,24.682106431829936,1747411098.717,22.158, +0,52.50035426206487,24.688257234268146,1747411098.725,22.167, +0,52.61416031299317,24.69491864140577,1747411098.734,22.175, +0,52.727935341615144,24.702090422441106,1747411098.742,22.183, +0,52.84167706565155,24.709772336439407,1747411098.75,22.192, +0,52.9553832047886,24.717964132347234,1747411098.759,22.2, +0,53.069051480723495,24.726665549007137,1747411098.767,22.208, +0,53.182679617207405,24.73587631517244,1747411098.775,22.217, +0,53.2962653400893,24.74559614952222,1747411098.784,22.225, +0,53.409806377359594,24.755824760676482,1747411098.792,22.233, +0,53.52330045919452,24.766561847211573,1747411098.8,22.242, +0,53.63674531799842,24.777807097675634,1747411098.809,22.25, +0,53.75013868844757,24.789560190604323,1747411098.817,22.258, +0,53.8634783075337,24.801820794536784,1747411098.825,22.267, +0,53.976761914607216,24.814588568031695,1747411098.834,22.275, +0,54.08998725141961,24.827863159683464,1747411098.842,22.283, +0,54.203152062166666,24.841644208138703,1747411098.85,22.292, +0,54.31625409353189,24.85593134211288,1747411098.859,22.3, +0,54.429291094728384,24.870724180407013,1747411098.867,22.308, +0,54.54226081754221,24.886022331924746,1747411098.875,22.317, +0,54.655161016373846,24.901825395689325,1747411098.884,22.325, +0,54.76798944828237,24.91813296086114,1747411098.892,22.333, +0,54.88074387302581,24.934944606754968,1747411098.9,22.342, +0,54.99342205310485,24.952259902857847,1747411098.909,22.35, +0,55.10602175380367,24.9700784088467,1747411098.917,22.358, +0,55.21854074323322,24.98839967460657,1747411098.925,22.367, +0,55.330976792371914,25.007223240248592,1747411098.934,22.375, +0,55.44332767510799,25.026548636128467,1747411098.942,22.383, +0,55.55559116828132,25.046375382864973,1747411098.95,22.392, +0,55.66776505172408,25.066702991358547,1747411098.959,22.4, +0,55.779847108303166,25.08753096281028,1747411098.967,22.408, +0,55.89183512396091,25.108858788740875,1747411098.975,22.417, +0,56.00372688775643,25.130685951009863,1747411098.984,22.425, +0,56.11552019190631,25.15301192183486,1747411098.992,22.433, +0,56.227212831826286,25.17583616381129,1747411099.0,22.442, +0,56.33880260617163,25.19915812993195,1747411099.009,22.45, +0,56.45028731687765,25.222977263606843,1747411099.017,22.458, +0,56.561664769200654,25.247292998683267,1747411099.025,22.467, +0,56.67293277175837,25.272104759466,1747411099.034,22.475, +0,56.78408913657007,25.297411960737584,1747411099.042,22.483, +0,56.89513167909706,25.323214007778923,1747411099.05,22.492, +0,57.00605821828263,25.34951029638988,1747411099.059,22.5, +0,57.11686657659225,25.37630021291018,1747411099.067,22.508, +0,57.2275545800531,25.403583134240336,1747411099.075,22.517, +0,57.338120058293974,25.431358427862808,1747411099.084,22.525, +0,57.44856084458504,25.45962545186338,1747411099.092,22.533, +0,57.558874775877364,25.488383554952616,1747411099.1,22.542, +0,57.66905969284189,25.517632076487402,1747411099.109,22.55, +0,57.77911343990887,25.547370346492755,1747411099.117,22.558, +0,57.88903386530773,25.577597685684008,1747411099.125,22.567, +0,57.99881882110434,25.60831340548838,1747411099.134,22.575, +0,58.108466163241665,25.63951680806777,1747411099.142,22.583, +0,58.21797375157786,25.67120718634093,1747411099.15,22.592, +0,58.32733944992437,25.703383824005915,1747411099.159,22.6, +0,58.436561126085216,25.73604599556302,1747411099.167,22.608, +0,58.54563665189474,25.76919296633746,1747411099.175,22.617, +0,58.65456390325613,25.802823992502454,1747411099.184,22.625, +0,58.763340760179844,25.8369383211025,1747411099.192,22.633, +0,58.87196510682067,25.871535190076436,1747411099.2,22.642, +0,58.980434831516355,25.90661382828111,1747411099.209,22.65, +0,59.08874782682514,25.942173455514958,1747411099.217,22.658, +0,59.19690198956309,25.978213282541677,1747411099.225,22.667, +0,59.30489522084187,26.01473251111426,1747411099.234,22.675, +0,59.41272542610584,26.051730333998954,1747411099.242,22.683, +0,59.52039051516916,26.08920593499946,1747411099.25,22.692, +0,59.627888402252985,26.12715848898129,1747411099.259,22.7, +0,59.73521700602252,26.165587161896344,1747411099.267,22.708, +0,59.84237424962326,26.204491110807353,1747411099.275,22.717, +0,59.9493580607184,26.243869483912896,1747411099.284,22.725, +0,60.05616637152436,26.283721420571993,1747411099.292,22.733, +0,60.16279711884819,26.32404605132953,1747411099.3,22.742, +0,60.26924824412313,26.364842497941215,1747411099.309,22.75, +0,60.375517693444685,26.406109873398904,1747411099.317,22.758, +0,60.48160341760681,26.447847281956168,1747411099.325,22.767, +0,60.587503372137945,26.490053819154003,1747411099.334,22.775, +0,60.69321551733623,26.53272857184638,1747411099.342,22.783, +0,60.798737818305,26.575870618226148,1747411099.35,22.792, +0,60.904068244988636,26.619479027851213,1747411099.359,22.8, +0,61.00920477220761,26.66355286167063,1747411099.367,22.808, +0,61.114145379693404,26.708091172050825,1747411099.375,22.817, +0,61.21888805212366,26.753093002802068,1747411099.384,22.825, +0,61.323430779157064,26.79855738920509,1747411099.392,22.833, +0,61.42777155546804,26.84448335803777,1747411099.4,22.842, +0,61.531908380780756,26.890869927601717,1747411099.409,22.85, +0,61.635839259904785,26.937716107749782,1747411099.417,22.858, +0,61.73956220276774,26.98502089991245,1747411099.425,22.867, +0,61.84307522445068,27.032783297125576,1747411099.434,22.875, +0,61.94637634522131,27.081002284057465,1747411099.442,22.883, +0,62.049463590568394,27.129676837036538,1747411099.45,22.892, +0,62.15233499123502,27.17880592407877,1747411099.459,22.9, +0,62.25498858325224,27.22838850491549,1747411099.467,22.908, +0,62.35742240797225,27.278423531021083,1747411099.475,22.917, +0,62.45963451210247,27.32890994564142,1747411099.484,22.925, +0,62.56162294773723,27.37984668382123,1747411099.492,22.933, +0,62.66338577239207,27.431232672433044,1747411099.5,22.942, +0,62.76492104903592,27.483066830205157,1747411099.509,22.95, +0,62.86622684612352,27.535348067750068,1747411099.517,22.958, +0,62.96730123762838,27.588075287593224,1747411099.525,22.967, +0,63.06814230307505,27.641247384201762,1747411099.534,22.975, +0,63.16874812757125,27.69486324401322,1747411099.542,22.983, +0,63.26911680183964,27.74892174546442,1747411099.55,22.992, +0,63.369246422250214,27.8034217590207,1747411099.559,23.0, +0,63.46913509085189,27.858362147205124,1747411099.567,23.008, +0,63.56878091540417,27.9137417646277,1747411099.575,23.017, +0,63.66818200940819,27.969559458014675,1747411099.584,23.025, +0,63.76733649213833,28.02581406623814,1747411099.592,23.033, +0,63.86624248867366,28.082504420345956,1747411099.6,23.042, +0,63.96489812992856,28.13962934359117,1747411099.609,23.05, +0,64.06330155268336,28.19718765146191,1747411099.617,23.058, +0,64.16145089961567,28.25517815171161,1747411099.625,23.067, +0,64.25934431933031,28.313599644388837,1747411099.634,23.075, +0,64.35697996639016,28.37245092186774,1747411099.642,23.083, +0,64.45435600134599,28.431730768878126,1747411099.65,23.092, +0,64.551470590767,28.491437962536178,1747411099.659,23.1, +0,64.64832190727012,28.55157127237461,1747411099.667,23.108, +0,64.74490812955048,28.612129460373687,1747411099.675,23.117, +0,64.84122744241043,28.673111280991684,1747411099.684,23.125, +0,64.93727803678954,28.734515481196045,1747411099.692,23.133, +0,65.03305810979336,28.796340800494004,1747411099.7,23.142, +0,65.12856586472273,28.858585970963713,1747411099.709,23.15, +0,65.22379951110321,28.92124971728576,1747411099.717,23.158, +0,65.3187572647134,28.98433075677407,1747411099.725,23.167, +0,65.41343734761358,29.04782779940726,1747411099.734,23.175, +0,65.50783798817484,29.11173954786049,1747411099.742,23.183, +0,65.60195742110669,29.176064697536592,1747411099.75,23.192, +0,65.69579388748573,29.24080193659803,1747411099.759,23.2, +0,65.78934563478367,29.30594994599862,1747411099.767,23.208, +0,65.88261091689505,29.371507399515345,1747411099.775,23.217, +0,65.97558799416487,29.43747296378025,1747411099.784,23.225, +0,66.0682751334165,29.503845298312694,1747411099.792,23.233, +0,66.16067060797889,29.57062305555141,1747411099.8,23.242, +0,66.25277269771398,29.63780488088688,1747411099.809,23.25, +0,66.34457968904343,29.705389412693428,1747411099.817,23.258, +0,66.43608987497592,29.773375282361897,1747411099.825,23.267, +0,66.52730155513379,29.841761114332154,1747411099.834,23.275, +0,66.61821303577958,29.910545526125578,1747411099.842,23.283, +0,66.70882262984243,29.979727128377835,1747411099.85,23.292, +0,66.79912865694489,30.049304524872035,1747411099.859,23.3, +0,66.88912944342819,30.119276312570996,1747411099.867,23.308, +0,66.97882332237894,30.18964108165078,1747411099.875,23.317, +0,67.0682086336544,30.260397415533387,1747411099.884,23.325, +0,67.15728372390872,30.331543890920358,1747411099.892,23.333, +0,67.24604694661778,30.403079077825577,1747411099.9,23.342, +0,67.33449666210485,30.475001539608805,1747411099.909,23.35, +0,67.42263123756564,30.547309833009056,1747411099.917,23.358, +0,67.51044904709367,30.62000250817845,1747411099.925,23.367, +0,67.59794847170443,30.69307810871522,1747411099.934,23.375, +0,67.68512789936037,30.766535171697626,1747411099.942,23.383, +0,67.77198572499566,30.840372227718003,1747411099.95,23.392, +0,67.85852035054023,30.91458780091625,1747411099.959,23.4, +0,67.94473018494378,30.989180409013706,1747411099.967,23.408, +0,68.03061364420023,31.06414856334747,1747411099.975,23.417, +0,68.11616915137137,31.139490768904327,1747411099.984,23.425, +0,68.20139513661047,31.215205524354808,1747411099.992,23.433, +0,68.28629003718558,31.291291322087293,1747411100.0,23.442, +0,68.37085229750357,31.367746648242882,1747411100.009,23.45, +0,68.45508036913276,31.44456998274925,1747411100.017,23.458, +0,68.53897271082577,31.521759799355063,1747411100.025,23.467, +0,68.62252778854315,31.599314565665118,1747411100.034,23.475, +0,68.70574407547532,31.6772327431743,1747411100.042,23.483, +0,68.78862005206548,31.7555127873026,1747411100.05,23.492, +0,68.87115420603172,31.834153147429628,1747411100.059,23.5, +0,68.9533450323895,31.913152266929792,1747411100.067,23.508, +0,69.03519103347361,31.992508583206952,1747411100.075,23.517, +0,69.1166907189597,32.07222052772926,1747411100.084,23.525, +0,69.19784260588644,32.15228652606453,1747411100.092,23.533, +0,69.27864521867676,32.232704997915064,1747411100.1,23.542, +0,69.35909708915932,32.313474357152984,1747411100.109,23.55, +0,69.43919675658961,32.39459301185528,1747411100.117,23.558, +0,69.51894276767109,32.47605936433932,1747411100.125,23.567, +0,69.59833367657606,32.55787181119814,1747411100.134,23.575, +0,69.67736804496604,32.64002874333565,1747411100.142,23.583, +0,69.7560444420129,32.722528546002614,1747411100.15,23.592, +0,69.83436144441859,32.80536959883174,1747411100.159,23.6, +0,69.9123176364358,32.88855027587357,1747411100.167,23.608, +0,69.98991160988751,32.97206894563185,1747411100.175,23.617, +0,70.06714196418731,33.05592397109961,1747411100.184,23.625, +0,70.14400730635897,33.140113709794974,1747411100.192,23.633, +0,70.2205062510557,33.22463651379664,1747411100.2,23.642, +0,70.29663742057983,33.30949072978018,1747411100.209,23.65, +0,70.37239944490163,33.39467469905365,1747411100.217,23.658, +0,70.4477909616788,33.48018675759411,1747411100.225,23.667, +0,70.52281061627487,33.566025236083135,1747411100.234,23.675, +0,70.59745706177804,33.652188459943325,1747411100.242,23.683, +0,70.67172895901989,33.73867474937458,1747411100.25,23.692, +0,70.74562497659343,33.82548241939004,1747411100.259,23.7, +0,70.8191437908712,33.91260977985233,1747411100.267,23.708, +0,70.89228408602371,34.00005513551041,1747411100.275,23.717, +0,70.96504455403685,34.087816786035475,1747411100.284,23.725, +0,71.03742389472974,34.17589302605762,1747411100.292,23.733, +0,71.10942081577221,34.26428214520236,1747411100.3,23.742, +0,71.18103403270212,34.35298242812709,1747411100.309,23.75, +0,71.25226226894249,34.441992154557795,1747411100.317,23.758, +0,71.32310425581838,34.531309599325404,1747411100.325,23.767, +0,71.39355873257404,34.62093303240302,1747411100.334,23.775, +0,71.46362444638929,34.710860718942236,1747411100.342,23.783, +0,71.53330015239584,34.80109091930975,1747411100.35,23.792, +0,71.60258461369405,34.89162188912479,1747411100.359,23.8, +0,71.67147660136888,34.982451879295695,1747411100.367,23.808, +0,71.73997489450552,35.0735791360564,1747411100.375,23.817, +0,71.80807828020576,35.165001901004175,1747411100.384,23.825, +0,71.8757855536031,35.256718411135836,1747411100.392,23.833, +0,71.94309551787883,35.348726898885744,1747411100.4,23.842, +0,72.01000698427653,35.441025592161694,1747411100.409,23.85, +0,72.07651877211786,35.533612714382976,1747411100.417,23.858, +0,72.14262970881728,35.62648648451722,1747411100.425,23.867, +0,72.20833862989663,35.719645117117295,1747411100.434,23.875, +0,72.27364437899998,35.81308682235886,1747411100.442,23.883, +0,72.33854580790829,35.90680980607797,1747411100.45,23.892, +0,72.40304177655312,36.00081226980752,1747411100.459,23.9, +0,72.46713115303115,36.095092410815134,1747411100.467,23.908, +0,72.53081281361796,36.18964842214042,1747411100.475,23.917, +0,72.59408564278189,36.28447849263249,1747411100.484,23.925, +0,72.65694853319756,36.37958080698714,1747411100.492,23.933, +0,72.71940038575937,36.47495354578458,1747411100.5,23.942, +0,72.78144010959451,36.570594885526454,1747411100.509,23.95, +0,72.84306662207656,36.66650299867421,1747411100.517,23.958, +0,72.90427884883782,36.76267605368573,1747411100.525,23.967, +0,72.9650757237824,36.8591122150534,1747411100.534,23.975, +0,73.02545618909896,36.95580964334201,1747411100.542,23.983, +0,73.08541919527246,37.05276649522533,1747411100.55,23.992, +0,73.14496370109711,37.14998092352494,1747411100.559,24.0, +0,73.2040886736882,37.24745107724745,1747411100.567,24.008, +0,73.26279308849382,37.34517510162195,1747411100.575,24.017, +0,73.32107592930674,37.443151138138106,1747411100.584,24.025, +0,73.37893618827606,37.54137732458382,1747411100.592,24.033, +0,73.43637286591846,37.63985179508304,1747411100.6,24.042, +0,73.49338497112946,37.73857268013336,1747411100.609,24.05, +0,73.54997152119455,37.83753810664418,1747411100.617,24.058, +0,73.6061315417999,37.936746197974145,1747411100.625,24.067, +0,73.66186406704328,38.036195073969395,1747411100.634,24.075, +0,73.71716813944457,38.135882851001305,1747411100.642,24.083, +0,73.77204280995599,38.23580764200425,1747411100.65,24.092, +0,73.82648713797248,38.33596755651368,1747411100.659,24.1, +0,73.88050019134167,38.43636070070407,1747411100.667,24.108, +0,73.93408104637373,38.53698517742666,1747411100.675,24.117, +0,73.9872287878512,38.63783908624783,1747411100.684,24.125, +0,74.03994250903828,38.73892052348645,1747411100.692,24.133, +0,74.09222131169044,38.840227582252446,1747411100.7,24.142, +0,74.1440643060636,38.94175835248474,1747411100.709,24.15, +0,74.19547061092302,39.04351092098888,1747411100.717,24.158, +0,74.24643935355219,39.14548337147535,1747411100.725,24.167, +0,74.29696966976181,39.24767378459792,1747411100.734,24.175, +0,74.34706070389774,39.35008023799078,1747411100.742,24.183, +0,74.39671160885,39.45270080630765,1747411100.75,24.192, +0,74.44592154606055,39.5555335612592,1747411100.759,24.2, +0,74.4946896855314,39.65857657165118,1747411100.767,24.208, +0,74.54301520583265,39.76182790342294,1747411100.775,24.217, +0,74.59089729410991,39.86528561968497,1747411100.784,24.225, +0,74.638335146092,39.96894778075726,1747411100.792,24.233, +0,74.68532796609823,40.07281244420734,1747411100.8,24.242, +0,74.73187496704573,40.17687766488872,1747411100.809,24.25, +0,74.7779753704562,40.281141494978314,1747411100.817,24.258, +0,74.82362840646303,40.38560198401507,1747411100.825,24.267, +0,74.86883331381787,40.49025717893804,1747411100.834,24.275, +0,74.91358933989723,40.595105124124444,1747411100.842,24.283, +0,74.95789574070868,40.70014386142757,1747411100.85,24.292, +0,75.00175178089715,40.80537143021509,1747411100.859,24.3, +0,75.04515673375106,40.91078586740737,1747411100.867,24.308, +0,75.088109881208,41.016385207515306,1747411100.875,24.317, +0,75.13061051386055,41.12216748267853,1747411100.884,24.325, +0,75.17265793096158,41.228130722703135,1747411100.892,24.333, +0,75.21425144042999,41.33427295510077,1747411100.9,24.342, +0,75.25539035885562,41.44059220512573,1747411100.909,24.35, +0,75.29607401150433,41.547086495813446,1747411100.917,24.358, +0,75.33630173232298,41.65375384801878,1747411100.925,24.367, +0,75.37607286394406,41.760592280453885,1747411100.934,24.375, +0,75.41538675769016,41.86759980972615,1747411100.942,24.383, +0,75.45424277357841,41.974774450376486,1747411100.95,24.392, +0,75.49264028032475,42.08211421491742,1747411100.959,24.4, +0,75.53057865534797,42.18961711387126,1747411100.967,24.408, +0,75.56805728477342,42.297281155807596,1747411100.975,24.417, +0,75.60507556343688,42.40510434738187,1747411100.984,24.425, +0,75.64163289488819,42.51308469337337,1747411100.992,24.433, +0,75.67772869139442,42.6212201967229,1747411101.0,24.442, +0,75.71336237394323,42.72950885857093,1747411101.009,24.45, +0,75.74853337224606,42.83794867829614,1747411101.017,24.458, +0,75.78324112474073,42.94653765355227,1747411101.025,24.467, +0,75.81748507859442,43.055273780307125,1747411101.034,24.475, +0,75.85126468970621,43.16415505288,1747411101.042,24.483, +0,75.88457942270944,43.273179463979716,1747411101.05,24.492, +0,75.91742875097398,43.382345004742525,1747411101.059,24.5, +0,75.94981215660835,43.4916496647701,1747411101.067,24.508, +0,75.98172913046164,43.601091432167394,1747411101.075,24.517, +0,76.0131791721253,43.7106682935803,1747411101.084,24.525, +0,76.04416178993492,43.8203782342346,1747411101.092,24.533, +0,76.07467650097144,43.93021923797261,1747411101.1,24.542, +0,76.10472283106182,44.040189287288904,1747411101.109,24.55, +0,76.1343003147813,44.15028636337179,1747411101.117,24.558, +0,76.16340849545391,44.26050844614006,1747411101.125,24.567, +0,76.1920469251533,44.370853514280306,1747411101.134,24.575, +0,76.22021516469678,44.481319545258465,1747411101.142,24.583, +0,76.2479127836722,44.59190451546215,1747411101.15,24.592, +0,76.27513936039855,44.70260640008161,1747411101.159,24.6, +0,76.30189448195271,44.81342317325172,1747411101.167,24.608, +0,76.32817774416274,44.92435280806348,1747411101.175,24.617, +0,76.3539887516079,45.03539327660187,1747411101.184,24.625, +0,76.37932711761812,45.146542549982875,1747411101.192,24.633, +0,76.40419246427373,45.25779859839182,1747411101.2,24.642, +0,76.42858442240473,45.36915939111997,1747411101.209,24.65, +0,76.45250263159006,45.4806228966029,1747411101.217,24.658, +0,76.47594674015664,45.59218708245724,1747411101.225,24.667, +0,76.49891640517829,45.70384991551849,1747411101.234,24.675, +0,76.52141129247445,45.8156093618782,1747411101.242,24.683, +0,76.54343107660885,45.92746338692174,1747411101.25,24.692, +0,76.56497544088788,46.03940995536496,1747411101.259,24.7, +0,76.58604407735886,46.151447031292065,1747411101.267,24.708, +0,76.60663668680822,46.26357257819251,1747411101.275,24.717, +0,76.62675297875947,46.375784558998625,1747411101.284,24.725, +0,76.646392671471,46.48808093612241,1747411101.292,24.733, +0,76.66555549193367,46.60045967149283,1747411101.3,24.742, +0,76.68424117586846,46.71291872659303,1747411101.309,24.75, +0,76.70244946772372,46.82545606249754,1747411101.317,24.758, +0,76.72018012067244,46.938069639909074,1747411101.325,24.767, +0,76.73743289660914,47.05075741919522,1747411101.334,24.775, +0,76.75420756614696,47.16351736042652,1747411101.342,24.783, +0,76.77050390861433,47.276347423412325,1747411101.35,24.792, +0,76.78632171205149,47.38924556773814,1747411101.359,24.8, +0,76.80166077320696,47.502209752802315,1747411101.367,24.808, +0,76.81652089753388,47.61523793785344,1747411101.375,24.817, +0,76.83090189918606,47.7283280820262,1747411101.384,24.825, +0,76.844803601014,47.84147814437883,1747411101.392,24.833, +0,76.85822583456066,47.95468608392933,1747411101.4,24.842, +0,76.87116844005729,48.06794985969307,1747411101.409,24.85, +0,76.88363126641869,48.18126743071758,1747411101.417,24.858, +0,76.89561417123886,48.29463675612112,1747411101.425,24.867, +0,76.90711702078603,48.40805579512782,1747411101.434,24.875, +0,76.91813968999787,48.521522507105146,1747411101.442,24.883, +0,76.92868206247627,48.63503485159925,1747411101.45,24.892, +0,76.93874403048228,48.7485907883724,1747411101.459,24.9, +0,76.94832549493057,48.86218827743862,1747411101.467,24.908, +0,76.95742636538404,48.975825279100114,1747411101.475,24.917, +0,76.96604656004807,49.089499753984036,1747411101.484,24.925, +0,76.97418600576476,49.20320966307791,1747411101.492,24.933, +0,76.98184463800692,49.31695296776597,1747411101.5,24.942, +0,76.98902240087197,49.43072762986612,1747411101.509,24.95, +0,76.99571924707568,49.544531611664496,1747411101.517,24.958, +0,77.00193513794633,49.65836287596319,1747411101.525,24.967, +0,77.00767004341549,49.77221938606514,1747411101.534,24.975, +0,77.01292394201631,49.886099105904954,1747411101.542,24.983, +0,77.01769682087222,49.99999999999997,1747411101.55,24.992, diff --git a/tests/sample_data/[5123456]65318bf53c36ce79135b1049-648c7d0e8819c1120b4f708d-spiral_trace1_Dom.csv b/tests/sample_data/[5123456]65318bf53c36ce79135b1049-648c7d0e8819c1120b4f708d-spiral_trace1_Dom.csv new file mode 100755 index 0000000..7c60f32 --- /dev/null +++ b/tests/sample_data/[5123456]65318bf53c36ce79135b1049-648c7d0e8819c1120b4f708d-spiral_trace1_Dom.csv @@ -0,0 +1,2500 @@ +"line_number","x","y","UTC_Timestamp","seconds","epoch_time_in_seconds_start" +"0","49.03455284552846","49.237804878048784","1697745697.08","0","1697745697.08" +"0","48.983739837398375","49.237804878048784","1697745697.086","0.006","" +"0","48.93292682926829","49.237804878048784","1697745697.092","0.012","" +"0","48.88211382113821","49.237804878048784","1697745697.1","0.02","" +"0","48.831300813008134","49.18699186991869","1697745697.108","0.028","" +"0","48.831300813008134","49.18699186991869","1697745697.116","0.036","" +"0","48.78048780487805","49.18699186991869","1697745697.124","0.044","" +"0","48.78048780487805","49.18699186991869","1697745697.133","0.053","" +"0","48.78048780487805","49.18699186991869","1697745697.142","0.062","" +"0","48.88211382113821","49.237804878048784","1697745697.15","0.07","" +"0","48.983739837398375","49.33943089430895","1697745697.158","0.078","" +"0","49.08536585365854","49.4410569105691","1697745697.167","0.087","" +"0","49.23780487804878","49.59349593495935","1697745697.175","0.095","" +"0","49.390243902439025","49.69512195121951","1697745697.184","0.104","" +"0","49.542682926829265","49.84756097560976","1697745697.192","0.112","" +"0","49.644308943089435","50","1697745697.2","0.12","" +"0","49.796747967479675","50.15243902439025","1697745697.208","0.128","" +"0","49.94918699186992","50.30487804878049","1697745697.217","0.137","" +"0","50.05081300813008","50.40650406504065","1697745697.225","0.145","" +"0","50.15243902439024","50.50813008130081","1697745697.234","0.154","" +"0","50.20325203252033","50.609756097560975","1697745697.242","0.162","" +"0","50.25406504065041","50.66056910569105","1697745697.25","0.17","" +"0","50.30487804878049","50.76219512195122","1697745697.259","0.179","" +"0","50.355691056910565","50.863821138211385","1697745697.267","0.187","" +"0","50.355691056910565","51.016260162601625","1697745697.275","0.195","" +"0","50.355691056910565","51.11788617886179","1697745697.284","0.204","" +"0","50.40650406504065","51.27032520325203","1697745697.292","0.212","" +"0","50.40650406504065","51.3719512195122","1697745697.307","0.227","" +"0","50.40650406504065","51.47357723577235","1697745697.309","0.229","" +"0","50.40650406504065","51.57520325203252","1697745697.317","0.237","" +"0","50.355691056910565","51.676829268292686","1697745697.325","0.245","" +"0","50.30487804878049","51.72764227642276","1697745697.333","0.253","" +"0","50.25406504065041","51.829268292682926","1697745697.341","0.261","" +"0","50.20325203252033","51.88008130081301","1697745697.35","0.27","" +"0","50.101626016260155","51.98170731707317","1697745697.358","0.278","" +"0","50","52.03252032520325","1697745697.367","0.287","" +"0","49.84756097560975","52.13414634146341","1697745697.375","0.295","" +"0","49.74593495934959","52.1849593495935","1697745697.384","0.304","" +"0","49.59349593495935","52.28658536585366","1697745697.392","0.312","" +"0","49.49186991869919","52.33739837398374","1697745697.4","0.32","" +"0","49.33943089430895","52.388211382113816","1697745697.408","0.328","" +"0","49.1869918699187","52.388211382113816","1697745697.417","0.337","" +"0","49.03455284552846","52.4390243902439","1697745697.426","0.346","" +"0","48.88211382113821","52.4390243902439","1697745697.433","0.353","" +"0","48.72967479674797","52.4390243902439","1697745697.442","0.362","" +"0","48.577235772357724","52.4390243902439","1697745697.45","0.37","" +"0","48.42479674796748","52.388211382113816","1697745697.458","0.378","" +"0","48.27235772357724","52.33739837398374","1697745697.467","0.387","" +"0","48.11991869918699","52.28658536585366","1697745697.475","0.395","" +"0","47.96747967479675","52.1849593495935","1697745697.484","0.404","" +"0","47.764227642276424","52.08333333333333","1697745697.492","0.412","" +"0","47.611788617886184","52.03252032520325","1697745697.5","0.42","" +"0","47.459349593495936","51.93089430894309","1697745697.509","0.429","" +"0","47.256097560975604","51.829268292682926","1697745697.517","0.437","" +"0","47.103658536585364","51.72764227642276","1697745697.525","0.445","" +"0","46.90040650406504","51.6260162601626","1697745697.534","0.454","" +"0","46.7479674796748","51.57520325203252","1697745697.542","0.462","" +"0","46.59552845528455","51.47357723577235","1697745697.55","0.47","" +"0","46.392276422764226","51.422764227642276","1697745697.559","0.479","" +"0","46.239837398373986","51.32113821138211","1697745697.567","0.487","" +"0","46.138211382113816","51.27032520325203","1697745697.575","0.495","" +"0","46.03658536585366","51.21951219512195","1697745697.584","0.504","" +"0","45.88414634146341","51.11788617886179","1697745697.592","0.512","" +"0","45.83333333333333","51.06707317073171","1697745697.6","0.52","" +"0","45.73170731707317","50.96544715447154","1697745697.609","0.529","" +"0","45.63008130081301","50.863821138211385","1697745697.617","0.537","" +"0","45.579268292682926","50.8130081300813","1697745697.625","0.545","" +"0","45.52845528455284","50.71138211382114","1697745697.634","0.554","" +"0","45.47764227642276","50.609756097560975","1697745697.642","0.562","" +"0","45.426829268292686","50.457317073170735","1697745697.65","0.57","" +"0","45.426829268292686","50.355691056910565","1697745697.659","0.579","" +"0","45.3760162601626","50.203252032520325","1697745697.667","0.587","" +"0","45.32520325203252","50.05081300813008","1697745697.675","0.595","" +"0","45.27439024390244","49.84756097560976","1697745697.684","0.604","" +"0","45.27439024390244","49.69512195121951","1697745697.692","0.612","" +"0","45.22357723577235","49.49186991869918","1697745697.701","0.621","" +"0","45.22357723577235","49.28861788617886","1697745697.709","0.629","" +"0","45.22357723577235","49.136178861788615","1697745697.717","0.637","" +"0","45.172764227642276","48.9329268292683","1697745697.725","0.645","" +"0","45.172764227642276","48.78048780487805","1697745697.734","0.654","" +"0","45.172764227642276","48.57723577235772","1697745697.742","0.662","" +"0","45.172764227642276","48.42479674796748","1697745697.75","0.67","" +"0","45.172764227642276","48.27235772357723","1697745697.759","0.679","" +"0","45.172764227642276","48.11991869918699","1697745697.767","0.687","" +"0","45.172764227642276","47.96747967479674","1697745697.775","0.695","" +"0","45.172764227642276","47.86585365853659","1697745697.784","0.704","" +"0","45.22357723577235","47.713414634146346","1697745697.792","0.712","" +"0","45.27439024390244","47.61178861788618","1697745697.8","0.72","" +"0","45.32520325203252","47.510162601626014","1697745697.809","0.729","" +"0","45.32520325203252","47.40853658536586","1697745697.817","0.737","" +"0","45.426829268292686","47.357723577235774","1697745697.825","0.745","" +"0","45.47764227642276","47.256097560975604","1697745697.834","0.754","" +"0","45.52845528455284","47.15447154471545","1697745697.842","0.762","" +"0","45.579268292682926","47.052845528455286","1697745697.85","0.77","" +"0","45.68089430894309","46.95121951219512","1697745697.859","0.779","" +"0","45.73170731707317","46.79878048780488","1697745697.867","0.787","" +"0","45.83333333333333","46.697154471544714","1697745697.875","0.795","" +"0","45.985772357723576","46.54471544715447","1697745697.884","0.804","" +"0","46.08739837398374","46.44308943089431","1697745697.892","0.812","" +"0","46.239837398373986","46.290650406504064","1697745697.9","0.82","" +"0","46.392276422764226","46.13821138211382","1697745697.909","0.829","" +"0","46.54471544715447","46.036585365853654","1697745697.917","0.837","" +"0","46.697154471544714","45.9349593495935","1697745697.925","0.845","" +"0","46.84959349593496","45.78252032520326","1697745697.934","0.854","" +"0","47.0020325203252","45.68089430894309","1697745697.942","0.862","" +"0","47.15447154471545","45.52845528455285","1697745697.95","0.87","" +"0","47.357723577235774","45.3760162601626","1697745697.959","0.879","" +"0","47.510162601626014","45.27439024390244","1697745697.967","0.887","" +"0","47.66260162601626","45.12195121951219","1697745697.975","0.895","" +"0","47.86585365853659","45.02032520325203","1697745697.984","0.904","" +"0","48.06910569105691","44.91869918699187","1697745697.992","0.912","" +"0","48.27235772357724","44.8170731707317","1697745698.001","0.921","" +"0","48.47560975609756","44.71544715447154","1697745698.009","0.929","" +"0","48.6280487804878","44.66463414634146","1697745698.017","0.937","" +"0","48.831300813008134","44.613821138211385","1697745698.026","0.946","" +"0","49.08536585365854","44.512195121951216","1697745698.034","0.954","" +"0","49.28861788617886","44.512195121951216","1697745698.042","0.962","" +"0","49.49186991869919","44.46138211382114","1697745698.051","0.971","" +"0","49.69512195121951","44.41056910569105","1697745698.059","0.979","" +"0","49.89837398373984","44.359756097560975","1697745698.067","0.987","" +"0","50.101626016260155","44.3089430894309","1697745698.076","0.996","" +"0","50.30487804878049","44.25813008130082","1697745698.084","1.004","" +"0","50.50813008130082","44.25813008130082","1697745698.092","1.012","" +"0","50.71138211382114","44.20731707317073","1697745698.101","1.021","" +"0","50.91463414634146","44.20731707317073","1697745698.109","1.029","" +"0","51.16869918699187","44.20731707317073","1697745698.117","1.037","" +"0","51.37195121951219","44.20731707317073","1697745698.126","1.046","" +"0","51.57520325203252","44.20731707317073","1697745698.134","1.054","" +"0","51.77845528455285","44.20731707317073","1697745698.142","1.062","" +"0","51.981707317073166","44.25813008130082","1697745698.151","1.071","" +"0","52.1849593495935","44.3089430894309","1697745698.159","1.079","" +"0","52.33739837398373","44.359756097560975","1697745698.167","1.087","" +"0","52.540650406504064","44.359756097560975","1697745698.176","1.096","" +"0","52.743902439024396","44.41056910569105","1697745698.184","1.104","" +"0","52.89634146341463","44.46138211382114","1697745698.192","1.112","" +"0","53.09959349593496","44.512195121951216","1697745698.201","1.121","" +"0","53.302845528455286","44.56300813008131","1697745698.209","1.129","" +"0","53.45528455284553","44.613821138211385","1697745698.217","1.137","" +"0","53.65853658536586","44.71544715447154","1697745698.226","1.146","" +"0","53.8109756097561","44.766260162601625","1697745698.234","1.154","" +"0","53.963414634146346","44.8170731707317","1697745698.242","1.162","" +"0","54.11585365853659","44.91869918699187","1697745698.251","1.171","" +"0","54.268292682926834","44.96951219512195","1697745698.259","1.179","" +"0","54.420731707317074","45.07113821138211","1697745698.267","1.187","" +"0","54.52235772357723","45.17276422764228","1697745698.276","1.196","" +"0","54.6239837398374","45.27439024390244","1697745698.284","1.204","" +"0","54.72560975609756","45.3760162601626","1697745698.292","1.212","" +"0","54.82723577235772","45.47764227642277","1697745698.301","1.221","" +"0","54.87804878048781","45.579268292682926","1697745698.309","1.229","" +"0","54.97967479674797","45.68089430894309","1697745698.317","1.237","" +"0","55.03048780487805","45.78252032520326","1697745698.326","1.246","" +"0","55.08130081300813","45.88414634146341","1697745698.334","1.254","" +"0","55.1829268292683","45.985772357723576","1697745698.342","1.262","" +"0","55.233739837398375","46.08739837398373","1697745698.351","1.271","" +"0","55.28455284552846","46.1890243902439","1697745698.359","1.279","" +"0","55.33536585365854","46.290650406504064","1697745698.367","1.287","" +"0","55.43699186991869","46.44308943089431","1697745698.376","1.296","" +"0","55.487804878048784","46.64634146341463","1697745698.384","1.304","" +"0","55.58943089430895","46.79878048780488","1697745698.393","1.313","" +"0","55.6910569105691","47.052845528455286","1697745698.401","1.321","" +"0","55.79268292682927","47.256097560975604","1697745698.409","1.329","" +"0","55.894308943089435","47.459349593495936","1697745698.417","1.337","" +"0","55.94512195121951","47.66260162601627","1697745698.426","1.346","" +"0","55.99593495934959","47.8150406504065","1697745698.434","1.354","" +"0","56.04674796747967","47.96747967479674","1697745698.442","1.362","" +"0","56.04674796747967","48.06910569105691","1697745698.451","1.371","" +"0","56.04674796747967","48.170731707317074","1697745698.459","1.379","" +"0","56.04674796747967","48.32317073170732","1697745698.467","1.387","" +"0","55.94512195121951","48.42479674796748","1697745698.476","1.396","" +"0","55.894308943089435","48.57723577235772","1697745698.484","1.404","" +"0","55.84349593495935","48.72967479674797","1697745698.492","1.412","" +"0","55.79268292682927","48.882113821138205","1697745698.501","1.421","" +"0","55.74186991869918","48.983739837398375","1697745698.509","1.429","" +"0","55.6910569105691","49.136178861788615","1697745698.517","1.437","" +"0","55.640243902439025","49.28861788617886","1697745698.526","1.446","" +"0","55.58943089430895","49.4410569105691","1697745698.534","1.454","" +"0","55.58943089430895","49.54268292682927","1697745698.543","1.463","" +"0","55.53861788617886","49.69512195121951","1697745698.551","1.471","" +"0","55.487804878048784","49.84756097560976","1697745698.559","1.479","" +"0","55.487804878048784","50","1697745698.568","1.488","" +"0","55.487804878048784","50.203252032520325","1697745698.576","1.496","" +"0","55.487804878048784","50.40650406504065","1697745698.584","1.504","" +"0","55.487804878048784","50.609756097560975","1697745698.593","1.513","" +"0","55.53861788617886","50.863821138211385","1697745698.601","1.521","" +"0","55.58943089430895","51.11788617886179","1697745698.609","1.529","" +"0","55.58943089430895","51.3719512195122","1697745698.618","1.538","" +"0","55.640243902439025","51.57520325203252","1697745698.626","1.546","" +"0","55.6910569105691","51.77845528455284","1697745698.634","1.554","" +"0","55.6910569105691","51.98170731707317","1697745698.643","1.563","" +"0","55.6910569105691","52.13414634146341","1697745698.651","1.571","" +"0","55.6910569105691","52.28658536585366","1697745698.659","1.579","" +"0","55.640243902439025","52.4390243902439","1697745698.668","1.588","" +"0","55.58943089430895","52.59146341463415","1697745698.676","1.596","" +"0","55.53861788617886","52.743902439024396","1697745698.684","1.604","" +"0","55.487804878048784","52.896341463414636","1697745698.692","1.612","" +"0","55.43699186991869","53.04878048780488","1697745698.701","1.621","" +"0","55.386178861788615","53.20121951219512","1697745698.709","1.629","" +"0","55.33536585365854","53.40447154471545","1697745698.718","1.638","" +"0","55.28455284552846","53.55691056910569","1697745698.726","1.646","" +"0","55.233739837398375","53.709349593495936","1697745698.734","1.654","" +"0","55.1829268292683","53.861788617886184","1697745698.743","1.663","" +"0","55.1829268292683","54.014227642276424","1697745698.751","1.671","" +"0","55.132113821138205","54.16666666666667","1697745698.759","1.679","" +"0","55.08130081300813","54.26829268292683","1697745698.768","1.688","" +"0","55.03048780487805","54.420731707317074","1697745698.776","1.696","" +"0","54.97967479674797","54.573170731707314","1697745698.784","1.704","" +"0","54.92886178861789","54.72560975609756","1697745698.793","1.713","" +"0","54.87804878048781","54.8780487804878","1697745698.801","1.721","" +"0","54.82723577235772","54.97967479674797","1697745698.809","1.729","" +"0","54.77642276422764","55.13211382113821","1697745698.818","1.738","" +"0","54.72560975609756","55.233739837398375","1697745698.826","1.746","" +"0","54.72560975609756","55.386178861788615","1697745698.834","1.754","" +"0","54.67479674796748","55.48780487804878","1697745698.843","1.763","" +"0","54.6239837398374","55.58943089430895","1697745698.851","1.771","" +"0","54.57317073170732","55.74186991869919","1697745698.859","1.779","" +"0","54.52235772357723","55.84349593495935","1697745698.868","1.788","" +"0","54.47154471544715","55.94512195121951","1697745698.876","1.796","" +"0","54.420731707317074","56.046747967479675","1697745698.884","1.804","" +"0","54.31910569105691","56.14837398373984","1697745698.893","1.813","" +"0","54.268292682926834","56.25","1697745698.901","1.821","" +"0","54.21747967479674","56.40243902439025","1697745698.909","1.829","" +"0","54.11585365853659","56.50406504065041","1697745698.918","1.838","" +"0","54.0650406504065","56.605691056910565","1697745698.926","1.846","" +"0","53.963414634146346","56.65650406504065","1697745698.934","1.854","" +"0","53.86178861788618","56.8089430894309","1697745698.943","1.863","" +"0","53.8109756097561","56.859756097560975","1697745698.951","1.871","" +"0","53.709349593495936","56.96138211382114","1697745698.959","1.879","" +"0","53.607723577235774","57.0630081300813","1697745698.968","1.888","" +"0","53.506097560975604","57.113821138211385","1697745698.976","1.896","" +"0","53.35365853658537","57.21544715447154","1697745698.984","1.904","" +"0","53.2520325203252","57.266260162601625","1697745698.993","1.913","" +"0","53.09959349593496","57.31707317073171","1697745699.001","1.921","" +"0","52.947154471544714","57.418699186991866","1697745699.009","1.929","" +"0","52.79471544715447","57.46951219512195","1697745699.018","1.938","" +"0","52.642276422764226","57.52032520325203","1697745699.026","1.946","" +"0","52.489837398373986","57.57113821138211","1697745699.034","1.954","" +"0","52.286585365853654","57.6219512195122","1697745699.043","1.963","" +"0","52.13414634146341","57.6219512195122","1697745699.051","1.971","" +"0","51.981707317073166","57.672764227642276","1697745699.059","1.979","" +"0","51.77845528455285","57.72357723577235","1697745699.068","1.988","" +"0","51.6260162601626","57.72357723577235","1697745699.076","1.996","" +"0","51.52439024390244","57.77439024390244","1697745699.084","2.004","" +"0","51.32113821138211","57.82520325203252","1697745699.093","2.013","" +"0","51.21951219512195","57.8760162601626","1697745699.101","2.021","" +"0","51.0670731707317","57.8760162601626","1697745699.109","2.029","" +"0","50.96544715447154","57.926829268292686","1697745699.118","2.038","" +"0","50.81300813008131","57.97764227642276","1697745699.126","2.046","" +"0","50.66056910569105","57.97764227642276","1697745699.134","2.054","" +"0","50.50813008130082","58.02845528455284","1697745699.143","2.063","" +"0","50.40650406504065","58.02845528455284","1697745699.151","2.071","" +"0","50.25406504065041","58.02845528455284","1697745699.16","2.08","" +"0","50.101626016260155","58.079268292682926","1697745699.168","2.088","" +"0","50","58.079268292682926","1697745699.176","2.096","" +"0","49.84756097560975","58.079268292682926","1697745699.185","2.105","" +"0","49.74593495934959","58.079268292682926","1697745699.193","2.113","" +"0","49.59349593495935","58.079268292682926","1697745699.201","2.121","" +"0","49.49186991869919","58.079268292682926","1697745699.21","2.13","" +"0","49.33943089430895","58.079268292682926","1697745699.218","2.138","" +"0","49.23780487804878","58.079268292682926","1697745699.226","2.146","" +"0","49.136178861788615","58.02845528455284","1697745699.235","2.155","" +"0","48.983739837398375","58.02845528455284","1697745699.243","2.163","" +"0","48.88211382113821","57.97764227642276","1697745699.251","2.171","" +"0","48.78048780487805","57.926829268292686","1697745699.26","2.18","" +"0","48.6280487804878","57.8760162601626","1697745699.268","2.188","" +"0","48.52642276422765","57.8760162601626","1697745699.276","2.196","" +"0","48.3739837398374","57.82520325203252","1697745699.285","2.205","" +"0","48.27235772357724","57.77439024390244","1697745699.293","2.213","" +"0","48.11991869918699","57.72357723577235","1697745699.301","2.221","" +"0","47.96747967479675","57.672764227642276","1697745699.31","2.23","" +"0","47.764227642276424","57.57113821138211","1697745699.318","2.238","" +"0","47.611788617886184","57.52032520325203","1697745699.326","2.246","" +"0","47.40853658536585","57.418699186991866","1697745699.335","2.255","" +"0","47.20528455284553","57.31707317073171","1697745699.343","2.263","" +"0","47.0020325203252","57.21544715447154","1697745699.351","2.271","" +"0","46.84959349593496","57.113821138211385","1697745699.36","2.28","" +"0","46.646341463414636","57.01219512195122","1697745699.368","2.288","" +"0","46.44308943089431","56.91056910569105","1697745699.376","2.296","" +"0","46.239837398373986","56.8089430894309","1697745699.385","2.305","" +"0","46.08739837398374","56.75813008130081","1697745699.393","2.313","" +"0","45.9349593495935","56.65650406504065","1697745699.401","2.321","" +"0","45.73170731707317","56.605691056910565","1697745699.41","2.33","" +"0","45.52845528455284","56.50406504065041","1697745699.418","2.338","" +"0","45.3760162601626","56.40243902439025","1697745699.427","2.347","" +"0","45.1219512195122","56.25","1697745699.435","2.355","" +"0","44.918699186991866","56.14837398373984","1697745699.443","2.363","" +"0","44.66463414634146","55.99593495934959","1697745699.451","2.371","" +"0","44.41056910569105","55.792682926829265","1697745699.46","2.38","" +"0","44.15650406504065","55.6910569105691","1697745699.468","2.388","" +"0","43.90243902439025","55.53861788617886","1697745699.476","2.396","" +"0","43.64837398373984","55.386178861788615","1697745699.485","2.405","" +"0","43.49593495934959","55.33536585365854","1697745699.493","2.413","" +"0","43.292682926829265","55.233739837398375","1697745699.501","2.421","" +"0","43.08943089430895","55.18292682926829","1697745699.51","2.43","" +"0","42.9369918699187","55.13211382113821","1697745699.518","2.438","" +"0","42.78455284552846","55.03048780487805","1697745699.526","2.446","" +"0","42.63211382113821","54.97967479674797","1697745699.535","2.455","" +"0","42.47967479674797","54.8780487804878","1697745699.543","2.463","" +"0","42.327235772357724","54.827235772357724","1697745699.551","2.471","" +"0","42.1239837398374","54.67479674796748","1697745699.56","2.48","" +"0","42.02235772357724","54.573170731707314","1697745699.568","2.488","" +"0","41.86991869918699","54.47154471544716","1697745699.577","2.497","" +"0","41.71747967479675","54.36991869918699","1697745699.585","2.505","" +"0","41.5650406504065","54.26829268292683","1697745699.593","2.513","" +"0","41.46341463414634","54.11585365853659","1697745699.601","2.521","" +"0","41.361788617886184","53.96341463414634","1697745699.61","2.53","" +"0","41.260162601626014","53.861788617886184","1697745699.618","2.538","" +"0","41.107723577235774","53.709349593495936","1697745699.626","2.546","" +"0","41.006097560975604","53.506097560975604","1697745699.635","2.555","" +"0","40.90447154471545","53.353658536585364","1697745699.643","2.563","" +"0","40.802845528455286","53.15040650406504","1697745699.652","2.572","" +"0","40.70121951219512","52.896341463414636","1697745699.66","2.58","" +"0","40.59959349593496","52.642276422764226","1697745699.668","2.588","" +"0","40.4979674796748","52.4390243902439","1697745699.676","2.596","" +"0","40.396341463414636","52.1849593495935","1697745699.685","2.605","" +"0","40.29471544715447","51.98170731707317","1697745699.693","2.613","" +"0","40.243902439024396","51.72764227642276","1697745699.702","2.622","" +"0","40.142276422764226","51.52439024390244","1697745699.71","2.63","" +"0","40.09146341463415","51.32113821138211","1697745699.718","2.638","" +"0","40.040650406504064","51.168699186991866","1697745699.727","2.647","" +"0","39.989837398373986","50.96544715447154","1697745699.735","2.655","" +"0","39.9390243902439","50.8130081300813","1697745699.743","2.663","" +"0","39.9390243902439","50.609756097560975","1697745699.752","2.672","" +"0","39.888211382113816","50.40650406504065","1697745699.76","2.68","" +"0","39.83739837398374","50.203252032520325","1697745699.769","2.689","" +"0","39.83739837398374","50","1697745699.776","2.696","" +"0","39.78658536585366","49.74593495934959","1697745699.785","2.705","" +"0","39.78658536585366","49.54268292682927","1697745699.793","2.713","" +"0","39.78658536585366","49.390243902439025","1697745699.801","2.721","" +"0","39.78658536585366","49.18699186991869","1697745699.81","2.73","" +"0","39.78658536585366","48.983739837398375","1697745699.818","2.738","" +"0","39.78658536585366","48.83130081300813","1697745699.827","2.747","" +"0","39.78658536585366","48.62804878048781","1697745699.835","2.755","" +"0","39.78658536585366","48.42479674796748","1697745699.843","2.763","" +"0","39.78658536585366","48.22154471544715","1697745699.852","2.772","" +"0","39.78658536585366","47.96747967479674","1697745699.86","2.78","" +"0","39.78658536585366","47.764227642276424","1697745699.868","2.788","" +"0","39.78658536585366","47.510162601626014","1697745699.877","2.797","" +"0","39.78658536585366","47.256097560975604","1697745699.885","2.805","" +"0","39.78658536585366","47.0020325203252","1697745699.893","2.813","" +"0","39.78658536585366","46.79878048780488","1697745699.902","2.822","" +"0","39.78658536585366","46.54471544715447","1697745699.91","2.83","" +"0","39.83739837398374","46.34146341463414","1697745699.918","2.838","" +"0","39.9390243902439","46.1890243902439","1697745699.927","2.847","" +"0","40.040650406504064","45.985772357723576","1697745699.935","2.855","" +"0","40.142276422764226","45.833333333333336","1697745699.943","2.863","" +"0","40.243902439024396","45.63008130081301","1697745699.952","2.872","" +"0","40.396341463414636","45.47764227642277","1697745699.96","2.88","" +"0","40.447154471544714","45.27439024390244","1697745699.968","2.888","" +"0","40.59959349593496","45.07113821138211","1697745699.977","2.897","" +"0","40.70121951219512","44.91869918699187","1697745699.985","2.905","" +"0","40.802845528455286","44.71544715447154","1697745699.993","2.913","" +"0","40.95528455284553","44.512195121951216","1697745700.002","2.922","" +"0","41.05691056910569","44.359756097560975","1697745700.01","2.93","" +"0","41.260162601626014","44.20731707317073","1697745700.018","2.938","" +"0","41.41260162601626","44.00406504065041","1697745700.027","2.947","" +"0","41.5650406504065","43.90243902439024","1697745700.035","2.955","" +"0","41.71747967479675","43.75","1697745700.043","2.963","" +"0","41.920731707317074","43.648373983739845","1697745700.052","2.972","" +"0","42.073170731707314","43.49593495934959","1697745700.06","2.98","" +"0","42.22560975609756","43.34349593495935","1697745700.068","2.988","" +"0","42.3780487804878","43.1910569105691","1697745700.077","2.997","" +"0","42.53048780487805","43.03861788617886","1697745700.085","3.005","" +"0","42.68292682926829","42.886178861788615","1697745700.093","3.013","" +"0","42.83536585365854","42.6829268292683","1697745700.102","3.022","" +"0","42.98780487804878","42.53048780487805","1697745700.11","3.03","" +"0","43.140243902439025","42.32723577235772","1697745700.118","3.038","" +"0","43.292682926829265","42.17479674796748","1697745700.127","3.047","" +"0","43.44512195121951","41.97154471544715","1697745700.135","3.055","" +"0","43.59756097560975","41.86991869918699","1697745700.143","3.063","" +"0","43.80081300813008","41.666666666666664","1697745700.152","3.072","" +"0","43.953252032520325","41.5650406504065","1697745700.16","3.08","" +"0","44.15650406504065","41.463414634146346","1697745700.168","3.088","" +"0","44.359756097560975","41.36178861788618","1697745700.177","3.097","" +"0","44.51219512195122","41.260162601626014","1697745700.185","3.105","" +"0","44.71544715447154","41.107723577235774","1697745700.193","3.113","" +"0","44.918699186991866","41.006097560975604","1697745700.202","3.122","" +"0","45.1219512195122","40.90447154471545","1697745700.21","3.13","" +"0","45.27439024390244","40.802845528455286","1697745700.218","3.138","" +"0","45.52845528455284","40.65040650406504","1697745700.227","3.147","" +"0","45.68089430894309","40.4979674796748","1697745700.235","3.155","" +"0","45.88414634146341","40.39634146341463","1697745700.243","3.163","" +"0","46.08739837398374","40.19308943089431","1697745700.252","3.172","" +"0","46.290650406504064","40.040650406504064","1697745700.26","3.18","" +"0","46.44308943089431","39.88821138211382","1697745700.269","3.189","" +"0","46.646341463414636","39.735772357723576","1697745700.277","3.197","" +"0","46.84959349593496","39.583333333333336","1697745700.285","3.205","" +"0","47.0020325203252","39.481707317073166","1697745700.293","3.213","" +"0","47.20528455284553","39.329268292682926","1697745700.302","3.222","" +"0","47.40853658536585","39.22764227642277","1697745700.31","3.23","" +"0","47.611788617886184","39.07520325203252","1697745700.318","3.238","" +"0","47.8150406504065","38.97357723577236","1697745700.327","3.247","" +"0","48.01829268292683","38.87195121951219","1697745700.335","3.255","" +"0","48.22154471544716","38.77032520325203","1697745700.344","3.264","" +"0","48.42479674796748","38.617886178861795","1697745700.352","3.272","" +"0","48.577235772357724","38.516260162601625","1697745700.36","3.28","" +"0","48.78048780487805","38.363821138211385","1697745700.368","3.288","" +"0","49.03455284552846","38.262195121951216","1697745700.377","3.297","" +"0","49.23780487804878","38.21138211382114","1697745700.385","3.305","" +"0","49.49186991869919","38.109756097560975","1697745700.394","3.314","" +"0","49.74593495934959","38.0589430894309","1697745700.402","3.322","" +"0","49.94918699186992","38.0589430894309","1697745700.41","3.33","" +"0","50.20325203252033","38.00813008130082","1697745700.419","3.339","" +"0","50.45731707317073","38.00813008130082","1697745700.427","3.347","" +"0","50.71138211382114","38.00813008130082","1697745700.435","3.355","" +"0","51.016260162601625","38.00813008130082","1697745700.444","3.364","" +"0","51.27032520325203","37.95731707317073","1697745700.452","3.372","" +"0","51.57520325203252","37.95731707317073","1697745700.46","3.38","" +"0","51.88008130081301","37.95731707317073","1697745700.469","3.389","" +"0","52.1849593495935","38.00813008130082","1697745700.477","3.397","" +"0","52.489837398373986","38.0589430894309","1697745700.485","3.405","" +"0","52.79471544715447","38.109756097560975","1697745700.494","3.414","" +"0","53.15040650406504","38.21138211382114","1697745700.502","3.422","" +"0","53.45528455284553","38.363821138211385","1697745700.51","3.43","" +"0","53.8109756097561","38.46544715447154","1697745700.519","3.439","" +"0","54.166666666666664","38.617886178861795","1697745700.527","3.447","" +"0","54.47154471544715","38.71951219512195","1697745700.535","3.455","" +"0","54.82723577235772","38.87195121951219","1697745700.544","3.464","" +"0","55.132113821138205","38.97357723577236","1697745700.552","3.472","" +"0","55.487804878048784","39.1260162601626","1697745700.56","3.48","" +"0","55.84349593495935","39.27845528455285","1697745700.569","3.489","" +"0","56.148373983739845","39.43089430894309","1697745700.577","3.497","" +"0","56.45325203252033","39.583333333333336","1697745700.585","3.505","" +"0","56.75813008130082","39.786585365853654","1697745700.594","3.514","" +"0","57.06300813008131","39.9390243902439","1697745700.602","3.522","" +"0","57.3170731707317","40.142276422764226","1697745700.61","3.53","" +"0","57.67276422764228","40.39634146341463","1697745700.619","3.539","" +"0","57.97764227642277","40.65040650406504","1697745700.627","3.547","" +"0","58.28252032520326","40.85365853658537","1697745700.635","3.555","" +"0","58.63821138211382","41.15853658536586","1697745700.644","3.564","" +"0","58.94308943089431","41.41260162601627","1697745700.653","3.573","" +"0","59.29878048780488","41.71747967479674","1697745700.661","3.581","" +"0","59.65447154471545","42.02235772357723","1697745700.668","3.588","" +"0","59.959349593495936","42.32723577235772","1697745700.676","3.596","" +"0","60.264227642276424","42.58130081300813","1697745700.685","3.605","" +"0","60.518292682926834","42.83536585365854","1697745700.693","3.613","" +"0","60.72154471544715","43.03861788617886","1697745700.702","3.622","" +"0","60.92479674796748","43.24186991869918","1697745700.71","3.63","" +"0","61.07723577235772","43.394308943089435","1697745700.719","3.639","" +"0","61.22967479674797","43.54674796747967","1697745700.727","3.647","" +"0","61.33130081300813","43.69918699186992","1697745700.735","3.655","" +"0","61.4329268292683","43.851626016260155","1697745700.744","3.664","" +"0","61.53455284552846","44.05487804878049","1697745700.752","3.672","" +"0","61.636178861788615","44.20731707317073","1697745700.76","3.68","" +"0","61.737804878048784","44.46138211382114","1697745700.769","3.689","" +"0","61.83943089430895","44.66463414634146","1697745700.777","3.697","" +"0","61.99186991869918","44.867886178861795","1697745700.785","3.705","" +"0","62.09349593495935","45.12195121951219","1697745700.794","3.714","" +"0","62.24593495934959","45.3760162601626","1697745700.802","3.722","" +"0","62.398373983739845","45.63008130081301","1697745700.811","3.731","" +"0","62.5","45.88414634146341","1697745700.819","3.739","" +"0","62.65243902439024","46.1890243902439","1697745700.827","3.747","" +"0","62.80487804878049","46.44308943089431","1697745700.836","3.756","" +"0","62.95731707317073","46.79878048780488","1697745700.844","3.764","" +"0","63.109756097560975","47.10365853658537","1697745700.852","3.772","" +"0","63.262195121951216","47.459349593495936","1697745700.86","3.78","" +"0","63.41463414634146","47.8150406504065","1697745700.869","3.789","" +"0","63.516260162601625","48.11991869918699","1697745700.877","3.797","" +"0","63.617886178861795","48.47560975609756","1697745700.886","3.806","" +"0","63.71951219512195","48.78048780487805","1697745700.894","3.814","" +"0","63.77032520325203","49.136178861788615","1697745700.902","3.822","" +"0","63.87195121951219","49.4410569105691","1697745700.91","3.83","" +"0","63.92276422764228","49.69512195121951","1697745700.919","3.839","" +"0","63.92276422764228","50","1697745700.927","3.847","" +"0","63.97357723577236","50.25406504065041","1697745700.935","3.855","" +"0","63.97357723577236","50.5589430894309","1697745700.944","3.864","" +"0","63.97357723577236","50.8130081300813","1697745700.952","3.872","" +"0","63.97357723577236","51.11788617886179","1697745700.961","3.881","" +"0","63.97357723577236","51.422764227642276","1697745700.969","3.889","" +"0","63.97357723577236","51.72764227642276","1697745700.977","3.897","" +"0","63.97357723577236","52.03252032520325","1697745700.985","3.905","" +"0","63.97357723577236","52.388211382113816","1697745700.994","3.914","" +"0","63.97357723577236","52.642276422764226","1697745701.002","3.922","" +"0","63.97357723577236","52.947154471544714","1697745701.011","3.931","" +"0","63.97357723577236","53.20121951219512","1697745701.019","3.939","" +"0","63.92276422764228","53.45528455284553","1697745701.027","3.947","" +"0","63.82113821138211","53.65853658536585","1697745701.036","3.956","" +"0","63.77032520325203","53.91260162601626","1697745701.044","3.964","" +"0","63.66869918699187","54.16666666666667","1697745701.052","3.972","" +"0","63.5670731707317","54.36991869918699","1697745701.061","3.981","" +"0","63.46544715447154","54.6239837398374","1697745701.069","3.989","" +"0","63.31300813008131","54.827235772357724","1697745701.077","3.997","" +"0","63.21138211382114","55.081300813008134","1697745701.086","4.006","" +"0","63.0589430894309","55.33536585365854","1697745701.094","4.014","" +"0","62.95731707317073","55.58943089430895","1697745701.102","4.022","" +"0","62.80487804878049","55.894308943089435","1697745701.111","4.031","" +"0","62.70325203252033","56.14837398373984","1697745701.119","4.039","" +"0","62.601626016260155","56.40243902439025","1697745701.127","4.047","" +"0","62.44918699186992","56.707317073170735","1697745701.136","4.056","" +"0","62.34756097560976","56.91056910569105","1697745701.144","4.064","" +"0","62.24593495934959","57.113821138211385","1697745701.152","4.072","" +"0","62.09349593495935","57.36788617886179","1697745701.161","4.081","" +"0","61.9410569105691","57.57113821138211","1697745701.169","4.089","" +"0","61.83943089430895","57.82520325203252","1697745701.177","4.097","" +"0","61.68699186991869","58.02845528455284","1697745701.186","4.106","" +"0","61.58536585365854","58.23170731707317","1697745701.194","4.114","" +"0","61.483739837398375","58.4349593495935","1697745701.202","4.122","" +"0","61.382113821138205","58.6890243902439","1697745701.211","4.131","" +"0","61.28048780487805","58.892276422764226","1697745701.219","4.139","" +"0","61.17886178861789","59.146341463414636","1697745701.227","4.147","" +"0","61.07723577235772","59.34959349593496","1697745701.236","4.156","" +"0","61.02642276422764","59.603658536585364","1697745701.244","4.164","" +"0","60.97560975609756","59.80691056910569","1697745701.252","4.172","" +"0","60.8739837398374","60.010162601626014","1697745701.261","4.181","" +"0","60.77235772357723","60.16260162601626","1697745701.269","4.189","" +"0","60.72154471544715","60.36585365853659","1697745701.277","4.197","" +"0","60.61991869918699","60.51829268292683","1697745701.286","4.206","" +"0","60.518292682926834","60.670731707317074","1697745701.294","4.214","" +"0","60.416666666666664","60.823170731707314","1697745701.302","4.222","" +"0","60.3150406504065","61.02642276422765","1697745701.311","4.231","" +"0","60.213414634146346","61.1280487804878","1697745701.319","4.239","" +"0","60.16260162601627","61.28048780487805","1697745701.327","4.247","" +"0","60.0609756097561","61.43292682926829","1697745701.336","4.256","" +"0","59.959349593495936","61.58536585365854","1697745701.344","4.264","" +"0","59.857723577235774","61.6869918699187","1697745701.352","4.272","" +"0","59.756097560975604","61.83943089430895","1697745701.361","4.281","" +"0","59.65447154471545","61.9410569105691","1697745701.369","4.289","" +"0","59.552845528455286","62.09349593495935","1697745701.377","4.297","" +"0","59.45121951219512","62.19512195121951","1697745701.386","4.306","" +"0","59.34959349593496","62.296747967479675","1697745701.394","4.314","" +"0","59.2479674796748","62.39837398373984","1697745701.402","4.322","" +"0","59.14634146341463","62.55081300813008","1697745701.411","4.331","" +"0","58.993902439024396","62.65243902439025","1697745701.419","4.339","" +"0","58.84146341463414","62.75406504065041","1697745701.427","4.347","" +"0","58.6890243902439","62.855691056910565","1697745701.436","4.356","" +"0","58.536585365853654","62.957317073170735","1697745701.444","4.364","" +"0","58.333333333333336","63.0589430894309","1697745701.452","4.372","" +"0","58.13008130081301","63.21138211382114","1697745701.461","4.381","" +"0","57.92682926829268","63.26219512195122","1697745701.469","4.389","" +"0","57.67276422764228","63.363821138211385","1697745701.477","4.397","" +"0","57.41869918699187","63.46544715447154","1697745701.486","4.406","" +"0","57.21544715447154","63.516260162601625","1697745701.494","4.414","" +"0","56.96138211382114","63.61788617886179","1697745701.503","4.423","" +"0","56.70731707317073","63.668699186991866","1697745701.511","4.431","" +"0","56.45325203252033","63.77032520325203","1697745701.519","4.439","" +"0","56.25","63.82113821138211","1697745701.528","4.448","" +"0","55.99593495934959","63.8719512195122","1697745701.536","4.456","" +"0","55.74186991869918","63.97357723577235","1697745701.544","4.464","" +"0","55.53861788617886","64.02439024390245","1697745701.552","4.472","" +"0","55.28455284552846","64.1260162601626","1697745701.561","4.481","" +"0","55.03048780487805","64.17682926829269","1697745701.569","4.489","" +"0","54.82723577235772","64.27845528455285","1697745701.578","4.498","" +"0","54.6239837398374","64.32926829268293","1697745701.586","4.506","" +"0","54.36991869918699","64.4308943089431","1697745701.594","4.514","" +"0","54.166666666666664","64.48170731707317","1697745701.603","4.523","" +"0","53.963414634146346","64.58333333333333","1697745701.611","4.531","" +"0","53.760162601626014","64.6341463414634","1697745701.619","4.539","" +"0","53.506097560975604","64.6341463414634","1697745701.628","4.548","" +"0","53.302845528455286","64.6849593495935","1697745701.636","4.556","" +"0","53.09959349593496","64.73577235772358","1697745701.644","4.564","" +"0","52.84552845528455","64.78658536585365","1697745701.653","4.573","" +"0","52.642276422764226","64.83739837398375","1697745701.661","4.581","" +"0","52.4390243902439","64.88821138211381","1697745701.669","4.589","" +"0","52.235772357723576","64.9390243902439","1697745701.678","4.598","" +"0","52.03252032520326","64.989837398374","1697745701.686","4.606","" +"0","51.829268292682926","64.989837398374","1697745701.694","4.614","" +"0","51.6260162601626","65.04065040650406","1697745701.703","4.623","" +"0","51.47357723577236","65.09146341463415","1697745701.711","4.631","" +"0","51.27032520325203","65.09146341463415","1697745701.719","4.639","" +"0","51.0670731707317","65.14227642276423","1697745701.728","4.648","" +"0","50.91463414634146","65.14227642276423","1697745701.736","4.656","" +"0","50.71138211382114","65.14227642276423","1697745701.744","4.664","" +"0","50.5589430894309","65.14227642276423","1697745701.753","4.673","" +"0","50.40650406504065","65.14227642276423","1697745701.761","4.681","" +"0","50.25406504065041","65.14227642276423","1697745701.769","4.689","" +"0","50.05081300813008","65.14227642276423","1697745701.778","4.698","" +"0","49.89837398373984","65.14227642276423","1697745701.786","4.706","" +"0","49.74593495934959","65.14227642276423","1697745701.794","4.714","" +"0","49.542682926829265","65.14227642276423","1697745701.803","4.723","" +"0","49.390243902439025","65.14227642276423","1697745701.811","4.731","" +"0","49.1869918699187","65.1930894308943","1697745701.819","4.739","" +"0","48.983739837398375","65.1930894308943","1697745701.828","4.748","" +"0","48.831300813008134","65.1930894308943","1697745701.836","4.756","" +"0","48.6280487804878","65.1930894308943","1697745701.844","4.764","" +"0","48.47560975609756","65.1930894308943","1697745701.853","4.773","" +"0","48.27235772357724","65.1930894308943","1697745701.861","4.781","" +"0","48.11991869918699","65.1930894308943","1697745701.869","4.789","" +"0","47.91666666666667","65.1930894308943","1697745701.878","4.798","" +"0","47.764227642276424","65.1930894308943","1697745701.886","4.806","" +"0","47.5609756097561","65.1930894308943","1697745701.894","4.814","" +"0","47.357723577235774","65.1930894308943","1697745701.903","4.823","" +"0","47.15447154471545","65.1930894308943","1697745701.911","4.831","" +"0","46.95121951219512","65.1930894308943","1697745701.919","4.839","" +"0","46.697154471544714","65.14227642276423","1697745701.928","4.848","" +"0","46.493902439024396","65.14227642276423","1697745701.936","4.856","" +"0","46.239837398373986","65.09146341463415","1697745701.944","4.864","" +"0","45.985772357723576","64.989837398374","1697745701.953","4.873","" +"0","45.78252032520325","64.9390243902439","1697745701.961","4.881","" +"0","45.52845528455284","64.83739837398375","1697745701.97","4.89","" +"0","45.32520325203252","64.78658536585365","1697745701.978","4.898","" +"0","45.1219512195122","64.6849593495935","1697745701.986","4.906","" +"0","44.918699186991866","64.6341463414634","1697745701.994","4.914","" +"0","44.66463414634146","64.53252032520325","1697745702.003","4.923","" +"0","44.46138211382114","64.4308943089431","1697745702.011","4.931","" +"0","44.25813008130081","64.380081300813","1697745702.02","4.94","" +"0","44.05487804878049","64.27845528455285","1697745702.028","4.948","" +"0","43.80081300813008","64.17682926829269","1697745702.036","4.956","" +"0","43.59756097560975","64.07520325203252","1697745702.045","4.965","" +"0","43.394308943089435","63.97357723577235","1697745702.053","4.973","" +"0","43.1910569105691","63.8719512195122","1697745702.061","4.981","" +"0","42.98780487804878","63.77032520325203","1697745702.07","4.99","" +"0","42.78455284552846","63.668699186991866","1697745702.078","4.998","" +"0","42.581300813008134","63.56707317073171","1697745702.086","5.006","" +"0","42.3780487804878","63.46544715447154","1697745702.095","5.015","" +"0","42.22560975609756","63.41463414634146","1697745702.103","5.023","" +"0","42.02235772357724","63.3130081300813","1697745702.111","5.031","" +"0","41.81910569105691","63.21138211382114","1697745702.12","5.04","" +"0","41.66666666666667","63.109756097560975","1697745702.128","5.048","" +"0","41.46341463414634","63.00813008130081","1697745702.136","5.056","" +"0","41.260162601626014","62.90650406504065","1697745702.145","5.065","" +"0","41.107723577235774","62.80487804878049","1697745702.153","5.073","" +"0","40.90447154471545","62.703252032520325","1697745702.161","5.081","" +"0","40.7520325203252","62.60162601626016","1697745702.17","5.09","" +"0","40.54878048780488","62.55081300813008","1697745702.178","5.098","" +"0","40.396341463414636","62.44918699186992","1697745702.186","5.106","" +"0","40.243902439024396","62.34756097560975","1697745702.195","5.115","" +"0","40.040650406504064","62.296747967479675","1697745702.203","5.123","" +"0","39.888211382113816","62.19512195121951","1697745702.211","5.131","" +"0","39.735772357723576","62.09349593495935","1697745702.22","5.14","" +"0","39.53252032520325","61.99186991869919","1697745702.228","5.148","" +"0","39.38008130081301","61.890243902439025","1697745702.236","5.156","" +"0","39.22764227642276","61.78861788617886","1697745702.244","5.164","" +"0","39.02439024390244","61.636178861788615","1697745702.253","5.173","" +"0","38.8719512195122","61.483739837398375","1697745702.261","5.181","" +"0","38.71951219512195","61.331300813008134","1697745702.27","5.19","" +"0","38.56707317073171","61.22967479674797","1697745702.278","5.198","" +"0","38.41463414634146","61.077235772357724","1697745702.286","5.206","" +"0","38.26219512195122","60.92479674796748","1697745702.295","5.215","" +"0","38.16056910569105","60.823170731707314","1697745702.303","5.223","" +"0","38.00813008130081","60.670731707317074","1697745702.311","5.231","" +"0","37.855691056910565","60.51829268292683","1697745702.32","5.24","" +"0","37.703252032520325","60.41666666666667","1697745702.328","5.248","" +"0","37.55081300813008","60.264227642276424","1697745702.336","5.256","" +"0","37.39837398373984","60.111788617886184","1697745702.345","5.265","" +"0","37.296747967479675","60.010162601626014","1697745702.353","5.273","" +"0","37.19512195121951","59.857723577235774","1697745702.361","5.281","" +"0","37.042682926829265","59.756097560975604","1697745702.37","5.29","" +"0","36.99186991869919","59.65447154471545","1697745702.378","5.298","" +"0","36.890243902439025","59.552845528455286","1697745702.386","5.306","" +"0","36.78861788617886","59.40040650406504","1697745702.395","5.315","" +"0","36.73780487804878","59.29878048780488","1697745702.403","5.323","" +"0","36.636178861788615","59.197154471544714","1697745702.411","5.331","" +"0","36.53455284552846","59.04471544715447","1697745702.42","5.34","" +"0","36.43292682926829","58.94308943089431","1697745702.428","5.348","" +"0","36.28048780487805","58.84146341463415","1697745702.436","5.356","" +"0","36.17886178861789","58.6890243902439","1697745702.445","5.365","" +"0","36.077235772357724","58.58739837398374","1697745702.453","5.373","" +"0","35.97560975609756","58.485772357723576","1697745702.461","5.381","" +"0","35.8739837398374","58.38414634146341","1697745702.47","5.39","" +"0","35.823170731707314","58.28252032520325","1697745702.478","5.398","" +"0","35.72154471544716","58.18089430894309","1697745702.486","5.406","" +"0","35.670731707317074","58.079268292682926","1697745702.495","5.415","" +"0","35.56910569105691","57.97764227642276","1697745702.503","5.423","" +"0","35.51829268292683","57.82520325203252","1697745702.511","5.431","" +"0","35.46747967479675","57.72357723577235","1697745702.52","5.44","" +"0","35.41666666666667","57.57113821138211","1697745702.528","5.448","" +"0","35.3150406504065","57.418699186991866","1697745702.536","5.456","" +"0","35.21341463414634","57.266260162601625","1697745702.545","5.465","" +"0","35.16260162601626","57.113821138211385","1697745702.553","5.473","" +"0","35.0609756097561","56.96138211382114","1697745702.562","5.482","" +"0","34.959349593495936","56.75813008130081","1697745702.57","5.49","" +"0","34.857723577235774","56.605691056910565","1697745702.578","5.498","" +"0","34.756097560975604","56.40243902439025","1697745702.586","5.506","" +"0","34.65447154471545","56.25","1697745702.595","5.515","" +"0","34.603658536585364","56.046747967479675","1697745702.603","5.523","" +"0","34.5020325203252","55.894308943089435","1697745702.612","5.532","" +"0","34.40040650406504","55.74186991869919","1697745702.62","5.54","" +"0","34.34959349593496","55.58943089430895","1697745702.628","5.548","" +"0","34.29878048780488","55.4369918699187","1697745702.637","5.557","" +"0","34.2479674796748","55.28455284552846","1697745702.645","5.565","" +"0","34.197154471544714","55.13211382113821","1697745702.653","5.573","" +"0","34.146341463414636","54.97967479674797","1697745702.662","5.582","" +"0","34.04471544715447","54.827235772357724","1697745702.67","5.59","" +"0","34.04471544715447","54.67479674796748","1697745702.678","5.598","" +"0","33.993902439024396","54.573170731707314","1697745702.687","5.607","" +"0","33.94308943089431","54.420731707317074","1697745702.695","5.615","" +"0","33.892276422764226","54.31910569105691","1697745702.703","5.623","" +"0","33.84146341463415","54.16666666666667","1697745702.711","5.631","" +"0","33.84146341463415","54.0650406504065","1697745702.72","5.64","" +"0","33.790650406504064","54.014227642276424","1697745702.728","5.648","" +"0","33.790650406504064","53.91260162601626","1697745702.737","5.657","" +"0","33.790650406504064","53.8109756097561","1697745702.745","5.665","" +"0","33.739837398373986","53.760162601626014","1697745702.753","5.673","" +"0","33.739837398373986","53.65853658536585","1697745702.762","5.682","" +"0","33.6890243902439","53.55691056910569","1697745702.77","5.69","" +"0","33.6890243902439","53.45528455284553","1697745702.778","5.698","" +"0","33.638211382113816","53.353658536585364","1697745702.786","5.706","" +"0","33.58739837398374","53.20121951219512","1697745702.795","5.715","" +"0","33.58739837398374","53.09959349593496","1697745702.803","5.723","" +"0","33.53658536585366","52.9979674796748","1697745702.812","5.732","" +"0","33.485772357723576","52.84552845528455","1697745702.82","5.74","" +"0","33.4349593495935","52.743902439024396","1697745702.828","5.748","" +"0","33.38414634146341","52.642276422764226","1697745702.837","5.757","" +"0","33.33333333333333","52.540650406504064","1697745702.845","5.765","" +"0","33.33333333333333","52.388211382113816","1697745702.853","5.773","" +"0","33.28252032520325","52.28658536585366","1697745702.862","5.782","" +"0","33.23170731707317","52.1849593495935","1697745702.87","5.79","" +"0","33.23170731707317","52.08333333333333","1697745702.878","5.798","" +"0","33.18089430894309","51.93089430894309","1697745702.887","5.807","" +"0","33.13008130081301","51.829268292682926","1697745702.895","5.815","" +"0","33.13008130081301","51.72764227642276","1697745702.903","5.823","" +"0","33.079268292682926","51.57520325203252","1697745702.912","5.832","" +"0","33.02845528455284","51.47357723577235","1697745702.92","5.84","" +"0","32.97764227642276","51.3719512195122","1697745702.928","5.848","" +"0","32.926829268292686","51.27032520325203","1697745702.937","5.857","" +"0","32.926829268292686","51.168699186991866","1697745702.945","5.865","" +"0","32.8760162601626","51.06707317073171","1697745702.953","5.873","" +"0","32.82520325203252","50.96544715447154","1697745702.962","5.882","" +"0","32.77439024390244","50.91463414634146","1697745702.97","5.89","" +"0","32.77439024390244","50.8130081300813","1697745702.978","5.898","" +"0","32.72357723577235","50.76219512195122","1697745702.987","5.907","" +"0","32.72357723577235","50.71138211382114","1697745702.995","5.915","" +"0","32.72357723577235","50.609756097560975","1697745703.003","5.923","" +"0","32.72357723577235","50.5589430894309","1697745703.012","5.932","" +"0","32.72357723577235","50.50813008130081","1697745703.02","5.94","" +"0","32.72357723577235","50.40650406504065","1697745703.028","5.948","" +"0","32.72357723577235","50.355691056910565","1697745703.037","5.957","" +"0","32.672764227642276","50.25406504065041","1697745703.045","5.965","" +"0","32.672764227642276","50.15243902439025","1697745703.053","5.973","" +"0","32.672764227642276","50.10162601626016","1697745703.062","5.982","" +"0","32.672764227642276","50","1697745703.07","5.99","" +"0","32.6219512195122","49.898373983739845","1697745703.078","5.998","" +"0","32.6219512195122","49.79674796747967","1697745703.087","6.007","" +"0","32.57113821138211","49.69512195121951","1697745703.095","6.015","" +"0","32.57113821138211","49.644308943089435","1697745703.103","6.023","" +"0","32.52032520325203","49.54268292682927","1697745703.112","6.032","" +"0","32.52032520325203","49.4410569105691","1697745703.12","6.04","" +"0","32.46951219512195","49.33943089430895","1697745703.128","6.048","" +"0","32.46951219512195","49.237804878048784","1697745703.137","6.057","" +"0","32.46951219512195","49.136178861788615","1697745703.145","6.065","" +"0","32.418699186991866","49.03455284552846","1697745703.153","6.073","" +"0","32.418699186991866","48.9329268292683","1697745703.162","6.082","" +"0","32.418699186991866","48.83130081300813","1697745703.17","6.09","" +"0","32.418699186991866","48.72967479674797","1697745703.178","6.098","" +"0","32.418699186991866","48.62804878048781","1697745703.187","6.107","" +"0","32.418699186991866","48.52642276422764","1697745703.195","6.115","" +"0","32.418699186991866","48.42479674796748","1697745703.204","6.124","" +"0","32.418699186991866","48.32317073170732","1697745703.212","6.132","" +"0","32.418699186991866","48.22154471544715","1697745703.22","6.14","" +"0","32.418699186991866","48.11991869918699","1697745703.228","6.148","" +"0","32.418699186991866","48.018292682926834","1697745703.237","6.157","" +"0","32.418699186991866","47.916666666666664","1697745703.245","6.165","" +"0","32.418699186991866","47.8150406504065","1697745703.253","6.173","" +"0","32.46951219512195","47.713414634146346","1697745703.262","6.182","" +"0","32.46951219512195","47.61178861788618","1697745703.27","6.19","" +"0","32.46951219512195","47.510162601626014","1697745703.278","6.198","" +"0","32.52032520325203","47.357723577235774","1697745703.287","6.207","" +"0","32.52032520325203","47.256097560975604","1697745703.295","6.215","" +"0","32.52032520325203","47.15447154471545","1697745703.303","6.223","" +"0","32.57113821138211","47.052845528455286","1697745703.312","6.232","" +"0","32.57113821138211","46.95121951219512","1697745703.32","6.24","" +"0","32.57113821138211","46.84959349593496","1697745703.329","6.249","" +"0","32.6219512195122","46.7479674796748","1697745703.337","6.257","" +"0","32.6219512195122","46.64634146341463","1697745703.345","6.265","" +"0","32.6219512195122","46.493902439024396","1697745703.353","6.273","" +"0","32.672764227642276","46.392276422764226","1697745703.362","6.282","" +"0","32.672764227642276","46.290650406504064","1697745703.37","6.29","" +"0","32.72357723577235","46.1890243902439","1697745703.378","6.298","" +"0","32.72357723577235","46.08739837398373","1697745703.387","6.307","" +"0","32.77439024390244","45.985772357723576","1697745703.395","6.315","" +"0","32.77439024390244","45.833333333333336","1697745703.404","6.324","" +"0","32.82520325203252","45.78252032520326","1697745703.412","6.332","" +"0","32.82520325203252","45.68089430894309","1697745703.42","6.34","" +"0","32.82520325203252","45.579268292682926","1697745703.429","6.349","" +"0","32.8760162601626","45.47764227642277","1697745703.437","6.357","" +"0","32.8760162601626","45.3760162601626","1697745703.445","6.365","" +"0","32.926829268292686","45.27439024390244","1697745703.454","6.374","" +"0","32.97764227642276","45.22357723577236","1697745703.462","6.382","" +"0","33.02845528455284","45.12195121951219","1697745703.47","6.39","" +"0","33.079268292682926","45.02032520325203","1697745703.479","6.399","" +"0","33.13008130081301","44.96951219512195","1697745703.487","6.407","" +"0","33.13008130081301","44.867886178861795","1697745703.495","6.415","" +"0","33.18089430894309","44.766260162601625","1697745703.504","6.424","" +"0","33.28252032520325","44.71544715447154","1697745703.512","6.432","" +"0","33.28252032520325","44.613821138211385","1697745703.52","6.44","" +"0","33.38414634146341","44.512195121951216","1697745703.529","6.449","" +"0","33.38414634146341","44.41056910569105","1697745703.537","6.457","" +"0","33.485772357723576","44.3089430894309","1697745703.545","6.465","" +"0","33.53658536585366","44.20731707317073","1697745703.554","6.474","" +"0","33.53658536585366","44.105691056910565","1697745703.562","6.482","" +"0","33.58739837398374","44.00406504065041","1697745703.57","6.49","" +"0","33.638211382113816","43.90243902439024","1697745703.579","6.499","" +"0","33.6890243902439","43.75","1697745703.587","6.507","" +"0","33.739837398373986","43.648373983739845","1697745703.595","6.515","" +"0","33.790650406504064","43.54674796747967","1697745703.604","6.524","" +"0","33.84146341463415","43.44512195121951","1697745703.612","6.532","" +"0","33.892276422764226","43.29268292682927","1697745703.62","6.54","" +"0","33.94308943089431","43.140243902439025","1697745703.629","6.549","" +"0","34.04471544715447","43.03861788617886","1697745703.637","6.557","" +"0","34.09552845528455","42.886178861788615","1697745703.645","6.565","" +"0","34.146341463414636","42.78455284552846","1697745703.653","6.573","" +"0","34.197154471544714","42.632113821138205","1697745703.662","6.582","" +"0","34.2479674796748","42.53048780487805","1697745703.67","6.59","" +"0","34.29878048780488","42.42886178861789","1697745703.678","6.598","" +"0","34.34959349593496","42.32723577235772","1697745703.687","6.607","" +"0","34.45121951219512","42.22560975609756","1697745703.696","6.616","" +"0","34.5020325203252","42.1239837398374","1697745703.704","6.624","" +"0","34.552845528455286","42.02235772357723","1697745703.712","6.632","" +"0","34.603658536585364","41.97154471544715","1697745703.72","6.64","" +"0","34.70528455284553","41.86991869918699","1697745703.729","6.649","" +"0","34.756097560975604","41.768292682926834","1697745703.737","6.657","" +"0","34.80691056910569","41.666666666666664","1697745703.745","6.665","" +"0","34.857723577235774","41.5650406504065","1697745703.754","6.674","" +"0","34.90853658536585","41.463414634146346","1697745703.762","6.682","" +"0","34.959349593495936","41.36178861788618","1697745703.77","6.69","" +"0","34.959349593495936","41.260162601626014","1697745703.779","6.699","" +"0","35.010162601626014","41.15853658536586","1697745703.787","6.707","" +"0","35.010162601626014","41.05691056910569","1697745703.796","6.716","" +"0","35.010162601626014","40.95528455284553","1697745703.804","6.724","" +"0","35.010162601626014","40.85365853658537","1697745703.812","6.732","" +"0","35.0609756097561","40.802845528455286","1697745703.821","6.741","" +"0","35.0609756097561","40.70121951219512","1697745703.829","6.749","" +"0","35.0609756097561","40.59959349593496","1697745703.837","6.757","" +"0","35.0609756097561","40.54878048780488","1697745703.846","6.766","" +"0","35.111788617886184","40.447154471544714","1697745703.854","6.774","" +"0","35.16260162601626","40.39634146341463","1697745703.862","6.782","" +"0","35.21341463414634","40.34552845528455","1697745703.871","6.791","" +"0","35.264227642276424","40.243902439024396","1697745703.879","6.799","" +"0","35.3150406504065","40.19308943089431","1697745703.887","6.807","" +"0","35.36585365853659","40.142276422764226","1697745703.896","6.816","" +"0","35.41666666666667","40.040650406504064","1697745703.904","6.824","" +"0","35.46747967479675","39.9390243902439","1697745703.912","6.832","" +"0","35.51829268292683","39.83739837398373","1697745703.921","6.841","" +"0","35.61991869918699","39.735772357723576","1697745703.929","6.849","" +"0","35.670731707317074","39.6849593495935","1697745703.937","6.857","" +"0","35.72154471544716","39.583333333333336","1697745703.946","6.866","" +"0","35.77235772357724","39.481707317073166","1697745703.954","6.874","" +"0","35.823170731707314","39.43089430894309","1697745703.962","6.882","" +"0","35.8739837398374","39.329268292682926","1697745703.971","6.891","" +"0","35.92479674796748","39.27845528455285","1697745703.979","6.899","" +"0","35.97560975609756","39.22764227642277","1697745703.987","6.907","" +"0","36.02642276422765","39.1260162601626","1697745703.996","6.916","" +"0","36.077235772357724","39.07520325203252","1697745704.004","6.924","" +"0","36.077235772357724","39.02439024390244","1697745704.012","6.932","" +"0","36.1280487804878","38.97357723577236","1697745704.021","6.941","" +"0","36.17886178861789","38.92276422764228","1697745704.029","6.949","" +"0","36.22967479674797","38.82113821138211","1697745704.037","6.957","" +"0","36.28048780487805","38.77032520325203","1697745704.046","6.966","" +"0","36.28048780487805","38.66869918699187","1697745704.054","6.974","" +"0","36.331300813008134","38.617886178861795","1697745704.062","6.982","" +"0","36.38211382113821","38.516260162601625","1697745704.071","6.991","" +"0","36.38211382113821","38.46544715447154","1697745704.079","6.999","" +"0","36.43292682926829","38.363821138211385","1697745704.087","7.007","" +"0","36.483739837398375","38.262195121951216","1697745704.096","7.016","" +"0","36.483739837398375","38.21138211382114","1697745704.104","7.024","" +"0","36.53455284552846","38.109756097560975","1697745704.112","7.032","" +"0","36.58536585365854","38.0589430894309","1697745704.121","7.041","" +"0","36.636178861788615","37.95731707317073","1697745704.129","7.049","" +"0","36.6869918699187","37.90650406504065","1697745704.137","7.057","" +"0","36.73780487804878","37.80487804878049","1697745704.146","7.066","" +"0","36.83943089430895","37.75406504065041","1697745704.154","7.074","" +"0","36.890243902439025","37.70325203252033","1697745704.162","7.082","" +"0","37.042682926829265","37.601626016260155","1697745704.171","7.091","" +"0","37.144308943089435","37.55081300813008","1697745704.179","7.099","" +"0","37.24593495934959","37.5","1697745704.187","7.107","" +"0","37.39837398373984","37.398373983739845","1697745704.196","7.116","" +"0","37.5","37.34756097560976","1697745704.204","7.124","" +"0","37.65243902439025","37.29674796747967","1697745704.212","7.132","" +"0","37.80487804878049","37.24593495934959","1697745704.221","7.141","" +"0","37.957317073170735","37.19512195121951","1697745704.229","7.149","" +"0","38.109756097560975","37.144308943089435","1697745704.237","7.157","" +"0","38.21138211382114","37.09349593495935","1697745704.246","7.166","" +"0","38.363821138211385","37.04268292682927","1697745704.254","7.174","" +"0","38.516260162601625","36.99186991869918","1697745704.262","7.182","" +"0","38.61788617886179","36.9410569105691","1697745704.271","7.191","" +"0","38.71951219512195","36.890243902439025","1697745704.279","7.199","" +"0","38.82113821138211","36.83943089430895","1697745704.287","7.207","" +"0","38.922764227642276","36.737804878048784","1697745704.296","7.216","" +"0","38.97357723577235","36.68699186991869","1697745704.304","7.224","" +"0","39.07520325203252","36.58536585365854","1697745704.312","7.232","" +"0","39.1260162601626","36.483739837398375","1697745704.321","7.241","" +"0","39.22764227642276","36.4329268292683","1697745704.329","7.249","" +"0","39.27845528455284","36.33130081300813","1697745704.338","7.258","" +"0","39.38008130081301","36.28048780487805","1697745704.346","7.266","" +"0","39.48170731707317","36.22967479674797","1697745704.354","7.274","" +"0","39.58333333333333","36.12804878048781","1697745704.363","7.283","" +"0","39.6849593495935","36.07723577235772","1697745704.371","7.291","" +"0","39.78658536585366","36.02642276422764","1697745704.379","7.299","" +"0","39.888211382113816","35.92479674796748","1697745704.388","7.308","" +"0","39.989837398373986","35.8739837398374","1697745704.396","7.316","" +"0","40.09146341463415","35.82317073170732","1697745704.404","7.324","" +"0","40.19308943089431","35.72154471544715","1697745704.413","7.333","" +"0","40.29471544715447","35.670731707317074","1697745704.421","7.341","" +"0","40.396341463414636","35.619918699187","1697745704.429","7.349","" +"0","40.4979674796748","35.51829268292683","1697745704.438","7.358","" +"0","40.65040650406504","35.41666666666666","1697745704.446","7.366","" +"0","40.7520325203252","35.36585365853658","1697745704.454","7.374","" +"0","40.853658536585364","35.264227642276424","1697745704.463","7.383","" +"0","40.95528455284553","35.16260162601627","1697745704.471","7.391","" +"0","41.05691056910569","35.0609756097561","1697745704.479","7.399","" +"0","41.15853658536585","35.01016260162602","1697745704.488","7.408","" +"0","41.260162601626014","34.90853658536585","1697745704.496","7.416","" +"0","41.3109756097561","34.80691056910568","1697745704.504","7.424","" +"0","41.41260162601626","34.70528455284553","1697745704.513","7.433","" +"0","41.514227642276424","34.60365853658537","1697745704.521","7.441","" +"0","41.61585365853659","34.5020325203252","1697745704.529","7.449","" +"0","41.66666666666667","34.400406504065046","1697745704.538","7.458","" +"0","41.76829268292683","34.298780487804876","1697745704.546","7.466","" +"0","41.81910569105691","34.19715447154471","1697745704.554","7.474","" +"0","41.920731707317074","34.09552845528455","1697745704.563","7.483","" +"0","41.97154471544716","34.04471544715447","1697745704.571","7.491","" +"0","42.073170731707314","33.94308943089432","1697745704.579","7.499","" +"0","42.17479674796748","33.84146341463415","1697745704.588","7.508","" +"0","42.22560975609756","33.79065040650406","1697745704.596","7.516","" +"0","42.327235772357724","33.6890243902439","1697745704.604","7.524","" +"0","42.42886178861789","33.63821138211382","1697745704.613","7.533","" +"0","42.53048780487805","33.536585365853654","1697745704.621","7.541","" +"0","42.63211382113821","33.485772357723576","1697745704.629","7.549","" +"0","42.733739837398375","33.38414634146342","1697745704.638","7.558","" +"0","42.83536585365854","33.33333333333334","1697745704.646","7.566","" +"0","42.9369918699187","33.28252032520325","1697745704.654","7.574","" +"0","43.03861788617886","33.28252032520325","1697745704.663","7.583","" +"0","43.140243902439025","33.23170731707317","1697745704.671","7.591","" +"0","43.24186991869919","33.18089430894308","1697745704.679","7.599","" +"0","43.34349593495935","33.18089430894308","1697745704.688","7.608","" +"0","43.44512195121951","33.18089430894308","1697745704.696","7.616","" +"0","43.49593495934959","33.130081300813","1697745704.704","7.624","" +"0","43.59756097560975","33.130081300813","1697745704.713","7.633","" +"0","43.64837398373984","33.079268292682926","1697745704.721","7.641","" +"0","43.75","33.079268292682926","1697745704.729","7.649","" +"0","43.80081300813008","33.079268292682926","1697745704.738","7.658","" +"0","43.85162601626016","33.079268292682926","1697745704.746","7.666","" +"0","43.90243902439025","33.02845528455285","1697745704.755","7.675","" +"0","43.953252032520325","33.02845528455285","1697745704.763","7.683","" +"0","44.00406504065041","33.02845528455285","1697745704.771","7.691","" +"0","44.00406504065041","33.02845528455285","1697745704.779","7.699","" +"0","44.105691056910565","33.02845528455285","1697745704.788","7.708","" +"0","44.15650406504065","32.97764227642277","1697745704.796","7.716","" +"0","44.207317073170735","32.97764227642277","1697745704.804","7.724","" +"0","44.25813008130081","32.97764227642277","1697745704.813","7.733","" +"0","44.3089430894309","32.92682926829268","1697745704.821","7.741","" +"0","44.41056910569105","32.92682926829268","1697745704.83","7.75","" +"0","44.46138211382114","32.92682926829268","1697745704.838","7.758","" +"0","44.5630081300813","32.8760162601626","1697745704.846","7.766","" +"0","44.613821138211385","32.8760162601626","1697745704.854","7.774","" +"0","44.71544715447154","32.8760162601626","1697745704.863","7.783","" +"0","44.81707317073171","32.82520325203252","1697745704.871","7.791","" +"0","44.86788617886179","32.82520325203252","1697745704.879","7.799","" +"0","44.96951219512195","32.82520325203252","1697745704.888","7.808","" +"0","45.07113821138211","32.774390243902445","1697745704.896","7.816","" +"0","45.172764227642276","32.774390243902445","1697745704.905","7.825","" +"0","45.27439024390244","32.774390243902445","1697745704.913","7.833","" +"0","45.3760162601626","32.72357723577237","1697745704.921","7.841","" +"0","45.47764227642276","32.72357723577237","1697745704.929","7.849","" +"0","45.579268292682926","32.672764227642276","1697745704.938","7.858","" +"0","45.63008130081301","32.672764227642276","1697745704.946","7.866","" +"0","45.73170731707317","32.6219512195122","1697745704.955","7.875","" +"0","45.83333333333333","32.571138211382106","1697745704.963","7.883","" +"0","45.88414634146341","32.571138211382106","1697745704.971","7.891","" +"0","45.985772357723576","32.52032520325203","1697745704.98","7.9","" +"0","46.03658536585366","32.46951219512195","1697745704.988","7.908","" +"0","46.08739837398374","32.46951219512195","1697745704.996","7.916","" +"0","46.1890243902439","32.41869918699187","1697745705.005","7.925","" +"0","46.239837398373986","32.41869918699187","1697745705.013","7.933","" +"0","46.290650406504064","32.367886178861795","1697745705.021","7.941","" +"0","46.34146341463415","32.367886178861795","1697745705.03","7.95","" +"0","46.392276422764226","32.3170731707317","1697745705.038","7.958","" +"0","46.493902439024396","32.3170731707317","1697745705.046","7.966","" +"0","46.54471544715447","32.3170731707317","1697745705.054","7.974","" +"0","46.59552845528455","32.266260162601625","1697745705.063","7.983","" +"0","46.646341463414636","32.266260162601625","1697745705.071","7.991","" +"0","46.697154471544714","32.266260162601625","1697745705.08","8","" +"0","46.79878048780488","32.21544715447155","1697745705.088","8.008","" +"0","46.84959349593496","32.21544715447155","1697745705.096","8.016","" +"0","46.95121951219512","32.21544715447155","1697745705.105","8.025","" +"0","47.0020325203252","32.21544715447155","1697745705.113","8.033","" +"0","47.052845528455286","32.16463414634147","1697745705.121","8.041","" +"0","47.15447154471545","32.16463414634147","1697745705.13","8.05","" +"0","47.20528455284553","32.16463414634147","1697745705.138","8.058","" +"0","47.256097560975604","32.16463414634147","1697745705.146","8.066","" +"0","47.30691056910569","32.16463414634147","1697745705.155","8.075","" +"0","47.357723577235774","32.11382113821138","1697745705.163","8.083","" +"0","47.40853658536585","32.11382113821138","1697745705.171","8.091","" +"0","47.459349593495936","32.11382113821138","1697745705.18","8.1","" +"0","47.510162601626014","32.11382113821138","1697745705.188","8.108","" +"0","47.5609756097561","32.0630081300813","1697745705.196","8.116","" +"0","47.611788617886184","32.0630081300813","1697745705.205","8.125","" +"0","47.66260162601626","32.0630081300813","1697745705.213","8.133","" +"0","47.71341463414634","32.0630081300813","1697745705.221","8.141","" +"0","47.764227642276424","32.01219512195121","1697745705.23","8.15","" +"0","47.8150406504065","32.01219512195121","1697745705.238","8.158","" +"0","47.8150406504065","32.01219512195121","1697745705.246","8.166","" +"0","47.86585365853659","32.01219512195121","1697745705.255","8.175","" +"0","47.91666666666667","31.96138211382113","1697745705.263","8.183","" +"0","47.96747967479675","31.96138211382113","1697745705.271","8.191","" +"0","48.01829268292683","31.96138211382113","1697745705.28","8.2","" +"0","48.06910569105691","31.96138211382113","1697745705.288","8.208","" +"0","48.06910569105691","31.910569105691053","1697745705.296","8.216","" +"0","48.170731707317074","31.910569105691053","1697745705.305","8.225","" +"0","48.170731707317074","31.910569105691053","1697745705.313","8.233","" +"0","48.22154471544716","31.859756097560975","1697745705.321","8.241","" +"0","48.27235772357724","31.859756097560975","1697745705.33","8.25","" +"0","48.3739837398374","31.859756097560975","1697745705.338","8.258","" +"0","48.42479674796748","31.859756097560975","1697745705.346","8.266","" +"0","48.47560975609756","31.808943089430898","1697745705.355","8.275","" +"0","48.577235772357724","31.808943089430898","1697745705.363","8.283","" +"0","48.6280487804878","31.808943089430898","1697745705.371","8.291","" +"0","48.72967479674797","31.808943089430898","1697745705.38","8.3","" +"0","48.78048780487805","31.808943089430898","1697745705.388","8.308","" +"0","48.88211382113821","31.808943089430898","1697745705.396","8.316","" +"0","48.983739837398375","31.808943089430898","1697745705.405","8.325","" +"0","49.08536585365854","31.75813008130082","1697745705.413","8.333","" +"0","49.1869918699187","31.75813008130082","1697745705.421","8.341","" +"0","49.28861788617886","31.75813008130082","1697745705.43","8.35","" +"0","49.390243902439025","31.75813008130082","1697745705.438","8.358","" +"0","49.49186991869919","31.75813008130082","1697745705.446","8.366","" +"0","49.59349593495935","31.75813008130082","1697745705.455","8.375","" +"0","49.74593495934959","31.75813008130082","1697745705.463","8.383","" +"0","49.84756097560975","31.75813008130082","1697745705.472","8.392","" +"0","50","31.75813008130082","1697745705.48","8.4","" +"0","50.15243902439024","31.75813008130082","1697745705.488","8.408","" +"0","50.30487804878049","31.75813008130082","1697745705.496","8.416","" +"0","50.45731707317073","31.808943089430898","1697745705.505","8.425","" +"0","50.609756097560975","31.808943089430898","1697745705.513","8.433","" +"0","50.762195121951216","31.808943089430898","1697745705.522","8.442","" +"0","50.96544715447154","31.808943089430898","1697745705.53","8.45","" +"0","51.117886178861795","31.859756097560975","1697745705.538","8.458","" +"0","51.32113821138211","31.859756097560975","1697745705.547","8.467","" +"0","51.52439024390244","31.910569105691053","1697745705.555","8.475","" +"0","51.72764227642277","31.910569105691053","1697745705.563","8.483","" +"0","51.93089430894309","31.910569105691053","1697745705.572","8.492","" +"0","52.13414634146341","31.96138211382113","1697745705.58","8.5","" +"0","52.33739837398373","31.96138211382113","1697745705.588","8.508","" +"0","52.540650406504064","32.01219512195121","1697745705.597","8.517","" +"0","52.743902439024396","32.01219512195121","1697745705.605","8.525","" +"0","52.89634146341463","32.01219512195121","1697745705.613","8.533","" +"0","53.04878048780488","32.0630081300813","1697745705.622","8.542","" +"0","53.20121951219512","32.0630081300813","1697745705.63","8.55","" +"0","53.35365853658537","32.0630081300813","1697745705.638","8.558","" +"0","53.506097560975604","32.11382113821138","1697745705.647","8.567","" +"0","53.65853658536586","32.11382113821138","1697745705.655","8.575","" +"0","53.8109756097561","32.16463414634147","1697745705.663","8.583","" +"0","53.963414634146346","32.16463414634147","1697745705.672","8.592","" +"0","54.11585365853659","32.21544715447155","1697745705.68","8.6","" +"0","54.268292682926834","32.266260162601625","1697745705.688","8.608","" +"0","54.420731707317074","32.266260162601625","1697745705.697","8.617","" +"0","54.52235772357723","32.3170731707317","1697745705.705","8.625","" +"0","54.67479674796748","32.367886178861795","1697745705.713","8.633","" +"0","54.82723577235772","32.41869918699187","1697745705.722","8.642","" +"0","54.92886178861789","32.46951219512195","1697745705.73","8.65","" +"0","55.08130081300813","32.46951219512195","1697745705.738","8.658","" +"0","55.1829268292683","32.52032520325203","1697745705.747","8.667","" +"0","55.28455284552846","32.571138211382106","1697745705.755","8.675","" +"0","55.386178861788615","32.571138211382106","1697745705.763","8.683","" +"0","55.43699186991869","32.6219512195122","1697745705.772","8.692","" +"0","55.53861788617886","32.6219512195122","1697745705.78","8.7","" +"0","55.640243902439025","32.672764227642276","1697745705.788","8.708","" +"0","55.74186991869918","32.672764227642276","1697745705.797","8.717","" +"0","55.79268292682927","32.672764227642276","1697745705.805","8.725","" +"0","55.894308943089435","32.72357723577237","1697745705.813","8.733","" +"0","55.99593495934959","32.72357723577237","1697745705.822","8.742","" +"0","56.09756097560976","32.72357723577237","1697745705.83","8.75","" +"0","56.19918699186992","32.72357723577237","1697745705.838","8.758","" +"0","56.30081300813008","32.72357723577237","1697745705.847","8.767","" +"0","56.40243902439024","32.72357723577237","1697745705.855","8.775","" +"0","56.50406504065041","32.774390243902445","1697745705.863","8.783","" +"0","56.605691056910565","32.774390243902445","1697745705.872","8.792","" +"0","56.75813008130082","32.82520325203252","1697745705.88","8.8","" +"0","56.859756097560975","32.82520325203252","1697745705.888","8.808","" +"0","57.012195121951216","32.8760162601626","1697745705.897","8.817","" +"0","57.113821138211385","32.92682926829268","1697745705.905","8.825","" +"0","57.266260162601625","32.92682926829268","1697745705.913","8.833","" +"0","57.367886178861795","32.97764227642277","1697745705.922","8.842","" +"0","57.52032520325203","33.02845528455285","1697745705.93","8.85","" +"0","57.67276422764228","33.079268292682926","1697745705.938","8.858","" +"0","57.82520325203252","33.130081300813","1697745705.947","8.867","" +"0","57.97764227642277","33.18089430894308","1697745705.955","8.875","" +"0","58.13008130081301","33.23170731707317","1697745705.963","8.883","" +"0","58.333333333333336","33.28252032520325","1697745705.972","8.892","" +"0","58.485772357723576","33.28252032520325","1697745705.98","8.9","" +"0","58.63821138211382","33.33333333333334","1697745705.988","8.908","" +"0","58.790650406504064","33.38414634146342","1697745705.997","8.917","" +"0","58.993902439024396","33.4349593495935","1697745706.005","8.925","" +"0","59.14634146341463","33.485772357723576","1697745706.013","8.933","" +"0","59.29878048780488","33.536585365853654","1697745706.022","8.942","" +"0","59.45121951219512","33.63821138211382","1697745706.03","8.95","" +"0","59.65447154471545","33.6890243902439","1697745706.038","8.958","" +"0","59.857723577235774","33.79065040650406","1697745706.047","8.967","" +"0","60.010162601626014","33.84146341463415","1697745706.055","8.975","" +"0","60.213414634146346","33.94308943089432","1697745706.063","8.983","" +"0","60.36585365853659","34.04471544715447","1697745706.072","8.992","" +"0","60.56910569105691","34.09552845528455","1697745706.08","9","" +"0","60.72154471544715","34.19715447154471","1697745706.088","9.008","" +"0","60.8739837398374","34.298780487804876","1697745706.097","9.017","" +"0","60.97560975609756","34.400406504065046","1697745706.105","9.025","" +"0","61.12804878048781","34.451219512195124","1697745706.114","9.034","" +"0","61.22967479674797","34.5020325203252","1697745706.122","9.042","" +"0","61.28048780487805","34.55284552845529","1697745706.13","9.05","" +"0","61.382113821138205","34.60365853658537","1697745706.138","9.058","" +"0","61.4329268292683","34.65447154471545","1697745706.147","9.067","" +"0","61.483739837398375","34.756097560975604","1697745706.155","9.075","" +"0","61.58536585365854","34.80691056910568","1697745706.163","9.083","" +"0","61.636178861788615","34.857723577235774","1697745706.172","9.092","" +"0","61.737804878048784","34.90853658536585","1697745706.18","9.1","" +"0","61.78861788617886","35.01016260162602","1697745706.188","9.108","" +"0","61.890243902439025","35.11178861788618","1697745706.197","9.117","" +"0","61.99186991869918","35.16260162601627","1697745706.205","9.125","" +"0","62.09349593495935","35.264227642276424","1697745706.214","9.134","" +"0","62.19512195121951","35.36585365853658","1697745706.222","9.142","" +"0","62.34756097560976","35.46747967479675","1697745706.23","9.15","" +"0","62.44918699186992","35.619918699187","1697745706.239","9.159","" +"0","62.601626016260155","35.72154471544715","1697745706.247","9.167","" +"0","62.75406504065041","35.82317073170732","1697745706.255","9.175","" +"0","62.90650406504065","35.92479674796748","1697745706.264","9.184","" +"0","63.0589430894309","36.02642276422764","1697745706.272","9.192","" +"0","63.21138211382114","36.12804878048781","1697745706.28","9.2","" +"0","63.31300813008131","36.22967479674797","1697745706.289","9.209","" +"0","63.46544715447154","36.28048780487805","1697745706.297","9.217","" +"0","63.5670731707317","36.382113821138205","1697745706.305","9.225","" +"0","63.71951219512195","36.483739837398375","1697745706.314","9.234","" +"0","63.87195121951219","36.58536585365854","1697745706.322","9.242","" +"0","64.02439024390245","36.737804878048784","1697745706.33","9.25","" +"0","64.22764227642277","36.9410569105691","1697745706.339","9.259","" +"0","64.43089430894308","37.09349593495935","1697745706.347","9.267","" +"0","64.63414634146342","37.29674796747967","1697745706.355","9.275","" +"0","64.83739837398373","37.5","1697745706.364","9.284","" +"0","65.04065040650406","37.70325203252033","1697745706.372","9.292","" +"0","65.2439024390244","37.90650406504065","1697745706.38","9.3","" +"0","65.4471544715447","38.0589430894309","1697745706.389","9.309","" +"0","65.59959349593495","38.21138211382114","1697745706.397","9.317","" +"0","65.7520325203252","38.363821138211385","1697745706.405","9.325","" +"0","65.90447154471545","38.516260162601625","1697745706.414","9.334","" +"0","66.0060975609756","38.617886178861795","1697745706.422","9.342","" +"0","66.10772357723577","38.71951219512195","1697745706.43","9.35","" +"0","66.15853658536585","38.82113821138211","1697745706.439","9.359","" +"0","66.20934959349594","38.92276422764228","1697745706.447","9.367","" +"0","66.3109756097561","39.02439024390244","1697745706.455","9.375","" +"0","66.36178861788618","39.17682926829268","1697745706.464","9.384","" +"0","66.41260162601627","39.27845528455285","1697745706.472","9.392","" +"0","66.46341463414635","39.38008130081301","1697745706.48","9.4","" +"0","66.5650406504065","39.53252032520326","1697745706.489","9.409","" +"0","66.66666666666666","39.6849593495935","1697745706.497","9.417","" +"0","66.71747967479675","39.83739837398373","1697745706.505","9.425","" +"0","66.81910569105692","39.989837398373986","1697745706.514","9.434","" +"0","66.92073170731707","40.142276422764226","1697745706.522","9.442","" +"0","67.02235772357723","40.29471544715447","1697745706.53","9.45","" +"0","67.1239837398374","40.447154471544714","1697745706.539","9.459","" +"0","67.22560975609755","40.59959349593496","1697745706.547","9.467","" +"0","67.27642276422763","40.7520325203252","1697745706.555","9.475","" +"0","67.3780487804878","40.90447154471545","1697745706.564","9.484","" +"0","67.47967479674797","41.05691056910569","1697745706.572","9.492","" +"0","67.53048780487805","41.260162601626014","1697745706.58","9.5","" +"0","67.6321138211382","41.41260162601627","1697745706.589","9.509","" +"0","67.73373983739837","41.61585365853659","1697745706.597","9.517","" +"0","67.78455284552845","41.768292682926834","1697745706.606","9.526","" +"0","67.88617886178862","41.97154471544715","1697745706.614","9.534","" +"0","67.9369918699187","42.17479674796748","1697745706.622","9.542","" +"0","67.98780487804879","42.37804878048781","1697745706.63","9.55","" +"0","68.08943089430895","42.53048780487805","1697745706.639","9.559","" +"0","68.14024390243902","42.733739837398375","1697745706.647","9.567","" +"0","68.1910569105691","42.886178861788615","1697745706.655","9.575","" +"0","68.24186991869918","43.03861788617886","1697745706.664","9.584","" +"0","68.34349593495935","43.24186991869918","1697745706.672","9.592","" +"0","68.39430894308943","43.394308943089435","1697745706.681","9.601","" +"0","68.4451219512195","43.59756097560976","1697745706.689","9.609","" +"0","68.4959349593496","43.75","1697745706.697","9.617","" +"0","68.54674796747967","43.90243902439024","1697745706.705","9.625","" +"0","68.59756097560977","44.105691056910565","1697745706.714","9.634","" +"0","68.59756097560977","44.25813008130082","1697745706.722","9.642","" +"0","68.64837398373984","44.46138211382114","1697745706.731","9.651","" +"0","68.69918699186992","44.613821138211385","1697745706.739","9.659","" +"0","68.75","44.8170731707317","1697745706.747","9.667","" +"0","68.80081300813008","44.96951219512195","1697745706.755","9.675","" +"0","68.85162601626016","45.17276422764228","1697745706.764","9.684","" +"0","68.90243902439023","45.32520325203252","1697745706.772","9.692","" +"0","68.95325203252033","45.52845528455285","1697745706.781","9.701","" +"0","69.0548780487805","45.731707317073166","1697745706.789","9.709","" +"0","69.10569105691057","45.88414634146341","1697745706.797","9.717","" +"0","69.20731707317073","46.036585365853654","1697745706.806","9.726","" +"0","69.25813008130082","46.239837398373986","1697745706.814","9.734","" +"0","69.35975609756098","46.392276422764226","1697745706.822","9.742","" +"0","69.41056910569105","46.54471544715447","1697745706.831","9.751","" +"0","69.51219512195121","46.697154471544714","1697745706.839","9.759","" +"0","69.5630081300813","46.84959349593496","1697745706.847","9.767","" +"0","69.66463414634147","47.0020325203252","1697745706.856","9.776","" +"0","69.71544715447155","47.15447154471545","1697745706.864","9.784","" +"0","69.76626016260163","47.30691056910569","1697745706.872","9.792","" +"0","69.8678861788618","47.40853658536586","1697745706.88","9.8","" +"0","69.91869918699187","47.5609756097561","1697745706.889","9.809","" +"0","69.96951219512195","47.66260162601627","1697745706.897","9.817","" +"0","70.02032520325203","47.8150406504065","1697745706.906","9.826","" +"0","70.02032520325203","47.916666666666664","1697745706.914","9.834","" +"0","70.0711382113821","48.06910569105691","1697745706.922","9.842","" +"0","70.0711382113821","48.170731707317074","1697745706.931","9.851","" +"0","70.1219512195122","48.27235772357723","1697745706.939","9.859","" +"0","70.1219512195122","48.42479674796748","1697745706.947","9.867","" +"0","70.17276422764228","48.52642276422764","1697745706.956","9.876","" +"0","70.17276422764228","48.67886178861789","1697745706.964","9.884","" +"0","70.22357723577237","48.83130081300813","1697745706.972","9.892","" +"0","70.27439024390245","48.983739837398375","1697745706.981","9.901","" +"0","70.27439024390245","49.08536585365854","1697745706.989","9.909","" +"0","70.27439024390245","49.237804878048784","1697745706.997","9.917","" +"0","70.32520325203252","49.390243902439025","1697745707.006","9.926","" +"0","70.32520325203252","49.49186991869918","1697745707.022","9.942","" +"0","70.32520325203252","49.644308943089435","1697745707.023","9.943","" +"0","70.3760162601626","49.74593495934959","1697745707.03","9.95","" +"0","70.3760162601626","49.84756097560976","1697745707.039","9.959","" +"0","70.3760162601626","49.94918699186992","1697745707.047","9.967","" +"0","70.3760162601626","50.10162601626016","1697745707.055","9.975","" +"0","70.3760162601626","50.203252032520325","1697745707.064","9.984","" +"0","70.3760162601626","50.30487804878049","1697745707.072","9.992","" +"0","70.3760162601626","50.457317073170735","1697745707.081","10.001","" +"0","70.42682926829268","50.5589430894309","1697745707.089","10.009","" +"0","70.42682926829268","50.71138211382114","1697745707.097","10.017","" +"0","70.42682926829268","50.91463414634146","1697745707.106","10.026","" +"0","70.42682926829268","51.06707317073171","1697745707.114","10.034","" +"0","70.47764227642277","51.21951219512195","1697745707.122","10.042","" +"0","70.47764227642277","51.3719512195122","1697745707.131","10.051","" +"0","70.52845528455285","51.57520325203252","1697745707.139","10.059","" +"0","70.52845528455285","51.72764227642276","1697745707.147","10.067","" +"0","70.57926829268293","51.88008130081301","1697745707.156","10.076","" +"0","70.57926829268293","52.08333333333333","1697745707.164","10.084","" +"0","70.630081300813","52.235772357723576","1697745707.172","10.092","" +"0","70.630081300813","52.388211382113816","1697745707.181","10.101","" +"0","70.630081300813","52.540650406504064","1697745707.189","10.109","" +"0","70.68089430894308","52.69308943089431","1697745707.197","10.117","" +"0","70.68089430894308","52.84552845528455","1697745707.206","10.126","" +"0","70.68089430894308","52.947154471544714","1697745707.214","10.134","" +"0","70.68089430894308","53.09959349593496","1697745707.222","10.142","" +"0","70.68089430894308","53.2520325203252","1697745707.231","10.151","" +"0","70.68089430894308","53.353658536585364","1697745707.239","10.159","" +"0","70.68089430894308","53.506097560975604","1697745707.248","10.168","" +"0","70.630081300813","53.65853658536585","1697745707.256","10.176","" +"0","70.630081300813","53.760162601626014","1697745707.264","10.184","" +"0","70.630081300813","53.91260162601626","1697745707.273","10.193","" +"0","70.630081300813","54.0650406504065","1697745707.281","10.201","" +"0","70.57926829268293","54.16666666666667","1697745707.289","10.209","" +"0","70.57926829268293","54.31910569105691","1697745707.298","10.218","" +"0","70.57926829268293","54.420731707317074","1697745707.306","10.226","" +"0","70.52845528455285","54.52235772357724","1697745707.314","10.234","" +"0","70.52845528455285","54.6239837398374","1697745707.323","10.243","" +"0","70.47764227642277","54.72560975609756","1697745707.331","10.251","" +"0","70.42682926829268","54.827235772357724","1697745707.339","10.259","" +"0","70.42682926829268","54.8780487804878","1697745707.347","10.267","" +"0","70.3760162601626","54.97967479674797","1697745707.356","10.276","" +"0","70.32520325203252","55.081300813008134","1697745707.364","10.284","" +"0","70.32520325203252","55.13211382113821","1697745707.373","10.293","" +"0","70.27439024390245","55.233739837398375","1697745707.381","10.301","" +"0","70.27439024390245","55.33536585365854","1697745707.389","10.309","" +"0","70.22357723577237","55.4369918699187","1697745707.398","10.318","" +"0","70.22357723577237","55.48780487804878","1697745707.406","10.326","" +"0","70.17276422764228","55.58943089430895","1697745707.414","10.334","" +"0","70.17276422764228","55.6910569105691","1697745707.423","10.343","" +"0","70.1219512195122","55.74186991869919","1697745707.431","10.351","" +"0","70.1219512195122","55.84349593495935","1697745707.439","10.359","" +"0","70.0711382113821","55.94512195121951","1697745707.448","10.368","" +"0","70.0711382113821","55.99593495934959","1697745707.456","10.376","" +"0","70.02032520325203","56.09756097560975","1697745707.464","10.384","" +"0","70.02032520325203","56.19918699186992","1697745707.473","10.393","" +"0","70.02032520325203","56.30081300813008","1697745707.481","10.401","" +"0","69.96951219512195","56.40243902439025","1697745707.489","10.409","" +"0","69.96951219512195","56.55487804878049","1697745707.498","10.418","" +"0","69.96951219512195","56.65650406504065","1697745707.506","10.426","" +"0","69.91869918699187","56.75813008130081","1697745707.514","10.434","" +"0","69.91869918699187","56.859756097560975","1697745707.523","10.443","" +"0","69.8678861788618","56.96138211382114","1697745707.531","10.451","" +"0","69.8678861788618","57.113821138211385","1697745707.539","10.459","" +"0","69.8170731707317","57.21544715447154","1697745707.548","10.468","" +"0","69.8170731707317","57.36788617886179","1697745707.556","10.476","" +"0","69.76626016260163","57.46951219512195","1697745707.564","10.484","" +"0","69.71544715447155","57.6219512195122","1697745707.573","10.493","" +"0","69.66463414634147","57.72357723577235","1697745707.581","10.501","" +"0","69.61382113821138","57.82520325203252","1697745707.589","10.509","" +"0","69.5630081300813","57.926829268292686","1697745707.598","10.518","" +"0","69.46138211382113","58.02845528455284","1697745707.606","10.526","" +"0","69.41056910569105","58.13008130081301","1697745707.614","10.534","" +"0","69.35975609756098","58.23170731707317","1697745707.623","10.543","" +"0","69.25813008130082","58.33333333333333","1697745707.631","10.551","" +"0","69.20731707317073","58.4349593495935","1697745707.639","10.559","" +"0","69.10569105691057","58.53658536585366","1697745707.648","10.568","" +"0","69.0548780487805","58.58739837398374","1697745707.656","10.576","" +"0","68.95325203252033","58.6890243902439","1697745707.664","10.584","" +"0","68.90243902439023","58.790650406504064","1697745707.673","10.593","" +"0","68.85162601626016","58.892276422764226","1697745707.681","10.601","" +"0","68.75","58.993902439024396","1697745707.689","10.609","" +"0","68.69918699186992","59.09552845528455","1697745707.698","10.618","" +"0","68.64837398373984","59.146341463414636","1697745707.706","10.626","" +"0","68.59756097560977","59.2479674796748","1697745707.714","10.634","" +"0","68.54674796747967","59.34959349593496","1697745707.723","10.643","" +"0","68.4451219512195","59.45121951219512","1697745707.731","10.651","" +"0","68.39430894308943","59.552845528455286","1697745707.739","10.659","" +"0","68.34349593495935","59.65447154471545","1697745707.748","10.668","" +"0","68.29268292682927","59.756097560975604","1697745707.756","10.676","" +"0","68.1910569105691","59.857723577235774","1697745707.765","10.685","" +"0","68.14024390243902","59.959349593495936","1697745707.773","10.693","" +"0","68.08943089430895","60.010162601626014","1697745707.781","10.701","" +"0","68.03861788617887","60.111788617886184","1697745707.789","10.709","" +"0","67.98780487804879","60.21341463414634","1697745707.798","10.718","" +"0","67.9369918699187","60.3150406504065","1697745707.806","10.726","" +"0","67.83536585365853","60.41666666666667","1697745707.814","10.734","" +"0","67.78455284552845","60.51829268292683","1697745707.823","10.743","" +"0","67.73373983739837","60.61991869918699","1697745707.831","10.751","" +"0","67.6829268292683","60.72154471544716","1697745707.839","10.759","" +"0","67.6321138211382","60.823170731707314","1697745707.848","10.768","" +"0","67.58130081300813","60.92479674796748","1697745707.856","10.776","" +"0","67.47967479674797","61.02642276422765","1697745707.865","10.785","" +"0","67.4288617886179","61.1280487804878","1697745707.873","10.793","" +"0","67.3780487804878","61.22967479674797","1697745707.881","10.801","" +"0","67.32723577235772","61.331300813008134","1697745707.89","10.81","" +"0","67.27642276422763","61.43292682926829","1697745707.898","10.818","" +"0","67.22560975609755","61.483739837398375","1697745707.906","10.826","" +"0","67.17479674796748","61.58536585365854","1697745707.915","10.835","" +"0","67.1239837398374","61.6869918699187","1697745707.923","10.843","" +"0","67.07317073170732","61.73780487804878","1697745707.931","10.851","" +"0","67.02235772357723","61.83943089430895","1697745707.94","10.86","" +"0","66.92073170731707","61.890243902439025","1697745707.948","10.868","" +"0","66.869918699187","61.99186991869919","1697745707.956","10.876","" +"0","66.81910569105692","62.042682926829265","1697745707.965","10.885","" +"0","66.76829268292683","62.09349593495935","1697745707.973","10.893","" +"0","66.71747967479675","62.144308943089435","1697745707.981","10.901","" +"0","66.66666666666666","62.24593495934959","1697745707.99","10.91","" +"0","66.61585365853658","62.296747967479675","1697745707.998","10.918","" +"0","66.5650406504065","62.34756097560975","1697745708.006","10.926","" +"0","66.5650406504065","62.39837398373984","1697745708.015","10.935","" +"0","66.51422764227642","62.39837398373984","1697745708.023","10.943","" +"0","66.46341463414635","62.44918699186992","1697745708.031","10.951","" +"0","66.46341463414635","62.55081300813008","1697745708.04","10.96","" +"0","66.41260162601627","62.60162601626016","1697745708.048","10.968","" +"0","66.36178861788618","62.65243902439025","1697745708.056","10.976","" +"0","66.3109756097561","62.703252032520325","1697745708.065","10.985","" +"0","66.26016260162602","62.80487804878049","1697745708.073","10.993","" +"0","66.20934959349594","62.855691056910565","1697745708.081","11.001","" +"0","66.15853658536585","62.957317073170735","1697745708.09","11.01","" +"0","66.10772357723577","63.00813008130081","1697745708.098","11.018","" +"0","66.05691056910568","63.0589430894309","1697745708.106","11.026","" +"0","66.0060975609756","63.16056910569105","1697745708.115","11.035","" +"0","65.95528455284553","63.21138211382114","1697745708.123","11.043","" +"0","65.90447154471545","63.3130081300813","1697745708.131","11.051","" +"0","65.8028455284553","63.363821138211385","1697745708.14","11.06","" +"0","65.7520325203252","63.46544715447154","1697745708.148","11.068","" +"0","65.70121951219512","63.56707317073171","1697745708.156","11.076","" +"0","65.65040650406505","63.668699186991866","1697745708.165","11.085","" +"0","65.59959349593495","63.77032520325203","1697745708.173","11.093","" +"0","65.4979674796748","63.8719512195122","1697745708.181","11.101","" +"0","65.4471544715447","63.97357723577235","1697745708.19","11.11","" +"0","65.34552845528455","64.1260162601626","1697745708.198","11.118","" +"0","65.29471544715447","64.22764227642276","1697745708.206","11.126","" +"0","65.19308943089432","64.32926829268293","1697745708.215","11.135","" +"0","65.09146341463415","64.4308943089431","1697745708.223","11.143","" +"0","64.98983739837398","64.58333333333333","1697745708.231","11.151","" +"0","64.88821138211382","64.6849593495935","1697745708.24","11.16","" +"0","64.78658536585365","64.78658536585365","1697745708.248","11.168","" +"0","64.6849593495935","64.9390243902439","1697745708.256","11.176","" +"0","64.58333333333334","65.04065040650406","1697745708.265","11.185","" +"0","64.48170731707317","65.14227642276423","1697745708.273","11.193","" +"0","64.380081300813","65.2439024390244","1697745708.281","11.201","" +"0","64.27845528455285","65.34552845528455","1697745708.29","11.21","" +"0","64.17682926829268","65.4471544715447","1697745708.298","11.218","" +"0","64.1260162601626","65.54878048780489","1697745708.306","11.226","" +"0","64.02439024390245","65.65040650406505","1697745708.315","11.235","" +"0","63.92276422764228","65.70121951219511","1697745708.323","11.243","" +"0","63.82113821138211","65.8028455284553","1697745708.331","11.251","" +"0","63.71951219512195","65.85365853658536","1697745708.34","11.26","" +"0","63.617886178861795","65.95528455284553","1697745708.348","11.268","" +"0","63.516260162601625","66.0569105691057","1697745708.356","11.276","" +"0","63.41463414634146","66.10772357723577","1697745708.365","11.285","" +"0","63.31300813008131","66.20934959349594","1697745708.373","11.293","" +"0","63.21138211382114","66.260162601626","1697745708.381","11.301","" +"0","63.109756097560975","66.36178861788619","1697745708.39","11.31","" +"0","63.0589430894309","66.41260162601625","1697745708.398","11.318","" +"0","63.00813008130082","66.46341463414635","1697745708.406","11.326","" +"0","62.90650406504065","66.5650406504065","1697745708.415","11.335","" +"0","62.855691056910565","66.6158536585366","1697745708.423","11.343","" +"0","62.80487804878049","66.66666666666667","1697745708.431","11.351","" +"0","62.75406504065041","66.71747967479675","1697745708.44","11.36","" +"0","62.70325203252033","66.8191056910569","1697745708.448","11.368","" +"0","62.65243902439024","66.869918699187","1697745708.457","11.377","" +"0","62.601626016260155","66.92073170731707","1697745708.465","11.385","" +"0","62.55081300813008","67.02235772357724","1697745708.473","11.393","" +"0","62.5","67.07317073170731","1697745708.482","11.402","" +"0","62.398373983739845","67.17479674796748","1697745708.49","11.41","" +"0","62.34756097560976","67.22560975609755","1697745708.498","11.418","" +"0","62.29674796747967","67.27642276422765","1697745708.507","11.427","" +"0","62.24593495934959","67.3780487804878","1697745708.515","11.435","" +"0","62.144308943089435","67.4288617886179","1697745708.523","11.443","" +"0","62.09349593495935","67.53048780487805","1697745708.532","11.452","" +"0","61.99186991869918","67.58130081300814","1697745708.54","11.46","" +"0","61.9410569105691","67.6829268292683","1697745708.548","11.468","" +"0","61.890243902439025","67.73373983739837","1697745708.557","11.477","" +"0","61.83943089430895","67.83536585365854","1697745708.565","11.485","" +"0","61.737804878048784","67.88617886178861","1697745708.573","11.493","" +"0","61.68699186991869","67.98780487804878","1697745708.582","11.502","" +"0","61.636178861788615","68.03861788617886","1697745708.59","11.51","" +"0","61.58536585365854","68.14024390243902","1697745708.598","11.518","" +"0","61.483739837398375","68.2418699186992","1697745708.607","11.527","" +"0","61.382113821138205","68.34349593495935","1697745708.615","11.535","" +"0","61.28048780487805","68.39430894308943","1697745708.623","11.543","" +"0","61.17886178861789","68.4959349593496","1697745708.632","11.552","" +"0","61.07723577235772","68.59756097560975","1697745708.64","11.56","" +"0","60.97560975609756","68.64837398373983","1697745708.648","11.568","" +"0","60.82317073170732","68.69918699186992","1697745708.657","11.577","" +"0","60.72154471544715","68.80081300813008","1697745708.665","11.585","" +"0","60.61991869918699","68.85162601626017","1697745708.673","11.593","" +"0","60.46747967479674","68.90243902439025","1697745708.682","11.602","" +"0","60.36585365853659","68.95325203252033","1697745708.69","11.61","" +"0","60.264227642276424","69.0040650406504","1697745708.698","11.618","" +"0","60.16260162601627","69.0548780487805","1697745708.707","11.627","" +"0","60.0609756097561","69.10569105691057","1697745708.715","11.635","" +"0","59.959349593495936","69.15650406504065","1697745708.723","11.643","" +"0","59.80691056910569","69.20731707317073","1697745708.732","11.652","" +"0","59.70528455284553","69.2581300813008","1697745708.74","11.66","" +"0","59.60365853658537","69.3089430894309","1697745708.748","11.668","" +"0","59.5020325203252","69.41056910569105","1697745708.757","11.677","" +"0","59.40040650406504","69.46138211382114","1697745708.765","11.685","" +"0","59.2479674796748","69.51219512195122","1697745708.773","11.693","" +"0","59.14634146341463","69.5630081300813","1697745708.782","11.702","" +"0","58.993902439024396","69.66463414634146","1697745708.79","11.71","" +"0","58.892276422764226","69.71544715447155","1697745708.798","11.718","" +"0","58.739837398373986","69.76626016260163","1697745708.807","11.727","" +"0","58.58739837398373","69.8170731707317","1697745708.815","11.735","" +"0","58.4349593495935","69.91869918699186","1697745708.823","11.743","" +"0","58.28252032520326","69.96951219512195","1697745708.832","11.752","" +"0","58.13008130081301","70.02032520325203","1697745708.84","11.76","" +"0","57.97764227642277","70.0711382113821","1697745708.848","11.768","" +"0","57.77439024390244","70.1219512195122","1697745708.857","11.777","" +"0","57.62195121951219","70.17276422764228","1697745708.865","11.785","" +"0","57.46951219512195","70.22357723577235","1697745708.873","11.793","" +"0","57.3170731707317","70.27439024390245","1697745708.882","11.802","" +"0","57.16463414634146","70.32520325203252","1697745708.89","11.81","" +"0","57.012195121951216","70.42682926829269","1697745708.898","11.818","" +"0","56.859756097560975","70.47764227642276","1697745708.907","11.827","" +"0","56.70731707317073","70.52845528455285","1697745708.915","11.835","" +"0","56.55487804878049","70.57926829268293","1697745708.923","11.843","" +"0","56.40243902439024","70.630081300813","1697745708.932","11.852","" +"0","56.25","70.6808943089431","1697745708.94","11.86","" +"0","56.09756097560976","70.73170731707317","1697745708.948","11.868","" +"0","55.94512195121951","70.78252032520325","1697745708.957","11.877","" +"0","55.79268292682927","70.83333333333333","1697745708.965","11.885","" +"0","55.640243902439025","70.88414634146342","1697745708.974","11.894","" +"0","55.43699186991869","70.9349593495935","1697745708.982","11.902","" +"0","55.28455284552846","70.9349593495935","1697745708.99","11.91","" +"0","55.132113821138205","70.98577235772358","1697745708.998","11.918","" +"0","54.97967479674797","71.03658536585365","1697745709.007","11.927","" +"0","54.82723577235772","71.08739837398375","1697745709.015","11.935","" +"0","54.67479674796748","71.13821138211382","1697745709.023","11.943","" +"0","54.52235772357723","71.13821138211382","1697745709.032","11.952","" +"0","54.420731707317074","71.1890243902439","1697745709.04","11.96","" +"0","54.268292682926834","71.1890243902439","1697745709.049","11.969","" +"0","54.11585365853659","71.239837398374","1697745709.057","11.977","" +"0","54.014227642276424","71.29065040650406","1697745709.065","11.985","" +"0","53.86178861788618","71.29065040650406","1697745709.073","11.993","" +"0","53.709349593495936","71.34146341463415","1697745709.082","12.002","" +"0","53.607723577235774","71.34146341463415","1697745709.09","12.01","" +"0","53.506097560975604","71.39227642276423","1697745709.099","12.019","" +"0","53.35365853658537","71.4430894308943","1697745709.107","12.027","" +"0","53.2520325203252","71.4430894308943","1697745709.115","12.035","" +"0","53.09959349593496","71.4939024390244","1697745709.124","12.044","" +"0","52.9979674796748","71.4939024390244","1697745709.132","12.052","" +"0","52.89634146341463","71.54471544715447","1697745709.14","12.06","" +"0","52.743902439024396","71.54471544715447","1697745709.149","12.069","" +"0","52.642276422764226","71.54471544715447","1697745709.157","12.077","" +"0","52.540650406504064","71.59552845528455","1697745709.165","12.085","" +"0","52.38821138211382","71.59552845528455","1697745709.173","12.093","" +"0","52.286585365853654","71.59552845528455","1697745709.182","12.102","" +"0","52.1849593495935","71.59552845528455","1697745709.19","12.11","" +"0","52.03252032520326","71.59552845528455","1697745709.199","12.119","" +"0","51.93089430894309","71.59552845528455","1697745709.207","12.127","" +"0","51.829268292682926","71.59552845528455","1697745709.215","12.135","" +"0","51.67682926829268","71.59552845528455","1697745709.224","12.144","" +"0","51.6260162601626","71.59552845528455","1697745709.232","12.152","" +"0","51.52439024390244","71.59552845528455","1697745709.24","12.16","" +"0","51.42276422764228","71.59552845528455","1697745709.249","12.169","" +"0","51.32113821138211","71.59552845528455","1697745709.257","12.177","" +"0","51.21951219512195","71.64634146341464","1697745709.265","12.185","" +"0","51.117886178861795","71.64634146341464","1697745709.274","12.194","" +"0","51.0670731707317","71.64634146341464","1697745709.282","12.202","" +"0","50.96544715447154","71.64634146341464","1697745709.29","12.21","" +"0","50.863821138211385","71.64634146341464","1697745709.299","12.219","" +"0","50.81300813008131","71.64634146341464","1697745709.307","12.227","" +"0","50.71138211382114","71.64634146341464","1697745709.315","12.235","" +"0","50.609756097560975","71.69715447154472","1697745709.324","12.244","" +"0","50.5589430894309","71.69715447154472","1697745709.332","12.252","" +"0","50.45731707317073","71.69715447154472","1697745709.34","12.26","" +"0","50.355691056910565","71.69715447154472","1697745709.349","12.269","" +"0","50.25406504065041","71.69715447154472","1697745709.357","12.277","" +"0","50.20325203252033","71.69715447154472","1697745709.365","12.285","" +"0","50.101626016260155","71.7479674796748","1697745709.374","12.294","" +"0","50","71.7479674796748","1697745709.382","12.302","" +"0","49.89837398373984","71.7479674796748","1697745709.39","12.31","" +"0","49.796747967479675","71.7479674796748","1697745709.399","12.319","" +"0","49.69512195121951","71.79878048780488","1697745709.407","12.327","" +"0","49.59349593495935","71.79878048780488","1697745709.415","12.335","" +"0","49.49186991869919","71.79878048780488","1697745709.424","12.344","" +"0","49.390243902439025","71.79878048780488","1697745709.432","12.352","" +"0","49.28861788617886","71.79878048780488","1697745709.44","12.36","" +"0","49.1869918699187","71.84959349593495","1697745709.449","12.369","" +"0","49.08536585365854","71.84959349593495","1697745709.457","12.377","" +"0","48.93292682926829","71.84959349593495","1697745709.465","12.385","" +"0","48.831300813008134","71.84959349593495","1697745709.474","12.394","" +"0","48.72967479674797","71.84959349593495","1697745709.482","12.402","" +"0","48.6280487804878","71.84959349593495","1697745709.49","12.41","" +"0","48.47560975609756","71.84959349593495","1697745709.499","12.419","" +"0","48.3739837398374","71.84959349593495","1697745709.507","12.427","" +"0","48.22154471544716","71.84959349593495","1697745709.515","12.435","" +"0","48.06910569105691","71.84959349593495","1697745709.524","12.444","" +"0","47.96747967479675","71.84959349593495","1697745709.532","12.452","" +"0","47.8150406504065","71.84959349593495","1697745709.54","12.46","" +"0","47.66260162601626","71.84959349593495","1697745709.549","12.469","" +"0","47.510162601626014","71.79878048780488","1697745709.557","12.477","" +"0","47.357723577235774","71.79878048780488","1697745709.565","12.485","" +"0","47.20528455284553","71.79878048780488","1697745709.574","12.494","" +"0","47.0020325203252","71.7479674796748","1697745709.582","12.502","" +"0","46.84959349593496","71.7479674796748","1697745709.59","12.51","" +"0","46.646341463414636","71.69715447154472","1697745709.599","12.519","" +"0","46.493902439024396","71.69715447154472","1697745709.607","12.527","" +"0","46.290650406504064","71.64634146341464","1697745709.615","12.535","" +"0","46.08739837398374","71.64634146341464","1697745709.624","12.544","" +"0","45.9349593495935","71.59552845528455","1697745709.632","12.552","" +"0","45.78252032520325","71.59552845528455","1697745709.641","12.561","" +"0","45.63008130081301","71.54471544715447","1697745709.649","12.569","" +"0","45.47764227642276","71.54471544715447","1697745709.657","12.577","" +"0","45.32520325203252","71.4939024390244","1697745709.666","12.586","" +"0","45.172764227642276","71.4430894308943","1697745709.674","12.594","" +"0","45.07113821138211","71.4430894308943","1697745709.682","12.602","" +"0","44.96951219512195","71.39227642276423","1697745709.691","12.611","" +"0","44.81707317073171","71.39227642276423","1697745709.699","12.619","" +"0","44.71544715447154","71.39227642276423","1697745709.707","12.627","" +"0","44.613821138211385","71.34146341463415","1697745709.716","12.636","" +"0","44.51219512195122","71.34146341463415","1697745709.724","12.644","" +"0","44.41056910569105","71.34146341463415","1697745709.732","12.652","" +"0","44.3089430894309","71.34146341463415","1697745709.741","12.661","" +"0","44.207317073170735","71.29065040650406","1697745709.749","12.669","" +"0","44.105691056910565","71.29065040650406","1697745709.757","12.677","" +"0","44.00406504065041","71.29065040650406","1697745709.766","12.686","" +"0","43.90243902439025","71.239837398374","1697745709.774","12.694","" +"0","43.80081300813008","71.239837398374","1697745709.782","12.702","" +"0","43.69918699186992","71.239837398374","1697745709.791","12.711","" +"0","43.59756097560975","71.1890243902439","1697745709.799","12.719","" +"0","43.49593495934959","71.1890243902439","1697745709.807","12.727","" +"0","43.394308943089435","71.13821138211382","1697745709.816","12.736","" +"0","43.292682926829265","71.08739837398375","1697745709.824","12.744","" +"0","43.140243902439025","71.03658536585365","1697745709.832","12.752","" +"0","43.03861788617886","70.98577235772358","1697745709.841","12.761","" +"0","42.886178861788615","70.98577235772358","1697745709.849","12.769","" +"0","42.78455284552846","70.88414634146342","1697745709.857","12.777","" +"0","42.63211382113821","70.83333333333333","1697745709.866","12.786","" +"0","42.47967479674797","70.78252032520325","1697745709.874","12.794","" +"0","42.327235772357724","70.73170731707317","1697745709.883","12.803","" +"0","42.17479674796748","70.630081300813","1697745709.892","12.812","" +"0","42.02235772357724","70.57926829268293","1697745709.899","12.819","" +"0","41.81910569105691","70.47764227642276","1697745709.907","12.827","" +"0","41.66666666666667","70.3760162601626","1697745709.916","12.836","" +"0","41.514227642276424","70.32520325203252","1697745709.924","12.844","" +"0","41.3109756097561","70.27439024390245","1697745709.932","12.852","" +"0","41.15853658536585","70.17276422764228","1697745709.941","12.861","" +"0","41.006097560975604","70.1219512195122","1697745709.949","12.869","" +"0","40.853658536585364","70.0711382113821","1697745709.957","12.877","" +"0","40.65040650406504","69.96951219512195","1697745709.966","12.886","" +"0","40.4979674796748","69.91869918699186","1697745709.974","12.894","" +"0","40.34552845528455","69.8678861788618","1697745709.982","12.902","" +"0","40.19308943089431","69.8170731707317","1697745709.991","12.911","" +"0","40.040650406504064","69.76626016260163","1697745709.999","12.919","" +"0","39.888211382113816","69.71544715447155","1697745710.007","12.927","" +"0","39.6849593495935","69.66463414634146","1697745710.016","12.936","" +"0","39.53252032520325","69.61382113821139","1697745710.024","12.944","" +"0","39.38008130081301","69.5630081300813","1697745710.032","12.952","" +"0","39.176829268292686","69.46138211382114","1697745710.041","12.961","" +"0","39.02439024390244","69.41056910569105","1697745710.049","12.969","" +"0","38.8719512195122","69.35975609756098","1697745710.057","12.977","" +"0","38.668699186991866","69.2581300813008","1697745710.066","12.986","" +"0","38.516260162601625","69.15650406504065","1697745710.074","12.994","" +"0","38.3130081300813","69.0548780487805","1697745710.082","13.002","" +"0","38.109756097560975","68.95325203252033","1697745710.091","13.011","" +"0","37.957317073170735","68.85162601626017","1697745710.099","13.019","" +"0","37.75406504065041","68.75","1697745710.107","13.027","" +"0","37.55081300813008","68.64837398373983","1697745710.116","13.036","" +"0","37.39837398373984","68.4959349593496","1697745710.124","13.044","" +"0","37.19512195121951","68.39430894308943","1697745710.132","13.052","" +"0","36.99186991869919","68.29268292682927","1697745710.141","13.061","" +"0","36.83943089430895","68.14024390243902","1697745710.149","13.069","" +"0","36.636178861788615","68.03861788617886","1697745710.157","13.077","" +"0","36.483739837398375","67.88617886178861","1697745710.166","13.086","" +"0","36.331300813008134","67.78455284552845","1697745710.174","13.094","" +"0","36.17886178861789","67.6829268292683","1697745710.183","13.103","" +"0","36.02642276422765","67.53048780487805","1697745710.191","13.111","" +"0","35.92479674796748","67.4288617886179","1697745710.199","13.119","" +"0","35.77235772357724","67.32723577235772","1697745710.207","13.127","" +"0","35.61991869918699","67.22560975609755","1697745710.216","13.136","" +"0","35.51829268292683","67.1239837398374","1697745710.224","13.144","" +"0","35.36585365853659","67.02235772357724","1697745710.233","13.153","" +"0","35.264227642276424","66.92073170731707","1697745710.241","13.161","" +"0","35.111788617886184","66.8191056910569","1697745710.249","13.169","" +"0","35.010162601626014","66.71747967479675","1697745710.258","13.178","" +"0","34.857723577235774","66.5650406504065","1697745710.266","13.186","" +"0","34.756097560975604","66.46341463414635","1697745710.274","13.194","" +"0","34.603658536585364","66.36178861788619","1697745710.283","13.203","" +"0","34.45121951219512","66.20934959349594","1697745710.291","13.211","" +"0","34.29878048780488","66.10772357723577","1697745710.299","13.219","" +"0","34.146341463414636","65.95528455284553","1697745710.308","13.228","" +"0","33.993902439024396","65.8028455284553","1697745710.316","13.236","" +"0","33.84146341463415","65.65040650406505","1697745710.324","13.244","" +"0","33.638211382113816","65.4979674796748","1697745710.333","13.253","" +"0","33.485772357723576","65.34552845528455","1697745710.341","13.261","" +"0","33.28252032520325","65.1930894308943","1697745710.349","13.269","" +"0","33.079268292682926","64.989837398374","1697745710.358","13.278","" +"0","32.8760162601626","64.83739837398375","1697745710.366","13.286","" +"0","32.72357723577235","64.6849593495935","1697745710.374","13.294","" +"0","32.52032520325203","64.53252032520325","1697745710.383","13.303","" +"0","32.36788617886179","64.380081300813","1697745710.391","13.311","" +"0","32.16463414634146","64.22764227642276","1697745710.399","13.319","" +"0","32.01219512195122","64.07520325203252","1697745710.408","13.328","" +"0","31.859756097560975","63.97357723577235","1697745710.416","13.336","" +"0","31.758130081300813","63.82113821138211","1697745710.424","13.344","" +"0","31.60569105691057","63.668699186991866","1697745710.433","13.353","" +"0","31.453252032520325","63.56707317073171","1697745710.441","13.361","" +"0","31.351626016260166","63.46544715447154","1697745710.449","13.369","" +"0","31.199186991869922","63.3130081300813","1697745710.458","13.378","" +"0","31.097560975609756","63.21138211382114","1697745710.466","13.386","" +"0","30.99593495934959","63.109756097560975","1697745710.474","13.394","" +"0","30.89430894308943","63.00813008130081","1697745710.483","13.403","" +"0","30.843495934959346","62.90650406504065","1697745710.491","13.411","" +"0","30.741869918699187","62.80487804878049","1697745710.499","13.419","" +"0","30.640243902439025","62.703252032520325","1697745710.508","13.428","" +"0","30.589430894308943","62.60162601626016","1697745710.516","13.436","" +"0","30.48780487804878","62.5","1697745710.524","13.444","" +"0","30.386178861788615","62.39837398373984","1697745710.533","13.453","" +"0","30.335365853658537","62.296747967479675","1697745710.541","13.461","" +"0","30.23373983739837","62.19512195121951","1697745710.549","13.469","" +"0","30.132113821138212","62.09349593495935","1697745710.558","13.478","" +"0","30.03048780487805","61.99186991869919","1697745710.566","13.486","" +"0","29.979674796747968","61.890243902439025","1697745710.574","13.494","" +"0","29.878048780487802","61.78861788617886","1697745710.583","13.503","" +"0","29.827235772357724","61.636178861788615","1697745710.591","13.511","" +"0","29.72560975609756","61.53455284552846","1697745710.599","13.519","" +"0","29.67479674796748","61.38211382113821","1697745710.608","13.528","" +"0","29.6239837398374","61.22967479674797","1697745710.616","13.536","" +"0","29.522357723577237","61.077235772357724","1697745710.624","13.544","" +"0","29.42073170731707","60.92479674796748","1697745710.633","13.553","" +"0","29.369918699186993","60.77235772357724","1697745710.641","13.561","" +"0","29.268292682926827","60.61991869918699","1697745710.649","13.569","" +"0","29.166666666666668","60.46747967479675","1697745710.658","13.578","" +"0","29.065040650406505","60.3150406504065","1697745710.666","13.586","" +"0","28.96341463414634","60.16260162601626","1697745710.674","13.594","" +"0","28.86178861788618","60.010162601626014","1697745710.683","13.603","" +"0","28.760162601626014","59.857723577235774","1697745710.691","13.611","" +"0","28.65853658536585","59.756097560975604","1697745710.699","13.619","" +"0","28.60772357723577","59.603658536585364","1697745710.708","13.628","" +"0","28.556910569105693","59.5020325203252","1697745710.716","13.636","" +"0","28.506097560975608","59.40040650406504","1697745710.724","13.644","" +"0","28.455284552845526","59.29878048780488","1697745710.733","13.653","" +"0","28.40447154471545","59.197154471544714","1697745710.741","13.661","" +"0","28.353658536585364","59.04471544715447","1697745710.749","13.669","" +"0","28.353658536585364","58.94308943089431","1697745710.758","13.678","" +"0","28.302845528455283","58.84146341463415","1697745710.766","13.686","" +"0","28.252032520325205","58.739837398373986","1697745710.774","13.694","" +"0","28.252032520325205","58.638211382113816","1697745710.783","13.703","" +"0","28.20121951219512","58.53658536585366","1697745710.791","13.711","" +"0","28.15040650406504","58.4349593495935","1697745710.8","13.72","" +"0","28.15040650406504","58.33333333333333","1697745710.808","13.728","" +"0","28.09959349593496","58.18089430894309","1697745710.816","13.736","" +"0","28.09959349593496","58.079268292682926","1697745710.825","13.745","" +"0","28.04878048780488","57.97764227642276","1697745710.833","13.753","" +"0","27.997967479674795","57.8760162601626","1697745710.841","13.761","" +"0","27.997967479674795","57.77439024390244","1697745710.849","13.769","" +"0","27.947154471544717","57.6219512195122","1697745710.858","13.778","" +"0","27.947154471544717","57.52032520325203","1697745710.866","13.786","" +"0","27.896341463414636","57.418699186991866","1697745710.875","13.795","" +"0","27.84552845528455","57.31707317073171","1697745710.883","13.803","" +"0","27.84552845528455","57.21544715447154","1697745710.891","13.811","" +"0","27.794715447154474","57.0630081300813","1697745710.899","13.819","" +"0","27.794715447154474","56.96138211382114","1697745710.908","13.828","" +"0","27.743902439024392","56.859756097560975","1697745710.916","13.836","" +"0","27.693089430894307","56.707317073170735","1697745710.925","13.845","" +"0","27.693089430894307","56.55487804878049","1697745710.933","13.853","" +"0","27.64227642276423","56.453252032520325","1697745710.941","13.861","" +"0","27.59146341463415","56.30081300813008","1697745710.95","13.87","" +"0","27.540650406504064","56.19918699186992","1697745710.958","13.878","" +"0","27.489837398373986","56.046747967479675","1697745710.966","13.886","" +"0","27.439024390243905","55.894308943089435","1697745710.975","13.895","" +"0","27.38821138211382","55.792682926829265","1697745710.983","13.903","" +"0","27.33739837398374","55.6910569105691","1697745710.991","13.911","" +"0","27.28658536585366","55.53861788617886","1697745711","13.92","" +"0","27.235772357723576","55.4369918699187","1697745711.008","13.928","" +"0","27.184959349593495","55.28455284552846","1697745711.016","13.936","" +"0","27.134146341463417","55.18292682926829","1697745711.025","13.945","" +"0","27.134146341463417","55.081300813008134","1697745711.033","13.953","" +"0","27.083333333333332","54.97967479674797","1697745711.041","13.961","" +"0","27.03252032520325","54.8780487804878","1697745711.05","13.97","" +"0","26.981707317073173","54.77642276422765","1697745711.058","13.978","" +"0","26.93089430894309","54.67479674796748","1697745711.066","13.986","" +"0","26.880081300813007","54.573170731707314","1697745711.075","13.995","" +"0","26.82926829268293","54.52235772357724","1697745711.083","14.003","" +"0","26.82926829268293","54.420731707317074","1697745711.091","14.011","" +"0","26.778455284552845","54.36991869918699","1697745711.1","14.02","" +"0","26.778455284552845","54.26829268292683","1697745711.108","14.028","" +"0","26.727642276422763","54.21747967479675","1697745711.116","14.036","" +"0","26.727642276422763","54.11585365853659","1697745711.125","14.045","" +"0","26.676829268292686","54.0650406504065","1697745711.133","14.053","" +"0","26.676829268292686","53.96341463414634","1697745711.141","14.061","" +"0","26.6260162601626","53.861788617886184","1697745711.15","14.07","" +"0","26.6260162601626","53.760162601626014","1697745711.158","14.078","" +"0","26.57520325203252","53.65853658536585","1697745711.166","14.086","" +"0","26.57520325203252","53.55691056910569","1697745711.175","14.095","" +"0","26.57520325203252","53.45528455284553","1697745711.183","14.103","" +"0","26.52439024390244","53.353658536585364","1697745711.191","14.111","" +"0","26.52439024390244","53.2520325203252","1697745711.2","14.12","" +"0","26.52439024390244","53.15040650406504","1697745711.208","14.128","" +"0","26.473577235772357","53.04878048780488","1697745711.217","14.137","" +"0","26.473577235772357","52.947154471544714","1697745711.225","14.145","" +"0","26.473577235772357","52.84552845528455","1697745711.233","14.153","" +"0","26.473577235772357","52.743902439024396","1697745711.241","14.161","" +"0","26.473577235772357","52.59146341463415","1697745711.25","14.17","" +"0","26.422764227642276","52.489837398373986","1697745711.258","14.178","" +"0","26.422764227642276","52.388211382113816","1697745711.266","14.186","" +"0","26.422764227642276","52.28658536585366","1697745711.275","14.195","" +"0","26.371951219512198","52.1849593495935","1697745711.283","14.203","" +"0","26.371951219512198","52.08333333333333","1697745711.292","14.212","" +"0","26.371951219512198","51.98170731707317","1697745711.3","14.22","" +"0","26.371951219512198","51.88008130081301","1697745711.308","14.228","" +"0","26.321138211382113","51.77845528455284","1697745711.317","14.237","" +"0","26.321138211382113","51.676829268292686","1697745711.325","14.245","" +"0","26.321138211382113","51.6260162601626","1697745711.333","14.253","" +"0","26.321138211382113","51.52439024390244","1697745711.341","14.261","" +"0","26.321138211382113","51.422764227642276","1697745711.35","14.27","" +"0","26.321138211382113","51.32113821138211","1697745711.358","14.278","" +"0","26.321138211382113","51.27032520325203","1697745711.367","14.287","" +"0","26.270325203252032","51.168699186991866","1697745711.375","14.295","" +"0","26.270325203252032","51.06707317073171","1697745711.383","14.303","" +"0","26.270325203252032","51.016260162601625","1697745711.392","14.312","" +"0","26.270325203252032","50.91463414634146","1697745711.4","14.32","" +"0","26.270325203252032","50.8130081300813","1697745711.408","14.328","" +"0","26.270325203252032","50.71138211382114","1697745711.417","14.337","" +"0","26.270325203252032","50.609756097560975","1697745711.425","14.345","" +"0","26.21951219512195","50.50813008130081","1697745711.433","14.353","" +"0","26.21951219512195","50.40650406504065","1697745711.442","14.362","" +"0","26.21951219512195","50.30487804878049","1697745711.45","14.37","" +"0","26.21951219512195","50.203252032520325","1697745711.458","14.378","" +"0","26.21951219512195","50.05081300813008","1697745711.467","14.387","" +"0","26.21951219512195","49.94918699186992","1697745711.475","14.395","" +"0","26.21951219512195","49.79674796747967","1697745711.483","14.403","" +"0","26.21951219512195","49.69512195121951","1697745711.492","14.412","" +"0","26.21951219512195","49.54268292682927","1697745711.5","14.42","" +"0","26.21951219512195","49.4410569105691","1697745711.508","14.428","" +"0","26.21951219512195","49.28861788617886","1697745711.517","14.437","" +"0","26.21951219512195","49.136178861788615","1697745711.525","14.445","" +"0","26.21951219512195","49.03455284552846","1697745711.533","14.453","" +"0","26.21951219512195","48.882113821138205","1697745711.542","14.462","" +"0","26.21951219512195","48.78048780487805","1697745711.55","14.47","" +"0","26.21951219512195","48.67886178861789","1697745711.558","14.478","" +"0","26.21951219512195","48.57723577235772","1697745711.567","14.487","" +"0","26.21951219512195","48.47560975609756","1697745711.575","14.495","" +"0","26.21951219512195","48.3739837398374","1697745711.583","14.503","" +"0","26.21951219512195","48.27235772357723","1697745711.592","14.512","" +"0","26.21951219512195","48.170731707317074","1697745711.6","14.52","" +"0","26.270325203252032","48.06910569105691","1697745711.608","14.528","" +"0","26.270325203252032","47.916666666666664","1697745711.617","14.537","" +"0","26.270325203252032","47.8150406504065","1697745711.625","14.545","" +"0","26.270325203252032","47.713414634146346","1697745711.633","14.553","" +"0","26.321138211382113","47.5609756097561","1697745711.642","14.562","" +"0","26.321138211382113","47.459349593495936","1697745711.65","14.57","" +"0","26.371951219512198","47.30691056910569","1697745711.658","14.578","" +"0","26.371951219512198","47.20528455284553","1697745711.667","14.587","" +"0","26.422764227642276","47.052845528455286","1697745711.675","14.595","" +"0","26.473577235772357","46.90040650406504","1697745711.683","14.603","" +"0","26.473577235772357","46.7479674796748","1697745711.692","14.612","" +"0","26.52439024390244","46.64634146341463","1697745711.7","14.62","" +"0","26.57520325203252","46.493902439024396","1697745711.708","14.628","" +"0","26.57520325203252","46.34146341463414","1697745711.717","14.637","" +"0","26.6260162601626","46.239837398373986","1697745711.725","14.645","" +"0","26.676829268292686","46.08739837398373","1697745711.733","14.653","" +"0","26.676829268292686","45.9349593495935","1697745711.742","14.662","" +"0","26.727642276422763","45.78252032520326","1697745711.75","14.67","" +"0","26.727642276422763","45.63008130081301","1697745711.758","14.678","" +"0","26.778455284552845","45.42682926829268","1697745711.767","14.687","" +"0","26.778455284552845","45.27439024390244","1697745711.775","14.695","" +"0","26.82926829268293","45.17276422764228","1697745711.783","14.703","" +"0","26.82926829268293","45.02032520325203","1697745711.792","14.712","" +"0","26.82926829268293","44.91869918699187","1697745711.8","14.72","" +"0","26.82926829268293","44.8170731707317","1697745711.808","14.728","" +"0","26.880081300813007","44.71544715447154","1697745711.817","14.737","" +"0","26.880081300813007","44.613821138211385","1697745711.825","14.745","" +"0","26.93089430894309","44.512195121951216","1697745711.833","14.753","" +"0","26.93089430894309","44.41056910569105","1697745711.842","14.762","" +"0","26.93089430894309","44.3089430894309","1697745711.85","14.77","" +"0","26.93089430894309","44.20731707317073","1697745711.858","14.778","" +"0","26.981707317073173","44.105691056910565","1697745711.867","14.787","" +"0","26.981707317073173","44.00406504065041","1697745711.875","14.795","" +"0","26.981707317073173","43.95325203252033","1697745711.884","14.804","" +"0","26.981707317073173","43.80081300813008","1697745711.892","14.812","" +"0","26.981707317073173","43.75","1697745711.9","14.82","" +"0","27.03252032520325","43.648373983739845","1697745711.908","14.828","" +"0","27.03252032520325","43.49593495934959","1697745711.917","14.837","" +"0","27.03252032520325","43.394308943089435","1697745711.925","14.845","" +"0","27.03252032520325","43.29268292682927","1697745711.933","14.853","" +"0","27.083333333333332","43.1910569105691","1697745711.942","14.862","" +"0","27.083333333333332","43.08943089430895","1697745711.95","14.87","" +"0","27.083333333333332","42.987804878048784","1697745711.959","14.879","" +"0","27.134146341463417","42.886178861788615","1697745711.967","14.887","" +"0","27.134146341463417","42.78455284552846","1697745711.975","14.895","" +"0","27.184959349593495","42.6829268292683","1697745711.984","14.904","" +"0","27.184959349593495","42.53048780487805","1697745711.992","14.912","" +"0","27.235772357723576","42.42886178861789","1697745712","14.92","" +"0","27.235772357723576","42.32723577235772","1697745712.009","14.929","" +"0","27.28658536585366","42.22560975609756","1697745712.017","14.937","" +"0","27.28658536585366","42.1239837398374","1697745712.025","14.945","" +"0","27.33739837398374","41.97154471544715","1697745712.033","14.953","" +"0","27.38821138211382","41.86991869918699","1697745712.042","14.962","" +"0","27.38821138211382","41.768292682926834","1697745712.05","14.97","" +"0","27.439024390243905","41.61585365853659","1697745712.059","14.979","" +"0","27.439024390243905","41.514227642276424","1697745712.067","14.987","" +"0","27.489837398373986","41.41260162601627","1697745712.075","14.995","" +"0","27.540650406504064","41.3109756097561","1697745712.084","15.004","" +"0","27.540650406504064","41.209349593495936","1697745712.092","15.012","" +"0","27.59146341463415","41.107723577235774","1697745712.1","15.02","" +"0","27.64227642276423","41.006097560975604","1697745712.109","15.029","" +"0","27.693089430894307","40.90447154471545","1697745712.117","15.037","" +"0","27.743902439024392","40.802845528455286","1697745712.125","15.045","" +"0","27.794715447154474","40.70121951219512","1697745712.134","15.054","" +"0","27.84552845528455","40.59959349593496","1697745712.142","15.062","" +"0","27.896341463414636","40.4979674796748","1697745712.15","15.07","" +"0","27.896341463414636","40.39634146341463","1697745712.159","15.079","" +"0","27.947154471544717","40.34552845528455","1697745712.167","15.087","" +"0","27.997967479674795","40.243902439024396","1697745712.175","15.095","" +"0","27.997967479674795","40.142276422764226","1697745712.184","15.104","" +"0","28.04878048780488","40.040650406504064","1697745712.192","15.112","" +"0","28.09959349593496","39.9390243902439","1697745712.2","15.12","" +"0","28.09959349593496","39.83739837398373","1697745712.209","15.129","" +"0","28.09959349593496","39.6849593495935","1697745712.217","15.137","" +"0","28.15040650406504","39.583333333333336","1697745712.225","15.145","" +"0","28.15040650406504","39.43089430894309","1697745712.234","15.154","" +"0","28.20121951219512","39.329268292682926","1697745712.242","15.162","" +"0","28.20121951219512","39.22764227642277","1697745712.25","15.17","" +"0","28.252032520325205","39.07520325203252","1697745712.259","15.179","" +"0","28.252032520325205","38.92276422764228","1697745712.267","15.187","" +"0","28.252032520325205","38.82113821138211","1697745712.275","15.195","" +"0","28.302845528455283","38.66869918699187","1697745712.284","15.204","" +"0","28.302845528455283","38.5670731707317","1697745712.292","15.212","" +"0","28.353658536585364","38.41463414634146","1697745712.3","15.22","" +"0","28.353658536585364","38.31300813008131","1697745712.309","15.229","" +"0","28.40447154471545","38.21138211382114","1697745712.317","15.237","" +"0","28.40447154471545","38.109756097560975","1697745712.326","15.246","" +"0","28.455284552845526","38.00813008130082","1697745712.334","15.254","" +"0","28.506097560975608","37.90650406504065","1697745712.342","15.262","" +"0","28.506097560975608","37.855691056910565","1697745712.35","15.27","" +"0","28.556910569105693","37.75406504065041","1697745712.359","15.279","" +"0","28.60772357723577","37.70325203252033","1697745712.367","15.287","" +"0","28.65853658536585","37.601626016260155","1697745712.375","15.295","" +"0","28.709349593495936","37.55081300813008","1697745712.384","15.304","" +"0","28.810975609756095","37.44918699186992","1697745712.392","15.312","" +"0","28.86178861788618","37.398373983739845","1697745712.4","15.32","" +"0","28.91260162601626","37.29674796747967","1697745712.409","15.329","" +"0","29.014227642276424","37.24593495934959","1697745712.417","15.337","" +"0","29.065040650406505","37.19512195121951","1697745712.425","15.345","" +"0","29.115853658536583","37.09349593495935","1697745712.434","15.354","" +"0","29.166666666666668","37.04268292682927","1697745712.442","15.362","" +"0","29.21747967479675","36.9410569105691","1697745712.451","15.371","" +"0","29.31910569105691","36.890243902439025","1697745712.459","15.379","" +"0","29.31910569105691","36.83943089430895","1697745712.467","15.387","" +"0","29.369918699186993","36.737804878048784","1697745712.475","15.395","" +"0","29.42073170731707","36.68699186991869","1697745712.484","15.404","" +"0","29.471544715447155","36.58536585365854","1697745712.492","15.412","" +"0","29.522357723577237","36.53455284552846","1697745712.5","15.42","" +"0","29.573170731707314","36.4329268292683","1697745712.509","15.429","" +"0","29.6239837398374","36.33130081300813","1697745712.517","15.437","" +"0","29.67479674796748","36.28048780487805","1697745712.526","15.446","" +"0","29.776422764227643","36.17886178861789","1697745712.534","15.454","" +"0","29.827235772357724","36.07723577235772","1697745712.542","15.462","" +"0","29.878048780487802","36.02642276422764","1697745712.551","15.471","" +"0","29.928861788617887","35.92479674796748","1697745712.559","15.479","" +"0","29.979674796747968","35.82317073170732","1697745712.567","15.487","" +"0","30.03048780487805","35.77235772357723","1697745712.576","15.496","" +"0","30.081300813008134","35.670731707317074","1697745712.584","15.504","" +"0","30.182926829268293","35.619918699187","1697745712.592","15.512","" +"0","30.23373983739837","35.51829268292683","1697745712.601","15.521","" +"0","30.284552845528456","35.46747967479675","1697745712.609","15.529","" +"0","30.335365853658537","35.36585365853658","1697745712.617","15.537","" +"0","30.386178861788615","35.264227642276424","1697745712.626","15.546","" +"0","30.4369918699187","35.213414634146346","1697745712.634","15.554","" +"0","30.48780487804878","35.11178861788618","1697745712.642","15.562","" +"0","30.589430894308943","35.01016260162602","1697745712.651","15.571","" +"0","30.640243902439025","34.90853658536585","1697745712.659","15.579","" +"0","30.691056910569102","34.857723577235774","1697745712.667","15.587","" +"0","30.741869918699187","34.70528455284553","1697745712.676","15.596","" +"0","30.79268292682927","34.60365853658537","1697745712.684","15.604","" +"0","30.843495934959346","34.55284552845529","1697745712.692","15.612","" +"0","30.945121951219512","34.400406504065046","1697745712.701","15.621","" +"0","30.945121951219512","34.349593495934954","1697745712.709","15.629","" +"0","30.99593495934959","34.2479674796748","1697745712.717","15.637","" +"0","31.046747967479675","34.14634146341463","1697745712.726","15.646","" +"0","31.097560975609756","34.04471544715447","1697745712.734","15.654","" +"0","31.148373983739834","33.993902439024396","1697745712.742","15.662","" +"0","31.199186991869922","33.892276422764226","1697745712.751","15.671","" +"0","31.25","33.79065040650406","1697745712.759","15.679","" +"0","31.25","33.73983739837398","1697745712.767","15.687","" +"0","31.300813008130078","33.63821138211382","1697745712.776","15.696","" +"0","31.351626016260166","33.58739837398373","1697745712.784","15.704","" +"0","31.402439024390244","33.485772357723576","1697745712.792","15.712","" +"0","31.50406504065041","33.4349593495935","1697745712.801","15.721","" +"0","31.554878048780488","33.33333333333334","1697745712.809","15.729","" +"0","31.60569105691057","33.28252032520325","1697745712.817","15.737","" +"0","31.70731707317073","33.23170731707317","1697745712.826","15.746","" +"0","31.758130081300813","33.130081300813","1697745712.834","15.754","" +"0","31.808943089430898","33.079268292682926","1697745712.842","15.762","" +"0","31.910569105691057","33.02845528455285","1697745712.851","15.771","" +"0","31.96138211382114","32.97764227642277","1697745712.859","15.779","" +"0","32.01219512195122","32.92682926829268","1697745712.867","15.787","" +"0","32.113821138211385","32.8760162601626","1697745712.876","15.796","" +"0","32.16463414634146","32.82520325203252","1697745712.884","15.804","" +"0","32.21544715447154","32.774390243902445","1697745712.892","15.812","" +"0","32.31707317073171","32.672764227642276","1697745712.901","15.821","" +"0","32.36788617886179","32.6219512195122","1697745712.909","15.829","" +"0","32.418699186991866","32.571138211382106","1697745712.917","15.837","" +"0","32.46951219512195","32.52032520325203","1697745712.926","15.846","" +"0","32.52032520325203","32.46951219512195","1697745712.934","15.854","" +"0","32.57113821138211","32.41869918699187","1697745712.942","15.862","" +"0","32.672764227642276","32.367886178861795","1697745712.951","15.871","" +"0","32.72357723577235","32.266260162601625","1697745712.959","15.879","" +"0","32.77439024390244","32.21544715447155","1697745712.967","15.887","" +"0","32.82520325203252","32.16463414634147","1697745712.976","15.896","" +"0","32.926829268292686","32.0630081300813","1697745712.984","15.904","" +"0","32.97764227642276","32.01219512195121","1697745712.992","15.912","" +"0","33.079268292682926","31.96138211382113","1697745713.001","15.921","" +"0","33.13008130081301","31.859756097560975","1697745713.009","15.929","" +"0","33.23170731707317","31.75813008130082","1697745713.017","15.937","" +"0","33.33333333333333","31.707317073170728","1697745713.026","15.946","" +"0","33.38414634146341","31.605691056910572","1697745713.034","15.954","" +"0","33.485772357723576","31.504065040650403","1697745713.043","15.963","" +"0","33.58739837398374","31.402439024390233","1697745713.051","15.971","" +"0","33.6890243902439","31.300813008130078","1697745713.059","15.979","" +"0","33.790650406504064","31.25","1697745713.067","15.987","" +"0","33.892276422764226","31.148373983739845","1697745713.076","15.996","" +"0","33.993902439024396","31.046747967479675","1697745713.084","16.004","" +"0","34.09552845528455","30.945121951219505","1697745713.093","16.013","" +"0","34.197154471544714","30.894308943089428","1697745713.101","16.021","" +"0","34.29878048780488","30.792682926829272","1697745713.109","16.029","" +"0","34.40040650406504","30.74186991869918","1697745713.117","16.037","" +"0","34.5020325203252","30.640243902439025","1697745713.126","16.046","" +"0","34.552845528455286","30.589430894308947","1697745713.134","16.054","" +"0","34.65447154471545","30.53861788617887","1697745713.143","16.063","" +"0","34.756097560975604","30.4369918699187","1697745713.151","16.071","" +"0","34.857723577235774","30.386178861788622","1697745713.159","16.079","" +"0","34.90853658536585","30.33536585365853","1697745713.168","16.088","" +"0","35.010162601626014","30.233739837398375","1697745713.176","16.096","" +"0","35.111788617886184","30.182926829268297","1697745713.184","16.104","" +"0","35.16260162601626","30.081300813008127","1697745713.193","16.113","" +"0","35.264227642276424","30.03048780487805","1697745713.201","16.121","" +"0","35.3150406504065","29.97967479674797","1697745713.209","16.129","" +"0","35.41666666666667","29.878048780487802","1697745713.218","16.138","" +"0","35.51829268292683","29.827235772357724","1697745713.226","16.146","" +"0","35.61991869918699","29.776422764227632","1697745713.234","16.154","" +"0","35.72154471544716","29.725609756097555","1697745713.243","16.163","" +"0","35.823170731707314","29.674796747967477","1697745713.251","16.171","" +"0","35.92479674796748","29.6239837398374","1697745713.259","16.179","" +"0","36.02642276422765","29.52235772357723","1697745713.268","16.188","" +"0","36.1280487804878","29.471544715447152","1697745713.276","16.196","" +"0","36.22967479674797","29.471544715447152","1697745713.284","16.204","" +"0","36.331300813008134","29.369918699186996","1697745713.293","16.213","" +"0","36.43292682926829","29.31910569105692","1697745713.301","16.221","" +"0","36.53455284552846","29.268292682926827","1697745713.309","16.229","" +"0","36.636178861788615","29.21747967479675","1697745713.318","16.238","" +"0","36.73780487804878","29.166666666666657","1697745713.326","16.246","" +"0","36.78861788617886","29.11585365853658","1697745713.334","16.254","" +"0","36.9410569105691","29.0650406504065","1697745713.343","16.263","" +"0","37.042682926829265","29.014227642276424","1697745713.351","16.271","" +"0","37.144308943089435","28.963414634146346","1697745713.359","16.279","" +"0","37.24593495934959","28.861788617886177","1697745713.368","16.288","" +"0","37.34756097560975","28.8109756097561","1697745713.376","16.296","" +"0","37.44918699186992","28.76016260162602","1697745713.384","16.304","" +"0","37.55081300813008","28.709349593495944","1697745713.393","16.313","" +"0","37.65243902439025","28.65853658536585","1697745713.401","16.321","" +"0","37.75406504065041","28.65853658536585","1697745713.409","16.329","" +"0","37.855691056910565","28.556910569105682","1697745713.418","16.338","" +"0","37.957317073170735","28.556910569105682","1697745713.426","16.346","" +"0","38.0589430894309","28.506097560975604","1697745713.434","16.354","" +"0","38.16056910569105","28.455284552845526","1697745713.443","16.363","" +"0","38.26219512195122","28.40447154471545","1697745713.452","16.372","" +"0","38.3130081300813","28.40447154471545","1697745713.46","16.38","" +"0","38.41463414634146","28.35365853658537","1697745713.467","16.387","" +"0","38.516260162601625","28.302845528455293","1697745713.475","16.395","" +"0","38.61788617886179","28.302845528455293","1697745713.484","16.404","" +"0","38.71951219512195","28.2520325203252","1697745713.492","16.412","" +"0","38.82113821138211","28.201219512195124","1697745713.501","16.421","" +"0","38.8719512195122","28.150406504065046","1697745713.509","16.429","" +"0","38.97357723577235","28.099593495934954","1697745713.518","16.438","" +"0","39.07520325203252","28.048780487804876","1697745713.526","16.446","" +"0","39.176829268292686","27.9979674796748","1697745713.534","16.454","" +"0","39.22764227642276","27.947154471544707","1697745713.543","16.463","" +"0","39.329268292682926","27.89634146341463","1697745713.551","16.471","" +"0","39.38008130081301","27.84552845528455","1697745713.559","16.479","" +"0","39.48170731707317","27.794715447154474","1697745713.568","16.488","" +"0","39.53252032520325","27.743902439024396","1697745713.576","16.496","" +"0","39.63414634146341","27.693089430894318","1697745713.584","16.504","" +"0","39.6849593495935","27.642276422764226","1697745713.593","16.513","" +"0","39.78658536585366","27.59146341463415","1697745713.601","16.521","" +"0","39.83739837398374","27.540650406504056","1697745713.609","16.529","" +"0","39.9390243902439","27.48983739837398","1697745713.618","16.538","" +"0","40.040650406504064","27.4390243902439","1697745713.626","16.546","" +"0","40.09146341463415","27.388211382113823","1697745713.635","16.555","" +"0","40.19308943089431","27.33739837398373","1697745713.643","16.563","" +"0","40.243902439024396","27.286585365853654","1697745713.651","16.571","" +"0","40.34552845528455","27.235772357723576","1697745713.659","16.579","" +"0","40.447154471544714","27.1849593495935","1697745713.668","16.588","" +"0","40.54878048780488","27.13414634146342","1697745713.676","16.596","" +"0","40.59959349593496","27.083333333333343","1697745713.685","16.605","" +"0","40.70121951219512","27.03252032520325","1697745713.693","16.613","" +"0","40.802845528455286","26.981707317073173","1697745713.701","16.621","" +"0","40.90447154471545","26.93089430894308","1697745713.71","16.63","" +"0","41.006097560975604","26.880081300813004","1697745713.718","16.638","" +"0","41.107723577235774","26.829268292682926","1697745713.726","16.646","" +"0","41.209349593495936","26.778455284552848","1697745713.735","16.655","" +"0","41.3109756097561","26.72764227642277","1697745713.743","16.663","" +"0","41.46341463414634","26.67682926829268","1697745713.751","16.671","" +"0","41.5650406504065","26.67682926829268","1697745713.76","16.68","" +"0","41.66666666666667","26.6260162601626","1697745713.768","16.688","" +"0","41.81910569105691","26.575203252032523","1697745713.776","16.696","" +"0","41.920731707317074","26.524390243902445","1697745713.785","16.705","" +"0","42.02235772357724","26.473577235772368","1697745713.793","16.713","" +"0","42.1239837398374","26.422764227642276","1697745713.801","16.721","" +"0","42.27642276422765","26.371951219512198","1697745713.81","16.73","" +"0","42.3780487804878","26.321138211382106","1697745713.818","16.738","" +"0","42.47967479674797","26.27032520325203","1697745713.826","16.746","" +"0","42.63211382113821","26.21951219512195","1697745713.835","16.755","" +"0","42.78455284552846","26.168699186991873","1697745713.843","16.763","" +"0","42.886178861788615","26.117886178861795","1697745713.851","16.771","" +"0","43.08943089430895","26.067073170731703","1697745713.86","16.78","" +"0","43.24186991869919","26.016260162601625","1697745713.868","16.788","" +"0","43.394308943089435","25.965447154471548","1697745713.876","16.796","" +"0","43.546747967479675","25.91463414634147","1697745713.885","16.805","" +"0","43.69918699186992","25.8130081300813","1697745713.893","16.813","" +"0","43.85162601626016","25.76219512195121","1697745713.901","16.821","" +"0","44.05487804878049","25.71138211382113","1697745713.91","16.83","" +"0","44.207317073170735","25.660569105691053","1697745713.918","16.838","" +"0","44.359756097560975","25.609756097560975","1697745713.926","16.846","" +"0","44.51219512195122","25.558943089430898","1697745713.935","16.855","" +"0","44.71544715447154","25.50813008130082","1697745713.943","16.863","" +"0","44.86788617886179","25.457317073170728","1697745713.951","16.871","" +"0","45.07113821138211","25.40650406504065","1697745713.96","16.88","" +"0","45.22357723577235","25.355691056910572","1697745713.968","16.888","" +"0","45.426829268292686","25.355691056910572","1697745713.976","16.896","" +"0","45.63008130081301","25.304878048780495","1697745713.985","16.905","" +"0","45.78252032520325","25.254065040650403","1697745713.993","16.913","" +"0","45.9349593495935","25.254065040650403","1697745714.001","16.921","" +"0","46.138211382113816","25.203252032520325","1697745714.01","16.93","" +"0","46.290650406504064","25.203252032520325","1697745714.018","16.938","" +"0","46.44308943089431","25.152439024390233","1697745714.026","16.946","" +"0","46.59552845528455","25.152439024390233","1697745714.035","16.955","" +"0","46.7479674796748","25.152439024390233","1697745714.043","16.963","" +"0","46.90040650406504","25.101626016260155","1697745714.051","16.971","" +"0","47.052845528455286","25.101626016260155","1697745714.06","16.98","" +"0","47.20528455284553","25.050813008130078","1697745714.068","16.988","" +"0","47.30691056910569","25.050813008130078","1697745714.076","16.996","" +"0","47.459349593495936","25.050813008130078","1697745714.085","17.005","" +"0","47.5609756097561","25","1697745714.093","17.013","" +"0","47.66260162601626","25","1697745714.101","17.021","" +"0","47.8150406504065","24.949186991869922","1697745714.11","17.03","" +"0","47.91666666666667","24.949186991869922","1697745714.118","17.038","" +"0","48.01829268292683","24.949186991869922","1697745714.126","17.046","" +"0","48.170731707317074","24.898373983739845","1697745714.135","17.055","" +"0","48.27235772357724","24.898373983739845","1697745714.143","17.063","" +"0","48.3739837398374","24.898373983739845","1697745714.152","17.072","" +"0","48.52642276422765","24.898373983739845","1697745714.16","17.08","" +"0","48.6280487804878","24.847560975609767","1697745714.168","17.088","" +"0","48.78048780487805","24.847560975609767","1697745714.177","17.097","" +"0","48.93292682926829","24.847560975609767","1697745714.185","17.105","" +"0","49.03455284552846","24.847560975609767","1697745714.193","17.113","" +"0","49.1869918699187","24.847560975609767","1697745714.202","17.122","" +"0","49.28861788617886","24.847560975609767","1697745714.21","17.13","" +"0","49.4410569105691","24.847560975609767","1697745714.218","17.138","" +"0","49.59349593495935","24.847560975609767","1697745714.227","17.147","" +"0","49.69512195121951","24.847560975609767","1697745714.235","17.155","" +"0","49.84756097560975","24.847560975609767","1697745714.243","17.163","" +"0","49.94918699186992","24.847560975609767","1697745714.252","17.172","" +"0","50.101626016260155","24.847560975609767","1697745714.26","17.18","" +"0","50.20325203252033","24.847560975609767","1697745714.268","17.188","" +"0","50.30487804878049","24.847560975609767","1697745714.277","17.197","" +"0","50.45731707317073","24.847560975609767","1697745714.285","17.205","" +"0","50.5589430894309","24.847560975609767","1697745714.293","17.213","" +"0","50.66056910569105","24.847560975609767","1697745714.301","17.221","" +"0","50.81300813008131","24.847560975609767","1697745714.31","17.23","" +"0","50.91463414634146","24.796747967479675","1697745714.318","17.238","" +"0","51.0670731707317","24.796747967479675","1697745714.327","17.247","" +"0","51.21951219512195","24.796747967479675","1697745714.335","17.255","" +"0","51.32113821138211","24.796747967479675","1697745714.343","17.263","" +"0","51.47357723577236","24.796747967479675","1697745714.352","17.272","" +"0","51.6260162601626","24.745934959349597","1697745714.36","17.28","" +"0","51.77845528455285","24.745934959349597","1697745714.368","17.288","" +"0","51.93089430894309","24.745934959349597","1697745714.377","17.297","" +"0","52.03252032520326","24.745934959349597","1697745714.385","17.305","" +"0","52.1849593495935","24.745934959349597","1697745714.393","17.313","" +"0","52.286585365853654","24.745934959349597","1697745714.402","17.322","" +"0","52.4390243902439","24.745934959349597","1697745714.41","17.33","" +"0","52.540650406504064","24.745934959349597","1697745714.418","17.338","" +"0","52.69308943089431","24.745934959349597","1697745714.427","17.347","" +"0","52.84552845528455","24.745934959349597","1697745714.435","17.355","" +"0","52.947154471544714","24.745934959349597","1697745714.443","17.363","" +"0","53.09959349593496","24.745934959349597","1697745714.452","17.372","" +"0","53.20121951219512","24.796747967479675","1697745714.46","17.38","" +"0","53.302845528455286","24.796747967479675","1697745714.468","17.388","" +"0","53.45528455284553","24.847560975609767","1697745714.477","17.397","" +"0","53.55691056910569","24.847560975609767","1697745714.485","17.405","" +"0","53.65853658536586","24.898373983739845","1697745714.493","17.413","" +"0","53.8109756097561","24.898373983739845","1697745714.502","17.422","" +"0","53.91260162601627","24.949186991869922","1697745714.51","17.43","" +"0","54.014227642276424","25","1697745714.518","17.438","" +"0","54.166666666666664","25.050813008130078","1697745714.527","17.447","" +"0","54.268292682926834","25.050813008130078","1697745714.535","17.455","" +"0","54.420731707317074","25.101626016260155","1697745714.543","17.463","" +"0","54.52235772357723","25.152439024390233","1697745714.552","17.472","" +"0","54.67479674796748","25.152439024390233","1697745714.56","17.48","" +"0","54.77642276422764","25.203252032520325","1697745714.568","17.488","" +"0","54.92886178861789","25.254065040650403","1697745714.577","17.497","" +"0","55.03048780487805","25.254065040650403","1697745714.585","17.505","" +"0","55.132113821138205","25.304878048780495","1697745714.593","17.513","" +"0","55.233739837398375","25.304878048780495","1697745714.602","17.522","" +"0","55.386178861788615","25.355691056910572","1697745714.61","17.53","" +"0","55.487804878048784","25.355691056910572","1697745714.618","17.538","" +"0","55.640243902439025","25.40650406504065","1697745714.627","17.547","" +"0","55.74186991869918","25.40650406504065","1697745714.635","17.555","" +"0","55.894308943089435","25.457317073170728","1697745714.643","17.563","" +"0","55.99593495934959","25.50813008130082","1697745714.652","17.572","" +"0","56.148373983739845","25.50813008130082","1697745714.66","17.58","" +"0","56.25","25.558943089430898","1697745714.668","17.588","" +"0","56.40243902439024","25.609756097560975","1697745714.677","17.597","" +"0","56.50406504065041","25.660569105691053","1697745714.685","17.605","" +"0","56.65650406504065","25.71138211382113","1697745714.693","17.613","" +"0","56.75813008130082","25.76219512195121","1697745714.702","17.622","" +"0","56.91056910569105","25.8130081300813","1697745714.71","17.63","" +"0","57.012195121951216","25.8130081300813","1697745714.718","17.638","" +"0","57.113821138211385","25.863821138211378","1697745714.727","17.647","" +"0","57.21544715447154","25.91463414634147","1697745714.735","17.655","" +"0","57.3170731707317","25.965447154471548","1697745714.743","17.663","" +"0","57.46951219512195","25.965447154471548","1697745714.752","17.672","" +"0","57.52032520325203","26.016260162601625","1697745714.76","17.68","" +"0","57.62195121951219","26.067073170731703","1697745714.768","17.688","" +"0","57.72357723577236","26.067073170731703","1697745714.777","17.697","" +"0","57.77439024390244","26.117886178861795","1697745714.785","17.705","" +"0","57.8760162601626","26.117886178861795","1697745714.794","17.714","" +"0","57.97764227642277","26.168699186991873","1697745714.802","17.722","" +"0","58.02845528455285","26.168699186991873","1697745714.81","17.73","" +"0","58.13008130081301","26.168699186991873","1697745714.818","17.738","" +"0","58.231707317073166","26.21951219512195","1697745714.827","17.747","" +"0","58.28252032520326","26.21951219512195","1697745714.835","17.755","" +"0","58.38414634146341","26.21951219512195","1697745714.843","17.763","" +"0","58.4349593495935","26.27032520325203","1697745714.852","17.772","" +"0","58.485772357723576","26.27032520325203","1697745714.86","17.78","" +"0","58.58739837398373","26.27032520325203","1697745714.868","17.788","" +"0","58.63821138211382","26.27032520325203","1697745714.877","17.797","" +"0","58.6890243902439","26.27032520325203","1697745714.885","17.805","" +"0","58.739837398373986","26.321138211382106","1697745714.894","17.814","" +"0","58.790650406504064","26.321138211382106","1697745714.902","17.822","" +"0","58.84146341463414","26.321138211382106","1697745714.91","17.83","" +"0","58.892276422764226","26.321138211382106","1697745714.919","17.839","" +"0","58.993902439024396","26.321138211382106","1697745714.927","17.847","" +"0","59.04471544715447","26.371951219512198","1697745714.935","17.855","" +"0","59.09552845528455","26.371951219512198","1697745714.944","17.864","" +"0","59.197154471544714","26.371951219512198","1697745714.952","17.872","" +"0","59.2479674796748","26.371951219512198","1697745714.96","17.88","" +"0","59.34959349593496","26.422764227642276","1697745714.969","17.889","" +"0","59.40040650406504","26.422764227642276","1697745714.977","17.897","" +"0","59.5020325203252","26.422764227642276","1697745714.985","17.905","" +"0","59.60365853658537","26.473577235772368","1697745714.994","17.914","" +"0","59.65447154471545","26.473577235772368","1697745715.002","17.922","" +"0","59.756097560975604","26.473577235772368","1697745715.01","17.93","" +"0","59.80691056910569","26.524390243902445","1697745715.019","17.939","" +"0","59.90853658536586","26.524390243902445","1697745715.027","17.947","" +"0","59.959349593495936","26.524390243902445","1697745715.035","17.955","" +"0","60.0609756097561","26.575203252032523","1697745715.044","17.964","" +"0","60.11178861788618","26.575203252032523","1697745715.052","17.972","" +"0","60.213414634146346","26.575203252032523","1697745715.06","17.98","" +"0","60.264227642276424","26.575203252032523","1697745715.069","17.989","" +"0","60.36585365853659","26.575203252032523","1697745715.077","17.997","" +"0","60.416666666666664","26.6260162601626","1697745715.085","18.005","" +"0","60.518292682926834","26.6260162601626","1697745715.094","18.014","" +"0","60.56910569105691","26.6260162601626","1697745715.102","18.022","" +"0","60.61991869918699","26.6260162601626","1697745715.11","18.03","" +"0","60.72154471544715","26.6260162601626","1697745715.119","18.039","" +"0","60.77235772357723","26.6260162601626","1697745715.127","18.047","" +"0","60.82317073170732","26.67682926829268","1697745715.135","18.055","" +"0","60.92479674796748","26.67682926829268","1697745715.144","18.064","" +"0","60.97560975609756","26.67682926829268","1697745715.152","18.072","" +"0","61.07723577235772","26.72764227642277","1697745715.16","18.08","" +"0","61.17886178861789","26.72764227642277","1697745715.169","18.089","" +"0","61.28048780487805","26.778455284552848","1697745715.177","18.097","" +"0","61.33130081300813","26.778455284552848","1697745715.185","18.105","" +"0","61.483739837398375","26.829268292682926","1697745715.194","18.114","" +"0","61.58536585365854","26.880081300813004","1697745715.202","18.122","" +"0","61.636178861788615","26.93089430894308","1697745715.21","18.13","" +"0","61.78861788617886","26.981707317073173","1697745715.219","18.139","" +"0","61.890243902439025","27.03252032520325","1697745715.227","18.147","" +"0","61.99186991869918","27.083333333333343","1697745715.235","18.155","" +"0","62.09349593495935","27.13414634146342","1697745715.244","18.164","" +"0","62.19512195121951","27.1849593495935","1697745715.252","18.172","" +"0","62.24593495934959","27.235772357723576","1697745715.26","18.18","" +"0","62.34756097560976","27.286585365853654","1697745715.269","18.189","" +"0","62.44918699186992","27.33739837398373","1697745715.277","18.197","" +"0","62.55081300813008","27.388211382113823","1697745715.285","18.205","" +"0","62.601626016260155","27.388211382113823","1697745715.294","18.214","" +"0","62.70325203252033","27.4390243902439","1697745715.302","18.222","" +"0","62.75406504065041","27.48983739837398","1697745715.311","18.231","" +"0","62.80487804878049","27.540650406504056","1697745715.319","18.239","" +"0","62.855691056910565","27.540650406504056","1697745715.327","18.247","" +"0","62.90650406504065","27.59146341463415","1697745715.335","18.255","" +"0","62.90650406504065","27.59146341463415","1697745715.344","18.264","" +"0","62.95731707317073","27.642276422764226","1697745715.352","18.272","" +"0","63.00813008130082","27.642276422764226","1697745715.36","18.28","" +"0","63.00813008130082","27.693089430894318","1697745715.369","18.289","" +"0","63.0589430894309","27.693089430894318","1697745715.377","18.297","" +"0","63.0589430894309","27.743902439024396","1697745715.385","18.305","" +"0","63.109756097560975","27.743902439024396","1697745715.394","18.314","" +"0","63.16056910569105","27.794715447154474","1697745715.402","18.322","" +"0","63.21138211382114","27.794715447154474","1697745715.41","18.33","" +"0","63.262195121951216","27.84552845528455","1697745715.419","18.339","" +"0","63.31300813008131","27.89634146341463","1697745715.427","18.347","" +"0","63.363821138211385","27.89634146341463","1697745715.436","18.356","" +"0","63.46544715447154","27.947154471544707","1697745715.444","18.364","" +"0","63.516260162601625","27.947154471544707","1697745715.452","18.372","" +"0","63.5670731707317","27.9979674796748","1697745715.461","18.381","" +"0","63.617886178861795","28.048780487804876","1697745715.469","18.389","" +"0","63.66869918699187","28.099593495934954","1697745715.477","18.397","" +"0","63.77032520325203","28.099593495934954","1697745715.486","18.406","" +"0","63.82113821138211","28.150406504065046","1697745715.494","18.414","" +"0","63.92276422764228","28.201219512195124","1697745715.502","18.422","" +"0","63.97357723577236","28.2520325203252","1697745715.511","18.431","" +"0","64.07520325203252","28.302845528455293","1697745715.519","18.439","" +"0","64.1260162601626","28.35365853658537","1697745715.527","18.447","" +"0","64.22764227642277","28.40447154471545","1697745715.536","18.456","" +"0","64.27845528455285","28.455284552845526","1697745715.544","18.464","" +"0","64.32926829268293","28.455284552845526","1697745715.552","18.472","" +"0","64.43089430894308","28.506097560975604","1697745715.561","18.481","" +"0","64.48170731707317","28.556910569105682","1697745715.569","18.489","" +"0","64.53252032520325","28.607723577235774","1697745715.577","18.497","" +"0","64.63414634146342","28.607723577235774","1697745715.586","18.506","" +"0","64.6849593495935","28.65853658536585","1697745715.594","18.514","" +"0","64.73577235772358","28.709349593495944","1697745715.602","18.522","" +"0","64.78658536585365","28.76016260162602","1697745715.611","18.531","" +"0","64.83739837398373","28.8109756097561","1697745715.619","18.539","" +"0","64.88821138211382","28.861788617886177","1697745715.627","18.547","" +"0","64.9390243902439","28.91260162601627","1697745715.636","18.556","" +"0","64.98983739837398","28.963414634146346","1697745715.644","18.564","" +"0","65.09146341463415","29.014227642276424","1697745715.652","18.572","" +"0","65.14227642276423","29.0650406504065","1697745715.661","18.581","" +"0","65.19308943089432","29.11585365853658","1697745715.669","18.589","" +"0","65.29471544715447","29.21747967479675","1697745715.677","18.597","" +"0","65.34552845528455","29.268292682926827","1697745715.686","18.606","" +"0","65.4471544715447","29.31910569105692","1697745715.694","18.614","" +"0","65.4979674796748","29.420731707317074","1697745715.702","18.622","" +"0","65.59959349593495","29.471544715447152","1697745715.711","18.631","" +"0","65.65040650406505","29.52235772357723","1697745715.719","18.639","" +"0","65.7520325203252","29.57317073170732","1697745715.727","18.647","" +"0","65.85365853658537","29.6239837398374","1697745715.736","18.656","" +"0","65.90447154471545","29.674796747967477","1697745715.744","18.664","" +"0","66.0060975609756","29.725609756097555","1697745715.752","18.672","" +"0","66.10772357723577","29.776422764227632","1697745715.761","18.681","" +"0","66.15853658536585","29.827235772357724","1697745715.769","18.689","" +"0","66.26016260162602","29.878048780487802","1697745715.778","18.698","" +"0","66.3109756097561","29.928861788617894","1697745715.786","18.706","" +"0","66.36178861788618","29.928861788617894","1697745715.794","18.714","" +"0","66.46341463414635","29.97967479674797","1697745715.802","18.722","" +"0","66.51422764227642","30.03048780487805","1697745715.811","18.731","" +"0","66.5650406504065","30.03048780487805","1697745715.819","18.739","" +"0","66.61585365853658","30.081300813008127","1697745715.827","18.747","" +"0","66.66666666666666","30.132113821138205","1697745715.836","18.756","" +"0","66.76829268292683","30.182926829268297","1697745715.844","18.764","" +"0","66.81910569105692","30.233739837398375","1697745715.852","18.772","" +"0","66.92073170731707","30.284552845528452","1697745715.861","18.781","" +"0","66.97154471544715","30.33536585365853","1697745715.869","18.789","" +"0","67.07317073170732","30.386178861788622","1697745715.877","18.797","" +"0","67.17479674796748","30.48780487804879","1697745715.886","18.806","" +"0","67.27642276422763","30.53861788617887","1697745715.894","18.814","" +"0","67.3780487804878","30.589430894308947","1697745715.903","18.823","" +"0","67.53048780487805","30.691056910569102","1697745715.911","18.831","" +"0","67.58130081300813","30.74186991869918","1697745715.919","18.839","" +"0","67.6829268292683","30.84349593495935","1697745715.927","18.847","" +"0","67.78455284552845","30.894308943089428","1697745715.936","18.856","" +"0","67.88617886178862","30.945121951219505","1697745715.944","18.864","" +"0","67.9369918699187","30.995934959349597","1697745715.952","18.872","" +"0","67.98780487804879","31.097560975609767","1697745715.961","18.881","" +"0","68.03861788617887","31.148373983739845","1697745715.969","18.889","" +"0","68.08943089430895","31.148373983739845","1697745715.978","18.898","" +"0","68.14024390243902","31.25","1697745715.986","18.906","" +"0","68.1910569105691","31.300813008130078","1697745715.994","18.914","" +"0","68.24186991869918","31.351626016260155","1697745716.003","18.923","" +"0","68.29268292682927","31.402439024390233","1697745716.011","18.931","" +"0","68.34349593495935","31.504065040650403","1697745716.019","18.939","" +"0","68.39430894308943","31.554878048780495","1697745716.027","18.947","" +"0","68.4451219512195","31.605691056910572","1697745716.036","18.956","" +"0","68.4959349593496","31.707317073170728","1697745716.044","18.964","" +"0","68.54674796747967","31.75813008130082","1697745716.053","18.973","" +"0","68.59756097560977","31.859756097560975","1697745716.061","18.981","" +"0","68.64837398373984","31.910569105691053","1697745716.069","18.989","" +"0","68.69918699186992","31.96138211382113","1697745716.078","18.998","" +"0","68.75","32.01219512195121","1697745716.086","19.006","" +"0","68.75","32.0630081300813","1697745716.094","19.014","" +"0","68.80081300813008","32.11382113821138","1697745716.103","19.023","" +"0","68.85162601626016","32.16463414634147","1697745716.111","19.031","" +"0","68.85162601626016","32.16463414634147","1697745716.119","19.039","" +"0","68.90243902439023","32.21544715447155","1697745716.128","19.048","" +"0","68.95325203252033","32.266260162601625","1697745716.136","19.056","" +"0","68.95325203252033","32.266260162601625","1697745716.144","19.064","" +"0","69.0040650406504","32.3170731707317","1697745716.153","19.073","" +"0","69.0040650406504","32.3170731707317","1697745716.161","19.081","" +"0","69.0548780487805","32.367886178861795","1697745716.169","19.089","" +"0","69.10569105691057","32.41869918699187","1697745716.178","19.098","" +"0","69.10569105691057","32.46951219512195","1697745716.186","19.106","" +"0","69.15650406504065","32.46951219512195","1697745716.194","19.114","" +"0","69.20731707317073","32.52032520325203","1697745716.206","19.126","" +"0","69.25813008130082","32.571138211382106","1697745716.211","19.131","" +"0","69.25813008130082","32.6219512195122","1697745716.221","19.141","" +"0","69.3089430894309","32.672764227642276","1697745716.227","19.147","" +"0","69.35975609756098","32.72357723577237","1697745716.235","19.155","" +"0","69.41056910569105","32.774390243902445","1697745716.244","19.164","" +"0","69.51219512195121","32.82520325203252","1697745716.252","19.172","" +"0","69.5630081300813","32.8760162601626","1697745716.261","19.181","" +"0","69.61382113821138","32.92682926829268","1697745716.269","19.189","" +"0","69.71544715447155","32.97764227642277","1697745716.278","19.198","" +"0","69.76626016260163","33.079268292682926","1697745716.286","19.206","" +"0","69.8170731707317","33.130081300813","1697745716.294","19.214","" +"0","69.91869918699187","33.18089430894308","1697745716.303","19.223","" +"0","69.96951219512195","33.28252032520325","1697745716.311","19.231","" +"0","70.0711382113821","33.33333333333334","1697745716.319","19.239","" +"0","70.1219512195122","33.4349593495935","1697745716.328","19.248","" +"0","70.22357723577237","33.536585365853654","1697745716.336","19.256","" +"0","70.32520325203252","33.63821138211382","1697745716.344","19.264","" +"0","70.42682926829268","33.73983739837398","1697745716.353","19.273","" +"0","70.47764227642277","33.84146341463415","1697745716.361","19.281","" +"0","70.57926829268293","33.94308943089432","1697745716.369","19.289","" +"0","70.68089430894308","34.04471544715447","1697745716.378","19.298","" +"0","70.73170731707317","34.14634146341463","1697745716.386","19.306","" +"0","70.78252032520325","34.19715447154471","1697745716.394","19.314","" +"0","70.83333333333334","34.298780487804876","1697745716.403","19.323","" +"0","70.88414634146342","34.400406504065046","1697745716.411","19.331","" +"0","70.9349593495935","34.451219512195124","1697745716.419","19.339","" +"0","71.03658536585365","34.55284552845529","1697745716.428","19.348","" +"0","71.08739837398373","34.65447154471545","1697745716.436","19.356","" +"0","71.13821138211382","34.756097560975604","1697745716.444","19.364","" +"0","71.23983739837398","34.857723577235774","1697745716.453","19.373","" +"0","71.29065040650406","35.01016260162602","1697745716.461","19.381","" +"0","71.39227642276423","35.11178861788618","1697745716.469","19.389","" +"0","71.44308943089432","35.213414634146346","1697745716.478","19.398","" +"0","71.54471544715447","35.3150406504065","1697745716.486","19.406","" +"0","71.59552845528455","35.41666666666666","1697745716.494","19.414","" +"0","71.6971544715447","35.51829268292683","1697745716.503","19.423","" +"0","71.7479674796748","35.619918699187","1697745716.511","19.431","" +"0","71.79878048780488","35.670731707317074","1697745716.519","19.439","" +"0","71.84959349593495","35.72154471544715","1697745716.528","19.448","" +"0","71.90040650406505","35.82317073170732","1697745716.536","19.456","" +"0","71.95121951219512","35.8739837398374","1697745716.544","19.464","" +"0","72.0020325203252","35.92479674796748","1697745716.553","19.473","" +"0","72.0528455284553","35.975609756097555","1697745716.561","19.481","" +"0","72.10365853658537","36.02642276422764","1697745716.57","19.49","" +"0","72.15447154471545","36.07723577235772","1697745716.578","19.498","" +"0","72.15447154471545","36.12804878048781","1697745716.586","19.506","" +"0","72.20528455284553","36.22967479674797","1697745716.595","19.515","" +"0","72.2560975609756","36.28048780487805","1697745716.603","19.523","" +"0","72.30691056910568","36.33130081300813","1697745716.611","19.531","" +"0","72.40853658536585","36.4329268292683","1697745716.62","19.54","" +"0","72.45934959349594","36.483739837398375","1697745716.628","19.548","" +"0","72.51016260162602","36.58536585365854","1697745716.636","19.556","" +"0","72.5609756097561","36.636178861788615","1697745716.645","19.565","" +"0","72.61178861788618","36.737804878048784","1697745716.653","19.573","" +"0","72.66260162601627","36.78861788617886","1697745716.661","19.581","" +"0","72.71341463414635","36.890243902439025","1697745716.67","19.59","" +"0","72.76422764227642","36.9410569105691","1697745716.678","19.598","" +"0","72.8150406504065","36.99186991869918","1697745716.686","19.606","" +"0","72.86585365853658","37.04268292682927","1697745716.695","19.615","" +"0","72.86585365853658","37.09349593495935","1697745716.703","19.623","" +"0","72.91666666666666","37.144308943089435","1697745716.711","19.631","" +"0","72.96747967479675","37.24593495934959","1697745716.72","19.64","" +"0","73.01829268292683","37.29674796747967","1697745716.728","19.648","" +"0","73.01829268292683","37.34756097560976","1697745716.736","19.656","" +"0","73.06910569105692","37.398373983739845","1697745716.745","19.665","" +"0","73.119918699187","37.5","1697745716.753","19.673","" +"0","73.17073170731707","37.55081300813008","1697745716.761","19.681","" +"0","73.22154471544715","37.601626016260155","1697745716.77","19.69","" +"0","73.27235772357723","37.65243902439024","1697745716.778","19.698","" +"0","73.32317073170732","37.75406504065041","1697745716.786","19.706","" +"0","73.3739837398374","37.80487804878049","1697745716.795","19.715","" +"0","73.3739837398374","37.855691056910565","1697745716.803","19.723","" +"0","73.42479674796748","37.95731707317073","1697745716.811","19.731","" +"0","73.47560975609755","38.00813008130082","1697745716.82","19.74","" +"0","73.52642276422763","38.0589430894309","1697745716.828","19.748","" +"0","73.57723577235772","38.16056910569105","1697745716.836","19.756","" +"0","73.6280487804878","38.21138211382114","1697745716.845","19.765","" +"0","73.6788617886179","38.31300813008131","1697745716.853","19.773","" +"0","73.72967479674797","38.41463414634146","1697745716.861","19.781","" +"0","73.78048780487805","38.46544715447154","1697745716.87","19.79","" +"0","73.8821138211382","38.5670731707317","1697745716.878","19.798","" +"0","73.9329268292683","38.66869918699187","1697745716.886","19.806","" +"0","73.98373983739837","38.77032520325203","1697745716.895","19.815","" +"0","74.03455284552845","38.87195121951219","1697745716.903","19.823","" +"0","74.08536585365853","38.97357723577236","1697745716.911","19.831","" +"0","74.13617886178862","39.07520325203252","1697745716.92","19.84","" +"0","74.1869918699187","39.17682926829268","1697745716.928","19.848","" +"0","74.23780487804879","39.27845528455285","1697745716.936","19.856","" +"0","74.28861788617887","39.329268292682926","1697745716.945","19.865","" +"0","74.28861788617887","39.43089430894309","1697745716.953","19.873","" +"0","74.33943089430895","39.53252032520326","1697745716.961","19.881","" +"0","74.39024390243902","39.63414634146341","1697745716.97","19.89","" +"0","74.4410569105691","39.735772357723576","1697745716.978","19.898","" +"0","74.49186991869918","39.83739837398373","1697745716.986","19.906","" +"0","74.54268292682927","39.9390243902439","1697745716.995","19.915","" +"0","74.59349593495935","40.040650406504064","1697745717.003","19.923","" +"0","74.64430894308943","40.09146341463414","1697745717.011","19.931","" +"0","74.6951219512195","40.243902439024396","1697745717.02","19.94","" +"0","74.7459349593496","40.34552845528455","1697745717.028","19.948","" +"0","74.79674796747967","40.447154471544714","1697745717.037","19.957","" +"0","74.84756097560977","40.54878048780488","1697745717.045","19.965","" +"0","74.89837398373984","40.65040650406504","1697745717.053","19.973","" +"0","74.94918699186992","40.7520325203252","1697745717.061","19.981","" +"0","75","40.85365853658537","1697745717.07","19.99","" +"0","75.05081300813008","40.95528455284553","1697745717.078","19.998","" +"0","75.10162601626016","41.05691056910569","1697745717.086","20.006","" +"0","75.15243902439023","41.15853658536586","1697745717.095","20.015","" +"0","75.20325203252033","41.260162601626014","1697745717.103","20.023","" +"0","75.2540650406504","41.36178861788618","1697745717.111","20.031","" +"0","75.3048780487805","41.514227642276424","1697745717.12","20.04","" +"0","75.3048780487805","41.61585365853659","1697745717.128","20.048","" +"0","75.35569105691057","41.71747967479674","1697745717.136","20.056","" +"0","75.40650406504065","41.81910569105691","1697745717.145","20.065","" +"0","75.40650406504065","41.920731707317074","1697745717.153","20.073","" +"0","75.45731707317073","42.07317073170732","1697745717.162","20.082","" +"0","75.50813008130082","42.17479674796748","1697745717.17","20.09","" +"0","75.5589430894309","42.32723577235772","1697745717.178","20.098","" +"0","75.60975609756098","42.47967479674797","1697745717.187","20.107","" +"0","75.66056910569105","42.58130081300813","1697745717.195","20.115","" +"0","75.71138211382113","42.733739837398375","1697745717.203","20.123","" +"0","75.76219512195121","42.93699186991869","1697745717.212","20.132","" +"0","75.76219512195121","43.08943089430895","1697745717.22","20.14","" +"0","75.8130081300813","43.24186991869918","1697745717.228","20.148","" +"0","75.86382113821138","43.394308943089435","1697745717.237","20.157","" +"0","75.91463414634147","43.59756097560976","1697745717.245","20.165","" +"0","75.96544715447155","43.75","1697745717.253","20.173","" +"0","75.96544715447155","43.90243902439024","1697745717.262","20.182","" +"0","76.01626016260163","44.05487804878049","1697745717.27","20.19","" +"0","76.0670731707317","44.25813008130082","1697745717.278","20.198","" +"0","76.1178861788618","44.41056910569105","1697745717.287","20.207","" +"0","76.16869918699187","44.56300813008131","1697745717.295","20.215","" +"0","76.16869918699187","44.71544715447154","1697745717.303","20.223","" +"0","76.21951219512195","44.867886178861795","1697745717.312","20.232","" +"0","76.21951219512195","45.02032520325203","1697745717.32","20.24","" +"0","76.27032520325203","45.17276422764228","1697745717.328","20.248","" +"0","76.27032520325203","45.27439024390244","1697745717.337","20.257","" +"0","76.27032520325203","45.42682926829268","1697745717.345","20.265","" +"0","76.27032520325203","45.52845528455285","1697745717.353","20.273","" +"0","76.3211382113821","45.68089430894309","1697745717.362","20.282","" +"0","76.3211382113821","45.78252032520326","1697745717.37","20.29","" +"0","76.3211382113821","45.9349593495935","1697745717.378","20.298","" +"0","76.3211382113821","46.08739837398373","1697745717.387","20.307","" +"0","76.3211382113821","46.1890243902439","1697745717.395","20.315","" +"0","76.3211382113821","46.34146341463414","1697745717.403","20.323","" +"0","76.3719512195122","46.44308943089431","1697745717.412","20.332","" +"0","76.3719512195122","46.59552845528455","1697745717.42","20.34","" +"0","76.3719512195122","46.7479674796748","1697745717.428","20.348","" +"0","76.3719512195122","46.84959349593496","1697745717.437","20.357","" +"0","76.3719512195122","47.0020325203252","1697745717.445","20.365","" +"0","76.3719512195122","47.10365853658537","1697745717.453","20.373","" +"0","76.3719512195122","47.256097560975604","1697745717.462","20.382","" +"0","76.3719512195122","47.357723577235774","1697745717.47","20.39","" +"0","76.3719512195122","47.510162601626014","1697745717.478","20.398","" +"0","76.3719512195122","47.66260162601627","1697745717.487","20.407","" +"0","76.3719512195122","47.764227642276424","1697745717.495","20.415","" +"0","76.3719512195122","47.86585365853659","1697745717.503","20.423","" +"0","76.3719512195122","48.018292682926834","1697745717.512","20.432","" +"0","76.3719512195122","48.11991869918699","1697745717.52","20.44","" +"0","76.42276422764228","48.27235772357723","1697745717.528","20.448","" +"0","76.42276422764228","48.3739837398374","1697745717.537","20.457","" +"0","76.42276422764228","48.47560975609756","1697745717.545","20.465","" +"0","76.42276422764228","48.57723577235772","1697745717.553","20.473","" +"0","76.47357723577237","48.72967479674797","1697745717.562","20.482","" +"0","76.47357723577237","48.83130081300813","1697745717.57","20.49","" +"0","76.47357723577237","48.9329268292683","1697745717.578","20.498","" +"0","76.47357723577237","49.08536585365854","1697745717.587","20.507","" +"0","76.52439024390245","49.18699186991869","1697745717.595","20.515","" +"0","76.52439024390245","49.28861788617886","1697745717.603","20.523","" +"0","76.57520325203252","49.390243902439025","1697745717.612","20.532","" +"0","76.57520325203252","49.49186991869918","1697745717.62","20.54","" +"0","76.6260162601626","49.59349593495935","1697745717.628","20.548","" +"0","76.6260162601626","49.69512195121951","1697745717.637","20.557","" +"0","76.67682926829268","49.79674796747967","1697745717.645","20.565","" +"0","76.67682926829268","49.898373983739845","1697745717.653","20.573","" +"0","76.72764227642277","50","1697745717.662","20.582","" +"0","76.72764227642277","50.10162601626016","1697745717.67","20.59","" +"0","76.77845528455285","50.15243902439025","1697745717.678","20.598","" +"0","76.82926829268293","50.25406504065041","1697745717.687","20.607","" +"0","76.82926829268293","50.355691056910565","1697745717.695","20.615","" +"0","76.880081300813","50.40650406504065","1697745717.704","20.624","" +"0","76.880081300813","50.50813008130081","1697745717.712","20.632","" +"0","76.93089430894308","50.609756097560975","1697745717.72","20.64","" +"0","76.98170731707317","50.66056910569105","1697745717.729","20.649","" +"0","76.98170731707317","50.76219512195122","1697745717.737","20.657","" +"0","77.03252032520325","50.8130081300813","1697745717.745","20.665","" +"0","77.08333333333334","50.91463414634146","1697745717.753","20.673","" +"0","77.08333333333334","50.96544715447154","1697745717.762","20.682","" +"0","77.13414634146342","51.016260162601625","1697745717.77","20.69","" +"0","77.13414634146342","51.016260162601625","1697745717.779","20.699","" +"0","77.1849593495935","51.06707317073171","1697745717.787","20.707","" +"0","77.1849593495935","51.06707317073171","1697745717.795","20.715","" +"0","77.1849593495935","51.06707317073171","1697745717.804","20.724","" +"0","77.1849593495935","51.06707317073171","1697745717.812","20.732","" +"0","77.1849593495935","51.06707317073171","1697745717.82","20.74","" +"0","77.1849593495935","51.06707317073171","1697745717.829","20.749","" +"0","77.1849593495935","51.06707317073171","1697745717.837","20.757","" +"0","77.1849593495935","51.06707317073171","1697745717.845","20.765","" +"0","77.1849593495935","51.06707317073171","1697745717.854","20.774","" +"0","77.1849593495935","51.06707317073171","1697745717.862","20.782","" +"0","77.1849593495935","51.06707317073171","1697745717.87","20.79","" +"0","77.1849593495935","51.06707317073171","1697745717.879","20.799","" +"0","77.1849593495935","51.06707317073171","1697745717.887","20.807","" +"0","77.1849593495935","51.06707317073171","1697745717.895","20.815","" +"0","77.1849593495935","51.06707317073171","1697745717.903","20.823","" diff --git a/tests/sample_data/[5123456]d3afad5c-8a5d-4292-8f54-24109ea6f793-648c7b3e-8819-c112-0b4f-6f3000000000-spiral_trace1_Dom.csv b/tests/sample_data/[5123456]d3afad5c-8a5d-4292-8f54-24109ea6f793-648c7b3e-8819-c112-0b4f-6f3000000000-spiral_trace1_Dom.csv deleted file mode 100755 index a5f2cc4..0000000 --- a/tests/sample_data/[5123456]d3afad5c-8a5d-4292-8f54-24109ea6f793-648c7b3e-8819-c112-0b4f-6f3000000000-spiral_trace1_Dom.csv +++ /dev/null @@ -1,22 +0,0 @@ -line_number,x,y,UTC_Timestamp,seconds,epoch_time_in_seconds_start -0,71.81683853118712,15.795275191186178,1701700376.296,0,1701700376.296 -0,71.66278923541248,15.35701636577275,1701700376.298,0.002, -0,71.12204476861167,14.111438651439883,1701700376.299,0.003, -0,70.89568661971832,13.77173563844002,1701700376.307,0.011, -0,70.72120221327968,13.5515577596438,1701700376.316,0.02, -0,70.5954476861167,13.411063303650025,1701700376.324,0.028, -0,70.56086519114689,13.371221592248801,1701700376.332,0.036, -0,70.60173541247485,13.371221592248801,1701700376.341,0.045, -0,70.82180583501007,13.417354100187069,1701700376.349,0.053, -0,71.20221327967808,13.53058843785368,1701700376.358,0.062, -0,71.70994718309859,13.698343012174604,1701700376.366,0.07, -1,75.38040744466801,15.50380161830357,1701700376.4,0.104, -1,76.68982645875252,16.489359742439007,1701700376.408,0.112, -1,78.20359657947687,17.760100642920023,1701700376.416,0.12, -1,79.92643360160966,19.28037647270341,1701700376.425,0.129, -1,81.46849849094568,20.651770117776977,1701700376.433,0.137, -1,83.04986167002012,21.94348034004811,1701700376.441,0.145, -1,84.61864939637826,23.06953292017731,1701700376.45,0.154, -1,85.8871981891348,23.788780657578286,1701700376.458,0.162, -1,87.0818661971831,24.275268923108968,1701700376.466,0.17, -1,87.60374748490946,24.394794057312623,1701700376.475,0.179, diff --git a/tests/unit/test_center_spiral.py b/tests/unit/test_center_spiral.py new file mode 100644 index 0000000..96eb29f --- /dev/null +++ b/tests/unit/test_center_spiral.py @@ -0,0 +1,43 @@ +"""Test cases for center_spiral.py functions.""" + +import numpy as np +import pytest + +from graphomotor.core import models +from graphomotor.utils import center_spiral + + +def test_center_spiral_valid_type( + perfect_spiral: models.Spiral, ref_spiral: np.ndarray +) -> None: + """Test that center_spiral works with valid Spiral and reference spiral.""" + centered_perfect_spiral = center_spiral.center_spiral(perfect_spiral) + centered_ref_spiral = center_spiral.center_spiral(ref_spiral) + + assert isinstance(centered_perfect_spiral, models.Spiral) + assert np.isclose(centered_perfect_spiral.data["x"].iloc[0], 0) + assert np.isclose(centered_perfect_spiral.data["y"].iloc[0], 0) + + assert isinstance(centered_ref_spiral, np.ndarray) + assert np.array_equal(centered_ref_spiral[0], [0, 0]) + + +@pytest.mark.parametrize( + "invalid_input, expected_type_name", + [ + ("invalid_type", "str"), + (42, "int"), + (None, "NoneType"), + ([1, 2, 3], "list"), + ({}, "dict"), + ], +) +def test_center_spiral_invalid_type( + invalid_input: object, expected_type_name: str +) -> None: + """Test that center_spiral raises TypeError for invalid input types.""" + with pytest.raises( + TypeError, + match=f"Expected models.Spiral or np.ndarray, got {expected_type_name}", + ): + center_spiral.center_spiral(invalid_input) diff --git a/tests/unit/test_config.py b/tests/unit/test_config.py index 1d72119..e038e88 100644 --- a/tests/unit/test_config.py +++ b/tests/unit/test_config.py @@ -50,14 +50,14 @@ ), ], ) -def test_spiral_config_from_dict( +def test_spiral_config_add_custom_params( custom_params: dict[str, int | float], expected_params: dict[str, int | float], expected_warnings: list[str], recwarn: pytest.WarningsRecorder, ) -> None: - """Test the SpiralConfig.from_dict method with various inputs.""" - spiral_config = config.SpiralConfig.from_dict(custom_params) + """Test the SpiralConfig.add_custom_params method with various inputs.""" + spiral_config = config.SpiralConfig.add_custom_params(custom_params) for key, value in expected_params.items(): assert getattr(spiral_config, key) == value diff --git a/tests/unit/test_reference_spiral.py b/tests/unit/test_generate_reference_spiral.py similarity index 95% rename from tests/unit/test_reference_spiral.py rename to tests/unit/test_generate_reference_spiral.py index d2b7fc9..36b62bf 100644 --- a/tests/unit/test_reference_spiral.py +++ b/tests/unit/test_generate_reference_spiral.py @@ -1,4 +1,4 @@ -"""Test cases for reference_spiral.py functions.""" +"""Test cases for generate_reference_spiral.py functions.""" import numpy as np From 349aa8c23973c9b3da551d5e4b92e8ebdc4b9d72 Mon Sep 17 00:00:00 2001 From: Alp Erkent Date: Fri, 16 May 2025 16:12:47 -0400 Subject: [PATCH 04/11] Add experiments directory to .gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 80bf705..e6b6763 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# experiments +experiments/ + # vscode .vscode/ From a19972d26222c73015e7d7aac83f322a750702ca Mon Sep 17 00:00:00 2001 From: Alp Erkent Date: Mon, 19 May 2025 16:10:51 -0400 Subject: [PATCH 05/11] Refactor orchestrator functions to improve naming conventions and enhance CSV export logging and error handling; add unit tests, edit velocity metrics unit test to fix centering changes. --- src/graphomotor/core/orchestrator.py | 43 ++++-- tests/unit/test_orchestrator.py | 219 +++++++++++++++++++++++---- tests/unit/test_velocity.py | 4 +- 3 files changed, 223 insertions(+), 43 deletions(-) diff --git a/src/graphomotor/core/orchestrator.py b/src/graphomotor/core/orchestrator.py index 74b8b61..8f31c9a 100644 --- a/src/graphomotor/core/orchestrator.py +++ b/src/graphomotor/core/orchestrator.py @@ -60,7 +60,7 @@ def _validate_feature_categories(feature_categories: list[str]) -> set[str]: return valid_requested_categories -def get_feature_categories( +def _get_feature_categories( spiral: models.Spiral, reference_spiral: np.ndarray, feature_categories: list[str], @@ -95,7 +95,7 @@ def get_feature_categories( return features -def export_features_to_csv( +def _export_features_to_csv( spiral: models.Spiral, features: dict[str, str], input_path: pathlib.Path, @@ -111,8 +111,6 @@ def export_features_to_csv( """ logger.info(f"Saving extracted features to {output_path}") - os.makedirs(output_path.parent, exist_ok=True) - participant_id = spiral.metadata.get("id") task = spiral.metadata.get("task") hand = spiral.metadata.get("hand") @@ -122,11 +120,21 @@ def export_features_to_csv( f"{datetime.today().strftime('%Y%m%d')}.csv" ) - if output_path.is_dir() or not output_path.suffix: + if not output_path.suffix: + if not os.path.exists(output_path): + logger.info(f"Creating directory that doesn't exist: {output_path}") + os.makedirs(output_path, exist_ok=True) output_file = output_path / filename else: + parent_dir = output_path.parent + if not os.path.exists(parent_dir): + logger.info(f"Creating parent directory that doesn't exist: {parent_dir}") + os.makedirs(parent_dir, exist_ok=True) output_file = output_path + if os.path.exists(output_file): + logger.info(f"Overwriting existing file: {output_file}") + metadata = { "participant_id": participant_id, "task": task, @@ -141,8 +149,12 @@ def export_features_to_csv( } ) - features_df.to_csv(output_file, index=False, header=False) - logger.debug(f"Features saved successfully to {output_file}") + try: + features_df.to_csv(output_file, index=False, header=False) + logger.debug(f"Features saved successfully to {output_file}") + except Exception as e: + logger.error(f"Failed to save features to {output_file}: {str(e)}") + raise def extract_features( @@ -168,9 +180,6 @@ def extract_features( Returns: Dictionary containing the extracted features. """ - # logger.info(f"Starting feature extraction for {input_path}") - # logger.info(f"Requested feature categories: {feature_categories}") - logger.debug(f"Loading spiral data from {input_path}") input_path = _ensure_path(input_path) spiral = reader.load_spiral(input_path) @@ -183,14 +192,14 @@ def extract_features( ) reference_spiral = center_spiral.center_spiral(reference_spiral) - features = get_feature_categories(spiral, reference_spiral, feature_categories) + features = _get_feature_categories(spiral, reference_spiral, feature_categories) logger.info(f"Feature extraction complete. Extracted {len(features)} features") formatted_features = {k: f"{v:.15f}" for k, v in features.items()} if output_path: output_path = _ensure_path(output_path) - export_features_to_csv(spiral, formatted_features, input_path, output_path) + _export_features_to_csv(spiral, formatted_features, input_path, output_path) return formatted_features @@ -205,8 +214,14 @@ def run_pipeline( Args: input_path: Path to the input CSV file containing spiral drawing data. - output_path: Path to save the extracted features. If None, features are not - saved. + output_path: Path where extracted features will be saved. Three behaviors are + possible: + - If None: Features are calculated but not saved to disk. + - If path includes file extension (e.g., "/path/to/output.csv"): This exact + file path is used. + - If path has no file extension (e.g., "/path/to/output"): A file is + created in that directory with auto-generated filename: + "/path/to/output/{participant_id}_{task}_{hand}_features_{date}.csv". feature_categories: List of feature categories to extract. Options are: - "duration": Extract task duration. - "velocity": Extract velocity-based metrics. diff --git a/tests/unit/test_orchestrator.py b/tests/unit/test_orchestrator.py index adb40e2..6d9438d 100644 --- a/tests/unit/test_orchestrator.py +++ b/tests/unit/test_orchestrator.py @@ -1,12 +1,12 @@ """Tests for the orchestrator module.""" import pathlib +from datetime import datetime +import numpy as np import pytest -from graphomotor.core import config, orchestrator - -## TODO: test all functions here, then add a smoke test as well for the whole pipeline +from graphomotor.core import config, models, orchestrator @pytest.mark.parametrize( @@ -18,36 +18,201 @@ (["unknown_category"], "only_invalid"), ], ) -def test_extract_features_categories( +def test_validate_feature_categories( feature_categories: list[str], expected_behavior: str, - sample_data: pathlib.Path, caplog: pytest.LogCaptureFixture, ) -> None: - """Test the feature extraction process with various categories.""" + """Test _validate_feature_categories with various categories.""" if expected_behavior == "only_invalid": with pytest.raises(ValueError, match="No valid feature categories provided"): - orchestrator.extract_features( - input_path=sample_data, - output_path=None, - feature_categories=feature_categories, - spiral_config=config.SpiralConfig(), - ) + orchestrator._validate_feature_categories(feature_categories) else: - features = orchestrator.extract_features( - input_path=sample_data, - output_path=None, - feature_categories=feature_categories, - spiral_config=config.SpiralConfig(), - ) + valid_categories = orchestrator._validate_feature_categories(feature_categories) if expected_behavior == "multiple_valid": - assert len(features) == 25 - elif expected_behavior == "single_valid": - assert len(features) == 1 and "duration" in features - elif expected_behavior == "contains_invalid": - assert ( - "Unknown feature categories requested, these categories will be ignored" - in caplog.text - ) - assert len(features) > 0 + assert len(valid_categories) == 4 + else: + if expected_behavior == "contains_invalid": + assert ( + "Unknown feature categories requested, " + "these categories will be ignored" in caplog.text + ) + assert len(valid_categories) == 1 + assert "duration" in valid_categories + + +@pytest.mark.parametrize( + "feature_categories, expected_feature_number", + [ + (["duration"], 1), + (["velocity"], 15), + (["hausdorff"], 8), + (["AUC"], 1), + (["duration", "velocity", "hausdorff", "AUC"], 25), + ], +) +def test_get_feature_categories( + feature_categories: list[str], + expected_feature_number: int, + valid_spiral: models.Spiral, + ref_spiral: np.ndarray, +) -> None: + """Test _get_feature_categories with various categories.""" + features = orchestrator._get_feature_categories( + valid_spiral, ref_spiral, feature_categories + ) + + assert len(features) == expected_feature_number + + +@pytest.mark.parametrize( + "output_has_extension, dir_exists, should_overwrite, feature_values", + [ + ( + False, + False, + False, + {"feature1": "0"}, + ), + ( + True, + False, + False, + {"feature1": "0", "feature2": "42.0"}, + ), + ( + False, + True, + False, + {"feature1": "0", "feature3": "3.14"}, + ), + ( + True, + True, + False, + {"feature1": "0", "feature2": "42.0", "feature3": "3.14"}, + ), + ( + True, + True, + True, + {"feature1": "0", "feature2": "42.0", "feature3": "3.14", "feature4": "1"}, + ), + ], +) +def test_export_features_to_csv( + output_has_extension: bool, + dir_exists: bool, + should_overwrite: bool, + feature_values: dict, + valid_spiral: models.Spiral, + tmp_path: pathlib.Path, + caplog: pytest.LogCaptureFixture, +) -> None: + """Test _export_features_to_csv with various scenarios.""" + input_path = pathlib.Path("/fake/input/path.csv") + + if output_has_extension: + output_path = tmp_path / "features.csv" + else: + output_path = tmp_path / "output_dir" + + if not dir_exists: + if output_has_extension: + parent_dir = output_path.parent / "nonexistent" + output_path = parent_dir / output_path.name + else: + output_path = output_path / "nonexistent" + + if should_overwrite: + output_path.write_text("This should be overwritten\n") + + expected_filename = ( + f"{valid_spiral.metadata['id']}_{valid_spiral.metadata['task']}_{valid_spiral.metadata['hand']}_" + f"features_{datetime.today().strftime('%Y%m%d')}.csv" + ) + + expected_output_path = output_path + if not output_has_extension: + expected_output_path = output_path / expected_filename + + expected_csv = ( + f"participant_id,{valid_spiral.metadata['id']}\n" + f"task,{valid_spiral.metadata['task']}\n" + f"hand,{valid_spiral.metadata['hand']}\n" + f"source_file,{input_path}\n" + f"feature1,{feature_values['feature1']}\n" + ) + if output_has_extension: + expected_csv += f"feature2,{feature_values['feature2']}\n" + if dir_exists: + expected_csv += f"feature3,{feature_values['feature3']}\n" + if should_overwrite: + expected_csv += f"feature4,{feature_values['feature4']}\n" + + orchestrator._export_features_to_csv( + valid_spiral, + feature_values, + input_path, + output_path, + ) + + actual_csv = expected_output_path.read_text() + + if not dir_exists: + if output_has_extension: + assert "Creating parent directory that doesn't exist:" in caplog.text + else: + assert "Creating directory that doesn't exist:" in caplog.text + if should_overwrite: + assert "Overwriting existing file:" in caplog.text + assert "This should be overwritten" not in actual_csv + assert actual_csv == expected_csv + + +@pytest.mark.parametrize( + "output_path, spiral_config", + [ + (None, None), + ("temp_path", None), + ( + None, + config.SpiralConfig.add_custom_params( + {"center_x": 0, "center_y": 0, "growth_rate": 0} + ), + ), + ], +) +def test_extract_features( + sample_data: pathlib.Path, + output_path: pathlib.Path | None, + spiral_config: config.SpiralConfig | None, + valid_spiral: models.Spiral, + tmp_path: pathlib.Path, +) -> None: + """Test extract_features function with valid categories.""" + if output_path: + output_path = tmp_path / "features.csv" + feature_categories = ["duration", "velocity", "hausdorff", "AUC"] + features = orchestrator.extract_features( + sample_data, output_path, feature_categories, spiral_config + ) + expected_max_hausdorff_distance = 0 + if spiral_config: + expected_max_hausdorff_distance = max( + np.sqrt(x**2 + y**2) + for x, y in zip(valid_spiral.data["x"], valid_spiral.data["y"]) + ) + + assert isinstance(features, dict) + assert len(features) == 25 + assert all(isinstance(value, str) for value in features.values()) + assert all(len(value.split(".")[-1]) <= 15 for value in features.values()) + if output_path: + assert output_path.is_file() + if spiral_config: + assert ( + features["hausdorff_distance_maximum"] + == f"{expected_max_hausdorff_distance:.15f}" + ) diff --git a/tests/unit/test_velocity.py b/tests/unit/test_velocity.py index 82561a8..c3b4c90 100644 --- a/tests/unit/test_velocity.py +++ b/tests/unit/test_velocity.py @@ -17,8 +17,8 @@ def test_calculate_velocity_metrics(valid_spiral: models.Spiral) -> None: t = np.linspace(0, time_total, num_points, endpoint=False) theta = np.linspace(0, theta_end, num_points, endpoint=False) r = spiral_config.growth_rate * theta - x = spiral_config.center_x + r * np.cos(theta) - y = spiral_config.center_y + r * np.sin(theta) + x = r * np.cos(theta) + y = r * np.sin(theta) data = pd.DataFrame({"x": x, "y": y, "seconds": t}) valid_spiral.data = data From 72c9a56756af83cec99c3680cc09f5248ef6f6f7 Mon Sep 17 00:00:00 2001 From: Alp Erkent Date: Mon, 19 May 2025 16:29:28 -0400 Subject: [PATCH 06/11] Fix type casting in test_center_spiral_invalid_type to ensure proper error handling for invalid inputs --- tests/unit/test_center_spiral.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/unit/test_center_spiral.py b/tests/unit/test_center_spiral.py index 96eb29f..91b96f2 100644 --- a/tests/unit/test_center_spiral.py +++ b/tests/unit/test_center_spiral.py @@ -1,5 +1,7 @@ """Test cases for center_spiral.py functions.""" +from typing import cast + import numpy as np import pytest @@ -40,4 +42,4 @@ def test_center_spiral_invalid_type( TypeError, match=f"Expected models.Spiral or np.ndarray, got {expected_type_name}", ): - center_spiral.center_spiral(invalid_input) + center_spiral.center_spiral(cast(models.Spiral, invalid_input)) From b2f52c354603d261db4f4a2e85fb5d17cb080fb8 Mon Sep 17 00:00:00 2001 From: Alp Erkent Date: Mon, 19 May 2025 17:17:02 -0400 Subject: [PATCH 07/11] Refactor test_export_features_to_csv to include exception handling --- tests/unit/test_orchestrator.py | 50 +++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 12 deletions(-) diff --git a/tests/unit/test_orchestrator.py b/tests/unit/test_orchestrator.py index 6d9438d..2559ad7 100644 --- a/tests/unit/test_orchestrator.py +++ b/tests/unit/test_orchestrator.py @@ -67,33 +67,45 @@ def test_get_feature_categories( @pytest.mark.parametrize( - "output_has_extension, dir_exists, should_overwrite, feature_values", + "output_has_extension, dir_exists, overwrite, raise_exception, feature_values", [ ( False, False, False, + False, {"feature1": "0"}, ), ( True, False, False, + False, {"feature1": "0", "feature2": "42.0"}, ), ( False, True, False, + False, {"feature1": "0", "feature3": "3.14"}, ), ( True, True, False, + False, {"feature1": "0", "feature2": "42.0", "feature3": "3.14"}, ), ( + True, + True, + True, + False, + {"feature1": "0", "feature2": "42.0", "feature3": "3.14", "feature4": "1"}, + ), + ( + True, True, True, True, @@ -104,7 +116,8 @@ def test_get_feature_categories( def test_export_features_to_csv( output_has_extension: bool, dir_exists: bool, - should_overwrite: bool, + overwrite: bool, + raise_exception: bool, feature_values: dict, valid_spiral: models.Spiral, tmp_path: pathlib.Path, @@ -125,7 +138,7 @@ def test_export_features_to_csv( else: output_path = output_path / "nonexistent" - if should_overwrite: + if overwrite: output_path.write_text("This should be overwritten\n") expected_filename = ( @@ -148,15 +161,25 @@ def test_export_features_to_csv( expected_csv += f"feature2,{feature_values['feature2']}\n" if dir_exists: expected_csv += f"feature3,{feature_values['feature3']}\n" - if should_overwrite: + if overwrite: expected_csv += f"feature4,{feature_values['feature4']}\n" - orchestrator._export_features_to_csv( - valid_spiral, - feature_values, - input_path, - output_path, - ) + if raise_exception: + output_path.chmod(0o444) + with pytest.raises(Exception): + orchestrator._export_features_to_csv( + valid_spiral, + feature_values, + input_path, + output_path, + ) + else: + orchestrator._export_features_to_csv( + valid_spiral, + feature_values, + input_path, + output_path, + ) actual_csv = expected_output_path.read_text() @@ -165,10 +188,13 @@ def test_export_features_to_csv( assert "Creating parent directory that doesn't exist:" in caplog.text else: assert "Creating directory that doesn't exist:" in caplog.text - if should_overwrite: + if overwrite and not raise_exception: assert "Overwriting existing file:" in caplog.text assert "This should be overwritten" not in actual_csv - assert actual_csv == expected_csv + if raise_exception: + assert "Failed to save features to" in caplog.text + else: + assert actual_csv == expected_csv @pytest.mark.parametrize( From dac5c1bb87c68923c684206ea1fbc549769d8e80 Mon Sep 17 00:00:00 2001 From: Alp Erkent Date: Tue, 20 May 2025 19:39:02 -0400 Subject: [PATCH 08/11] Move FeatureCategories class to models.py, update type hints in orchestrator.py, and break up tests to avoid logic branching --- src/graphomotor/core/config.py | 47 --- src/graphomotor/core/models.py | 48 +++ src/graphomotor/core/orchestrator.py | 35 ++- tests/unit/test_center_spiral.py | 4 +- tests/unit/test_config.py | 39 ++- tests/unit/test_orchestrator.py | 419 ++++++++++++++++----------- 6 files changed, 339 insertions(+), 253 deletions(-) diff --git a/src/graphomotor/core/config.py b/src/graphomotor/core/config.py index b4a531a..ad86293 100644 --- a/src/graphomotor/core/config.py +++ b/src/graphomotor/core/config.py @@ -3,56 +3,9 @@ import logging import warnings from dataclasses import dataclass -from typing import Callable import numpy as np -from graphomotor.core import models -from graphomotor.features import distance, drawing_error, time, velocity - - -class FeatureCategories: - """Class to hold valid feature categories for Graphomotor.""" - - DURATION = "duration" - VELOCITY = "velocity" - HAUSDORFF = "hausdorff" - AUC = "AUC" - - @classmethod - def all(cls) -> set[str]: - """Return all valid feature categories.""" - return { - cls.DURATION, - cls.VELOCITY, - cls.HAUSDORFF, - cls.AUC, - } - - @classmethod - def get_extractors( - cls, spiral: models.Spiral, reference_spiral: np.ndarray - ) -> dict[str, Callable[[], dict[str, float]]]: - """Get all feature extractors with appropriate inputs. - - Args: - spiral: The spiral data to extract features from. - reference_spiral: Reference spiral for comparison-based metrics. - - Returns: - Dictionary mapping category names to their feature extractor functions. - """ - return { - cls.DURATION: lambda: time.get_task_duration(spiral), - cls.VELOCITY: lambda: velocity.calculate_velocity_metrics(spiral), - cls.HAUSDORFF: lambda: distance.calculate_hausdorff_metrics( - spiral, reference_spiral - ), - cls.AUC: lambda: drawing_error.calculate_area_under_curve( - spiral, reference_spiral - ), - } - @dataclass class SpiralConfig: diff --git a/src/graphomotor/core/models.py b/src/graphomotor/core/models.py index c4533b0..c143707 100644 --- a/src/graphomotor/core/models.py +++ b/src/graphomotor/core/models.py @@ -1,7 +1,9 @@ """Internal data class for spiral drawing data.""" from datetime import datetime +from typing import Callable +import numpy as np import pandas as pd from pydantic import BaseModel, ConfigDict, field_validator @@ -77,3 +79,49 @@ def validate_metadata(cls, v: dict) -> dict: ) return v + + +class FeatureCategories: + """Class to hold valid feature categories for Graphomotor.""" + + DURATION = "duration" + VELOCITY = "velocity" + HAUSDORFF = "hausdorff" + AUC = "AUC" + + @classmethod + def all(cls) -> set[str]: + """Return all valid feature categories.""" + return { + cls.DURATION, + cls.VELOCITY, + cls.HAUSDORFF, + cls.AUC, + } + + @classmethod + def get_extractors( + cls, spiral: Spiral, reference_spiral: np.ndarray + ) -> dict[str, Callable[[], dict[str, float]]]: + """Get all feature extractors with appropriate inputs. + + Args: + spiral: The spiral data to extract features from. + reference_spiral: Reference spiral for comparison-based metrics. + + Returns: + Dictionary mapping category names to their feature extractor functions. + """ + # Importing feature modules here to avoid circular imports. + from graphomotor.features import distance, drawing_error, time, velocity + + return { + cls.DURATION: lambda: time.get_task_duration(spiral), + cls.VELOCITY: lambda: velocity.calculate_velocity_metrics(spiral), + cls.HAUSDORFF: lambda: distance.calculate_hausdorff_metrics( + spiral, reference_spiral + ), + cls.AUC: lambda: drawing_error.calculate_area_under_curve( + spiral, reference_spiral + ), + } diff --git a/src/graphomotor/core/orchestrator.py b/src/graphomotor/core/orchestrator.py index 8f31c9a..622c8f5 100644 --- a/src/graphomotor/core/orchestrator.py +++ b/src/graphomotor/core/orchestrator.py @@ -3,6 +3,7 @@ import os import pathlib from datetime import datetime +from typing import Literal import numpy as np import pandas as pd @@ -13,6 +14,8 @@ logger = config.get_logger() +FeatureCategories = Literal["duration", "velocity", "hausdorff", "AUC"] + def _ensure_path(path: pathlib.Path | str) -> pathlib.Path: """Ensure that the input is a Path object. @@ -26,7 +29,9 @@ def _ensure_path(path: pathlib.Path | str) -> pathlib.Path: return pathlib.Path(path) if isinstance(path, str) else path -def _validate_feature_categories(feature_categories: list[str]) -> set[str]: +def _validate_feature_categories( + feature_categories: list[FeatureCategories], +) -> set[str]: """Validate requested feature categories and return valid ones. Args: @@ -38,10 +43,10 @@ def _validate_feature_categories(feature_categories: list[str]) -> set[str]: Raises: ValueError: If no valid feature categories are provided. """ - unknown_categories = set(feature_categories) - config.FeatureCategories.all() - valid_requested_categories = ( - set(feature_categories) & config.FeatureCategories.all() - ) + feature_categories_set: set[str] = set(feature_categories) + supported_categories_set = models.FeatureCategories.all() + unknown_categories = feature_categories_set - supported_categories_set + valid_requested_categories = feature_categories_set & supported_categories_set if unknown_categories: logger.warning( @@ -52,7 +57,7 @@ def _validate_feature_categories(feature_categories: list[str]) -> set[str]: if not valid_requested_categories: error_msg = ( "No valid feature categories provided. " - f"Supported categories: {config.FeatureCategories.all()}" + f"Supported categories: {supported_categories_set}" ) logger.error(error_msg) raise ValueError(error_msg) @@ -63,7 +68,7 @@ def _validate_feature_categories(feature_categories: list[str]) -> set[str]: def _get_feature_categories( spiral: models.Spiral, reference_spiral: np.ndarray, - feature_categories: list[str], + feature_categories: list[FeatureCategories], ) -> dict[str, float]: """Feature categories dispatcher. @@ -81,7 +86,7 @@ def _get_feature_categories( """ valid_categories = _validate_feature_categories(feature_categories) - feature_extractors = config.FeatureCategories.get_extractors( + feature_extractors = models.FeatureCategories.get_extractors( spiral, reference_spiral ) @@ -153,14 +158,14 @@ def _export_features_to_csv( features_df.to_csv(output_file, index=False, header=False) logger.debug(f"Features saved successfully to {output_file}") except Exception as e: + # Allowed to pass in Jupyter Notebook scenarios. logger.error(f"Failed to save features to {output_file}: {str(e)}") - raise def extract_features( input_path: pathlib.Path | str, output_path: pathlib.Path | str | None, - feature_categories: list[str], + feature_categories: list[FeatureCategories], spiral_config: config.SpiralConfig | None, ) -> dict[str, str]: """Extract features from spiral drawing data. @@ -183,16 +188,18 @@ def extract_features( logger.debug(f"Loading spiral data from {input_path}") input_path = _ensure_path(input_path) spiral = reader.load_spiral(input_path) - spiral = center_spiral.center_spiral(spiral) + centered_spiral = center_spiral.center_spiral(spiral) logger.debug("Generating reference spiral to calculate features") config_to_use = spiral_config or config.SpiralConfig() reference_spiral = generate_reference_spiral.generate_reference_spiral( config=config_to_use ) - reference_spiral = center_spiral.center_spiral(reference_spiral) + centered_reference_spiral = center_spiral.center_spiral(reference_spiral) - features = _get_feature_categories(spiral, reference_spiral, feature_categories) + features = _get_feature_categories( + centered_spiral, centered_reference_spiral, feature_categories + ) logger.info(f"Feature extraction complete. Extracted {len(features)} features") formatted_features = {k: f"{v:.15f}" for k, v in features.items()} @@ -207,7 +214,7 @@ def extract_features( def run_pipeline( input_path: pathlib.Path | str, output_path: pathlib.Path | str | None, - feature_categories: list[str], + feature_categories: list[FeatureCategories], config_params: dict[str, float | int] | None = None, ) -> dict[str, str]: """Run the Graphomotor pipeline to extract features from spiral drawing data. diff --git a/tests/unit/test_center_spiral.py b/tests/unit/test_center_spiral.py index 91b96f2..7f0c74f 100644 --- a/tests/unit/test_center_spiral.py +++ b/tests/unit/test_center_spiral.py @@ -17,8 +17,8 @@ def test_center_spiral_valid_type( centered_ref_spiral = center_spiral.center_spiral(ref_spiral) assert isinstance(centered_perfect_spiral, models.Spiral) - assert np.isclose(centered_perfect_spiral.data["x"].iloc[0], 0) - assert np.isclose(centered_perfect_spiral.data["y"].iloc[0], 0) + assert centered_perfect_spiral.data["x"].iloc[0] == 0 + assert centered_perfect_spiral.data["y"].iloc[0] == 0 assert isinstance(centered_ref_spiral, np.ndarray) assert np.array_equal(centered_ref_spiral[0], [0, 0]) diff --git a/tests/unit/test_config.py b/tests/unit/test_config.py index e038e88..39055c0 100644 --- a/tests/unit/test_config.py +++ b/tests/unit/test_config.py @@ -9,7 +9,7 @@ @pytest.mark.parametrize( - "custom_params, expected_params, expected_warnings", + "custom_params, expected_params", [ ( { @@ -28,8 +28,25 @@ "end_angle": 2 * np.pi, "num_points": 100, }, - [], ), + ], +) +def test_spiral_config_add_custom_params_valid( + custom_params: dict[str, int | float], + expected_params: dict[str, int | float], + recwarn: pytest.WarningsRecorder, +) -> None: + """Test that SpiralConfig.add_custom_params correctly sets parameter values.""" + spiral_config = config.SpiralConfig.add_custom_params(custom_params) + + for key, value in expected_params.items(): + assert getattr(spiral_config, key) == value + assert len(recwarn) == 0 + + +@pytest.mark.parametrize( + "custom_params, expected_params, expected_warnings", + [ ( { "growth_rate": 1, @@ -50,26 +67,22 @@ ), ], ) -def test_spiral_config_add_custom_params( +def test_spiral_config_add_custom_params_warnings( custom_params: dict[str, int | float], expected_params: dict[str, int | float], expected_warnings: list[str], recwarn: pytest.WarningsRecorder, ) -> None: - """Test the SpiralConfig.add_custom_params method with various inputs.""" + """Test that SpiralConfig.add_custom_params issues warnings appropriately.""" spiral_config = config.SpiralConfig.add_custom_params(custom_params) + assert len(recwarn) == len(expected_warnings) for key, value in expected_params.items(): assert getattr(spiral_config, key) == value - - if expected_warnings: - assert len(recwarn) == len(expected_warnings) - for i, param in enumerate(expected_warnings): - assert f"Unknown configuration parameters will be ignored: {param}" in str( - recwarn[i].message - ) - else: - assert len(recwarn) == 0 + for i, param in enumerate(expected_warnings): + assert f"Unknown configuration parameters will be ignored: {param}" in str( + recwarn[i].message + ) def test_get_logger(caplog: pytest.LogCaptureFixture) -> None: diff --git a/tests/unit/test_orchestrator.py b/tests/unit/test_orchestrator.py index 2559ad7..c5d9fcb 100644 --- a/tests/unit/test_orchestrator.py +++ b/tests/unit/test_orchestrator.py @@ -2,6 +2,7 @@ import pathlib from datetime import datetime +from typing import cast import numpy as np import pytest @@ -10,36 +11,56 @@ @pytest.mark.parametrize( - "feature_categories, expected_behavior", + "feature_categories, expected_valid_count", [ - (["duration", "velocity", "hausdorff", "AUC"], "multiple_valid"), - (["duration"], "single_valid"), - (["duration", "unknown_category"], "contains_invalid"), - (["unknown_category"], "only_invalid"), + (["duration", "velocity", "hausdorff", "AUC"], 4), + (["duration"], 1), + (["duration", "velocity"], 2), + (["velocity", "hausdorff"], 2), ], ) -def test_validate_feature_categories( - feature_categories: list[str], - expected_behavior: str, - caplog: pytest.LogCaptureFixture, +def test_validate_feature_categories_valid( + feature_categories: list[orchestrator.FeatureCategories], + expected_valid_count: int, ) -> None: - """Test _validate_feature_categories with various categories.""" - if expected_behavior == "only_invalid": - with pytest.raises(ValueError, match="No valid feature categories provided"): - orchestrator._validate_feature_categories(feature_categories) - else: - valid_categories = orchestrator._validate_feature_categories(feature_categories) - - if expected_behavior == "multiple_valid": - assert len(valid_categories) == 4 - else: - if expected_behavior == "contains_invalid": - assert ( - "Unknown feature categories requested, " - "these categories will be ignored" in caplog.text - ) - assert len(valid_categories) == 1 - assert "duration" in valid_categories + """Test _validate_feature_categories with valid categories.""" + valid_categories = orchestrator._validate_feature_categories(feature_categories) + assert len(valid_categories) == expected_valid_count + for category in feature_categories: + assert category in valid_categories + + +@pytest.mark.parametrize( + "feature_categories", + [ + [], + ["unknown_category"], + ["unknown_category", "another_unknown"], + ], +) +def test_validate_feature_categories_only_invalid( + feature_categories: list[orchestrator.FeatureCategories], +) -> None: + """Test _validate_feature_categories with only invalid categories.""" + with pytest.raises(ValueError, match="No valid feature categories provided"): + orchestrator._validate_feature_categories(feature_categories) + + +def test_validate_feature_categories_mixed(caplog: pytest.LogCaptureFixture) -> None: + """Test _validate_feature_categories with mix of valid and invalid categories.""" + feature_categories = cast( + list[orchestrator.FeatureCategories], + [ + "duration", + "meaning_of_life", + ], + ) + valid_categories = orchestrator._validate_feature_categories(feature_categories) + + assert len(valid_categories) == 1 + assert "duration" in valid_categories + assert "Unknown feature categories requested" in caplog.text + assert "meaning_of_life" in caplog.text @pytest.mark.parametrize( @@ -53,7 +74,7 @@ def test_validate_feature_categories( ], ) def test_get_feature_categories( - feature_categories: list[str], + feature_categories: list[orchestrator.FeatureCategories], expected_feature_number: int, valid_spiral: models.Spiral, ref_spiral: np.ndarray, @@ -66,179 +87,223 @@ def test_get_feature_categories( assert len(features) == expected_feature_number -@pytest.mark.parametrize( - "output_has_extension, dir_exists, overwrite, raise_exception, feature_values", - [ - ( - False, - False, - False, - False, - {"feature1": "0"}, - ), - ( - True, - False, - False, - False, - {"feature1": "0", "feature2": "42.0"}, - ), - ( - False, - True, - False, - False, - {"feature1": "0", "feature3": "3.14"}, - ), - ( - True, - True, - False, - False, - {"feature1": "0", "feature2": "42.0", "feature3": "3.14"}, - ), - ( - True, - True, - True, - False, - {"feature1": "0", "feature2": "42.0", "feature3": "3.14", "feature4": "1"}, - ), - ( - True, - True, - True, - True, - {"feature1": "0", "feature2": "42.0", "feature3": "3.14", "feature4": "1"}, - ), - ], -) -def test_export_features_to_csv( - output_has_extension: bool, - dir_exists: bool, - overwrite: bool, - raise_exception: bool, - feature_values: dict, +def test_export_features_to_csv_extension_parent_dir( + valid_spiral: models.Spiral, + tmp_path: pathlib.Path, +) -> None: + """Test _export_features_to_csv with extension and parent directory.""" + input_path = pathlib.Path("/fake/input/path.csv") + output_path = tmp_path / "features.csv" + + orchestrator._export_features_to_csv( + valid_spiral, + {"feature1": "0"}, + input_path, + output_path, + ) + + assert output_path.is_file() + + +def test_export_features_to_csv_extension_no_parent_dir( valid_spiral: models.Spiral, tmp_path: pathlib.Path, caplog: pytest.LogCaptureFixture, ) -> None: - """Test _export_features_to_csv with various scenarios.""" + """Test _export_features_to_csv with extension and no parent directory.""" input_path = pathlib.Path("/fake/input/path.csv") + output_path = tmp_path / "nonexistent" / "features.csv" + + orchestrator._export_features_to_csv( + valid_spiral, + {"feature1": "0"}, + input_path, + output_path, + ) - if output_has_extension: - output_path = tmp_path / "features.csv" - else: - output_path = tmp_path / "output_dir" + assert output_path.is_file() + assert "Creating parent directory that doesn't exist:" in caplog.text - if not dir_exists: - if output_has_extension: - parent_dir = output_path.parent / "nonexistent" - output_path = parent_dir / output_path.name - else: - output_path = output_path / "nonexistent" - if overwrite: - output_path.write_text("This should be overwritten\n") +def test_export_features_to_csv_no_extension_dir_exists( + valid_spiral: models.Spiral, + tmp_path: pathlib.Path, + caplog: pytest.LogCaptureFixture, +) -> None: + """Test _export_features_to_csv with no extension and existing directory.""" + input_path = pathlib.Path("/fake/input/path.csv") + output_path = tmp_path expected_filename = ( f"{valid_spiral.metadata['id']}_{valid_spiral.metadata['task']}_{valid_spiral.metadata['hand']}_" f"features_{datetime.today().strftime('%Y%m%d')}.csv" ) - expected_output_path = output_path - if not output_has_extension: - expected_output_path = output_path / expected_filename - - expected_csv = ( - f"participant_id,{valid_spiral.metadata['id']}\n" - f"task,{valid_spiral.metadata['task']}\n" - f"hand,{valid_spiral.metadata['hand']}\n" - f"source_file,{input_path}\n" - f"feature1,{feature_values['feature1']}\n" - ) - if output_has_extension: - expected_csv += f"feature2,{feature_values['feature2']}\n" - if dir_exists: - expected_csv += f"feature3,{feature_values['feature3']}\n" - if overwrite: - expected_csv += f"feature4,{feature_values['feature4']}\n" - - if raise_exception: - output_path.chmod(0o444) - with pytest.raises(Exception): - orchestrator._export_features_to_csv( - valid_spiral, - feature_values, - input_path, - output_path, - ) - else: - orchestrator._export_features_to_csv( - valid_spiral, - feature_values, - input_path, - output_path, - ) - - actual_csv = expected_output_path.read_text() - - if not dir_exists: - if output_has_extension: - assert "Creating parent directory that doesn't exist:" in caplog.text - else: - assert "Creating directory that doesn't exist:" in caplog.text - if overwrite and not raise_exception: - assert "Overwriting existing file:" in caplog.text - assert "This should be overwritten" not in actual_csv - if raise_exception: - assert "Failed to save features to" in caplog.text - else: - assert actual_csv == expected_csv + expected_output_path = output_path / expected_filename + orchestrator._export_features_to_csv( + valid_spiral, + {"feature1": "0"}, + input_path, + output_path, + ) -@pytest.mark.parametrize( - "output_path, spiral_config", - [ - (None, None), - ("temp_path", None), - ( - None, - config.SpiralConfig.add_custom_params( - {"center_x": 0, "center_y": 0, "growth_rate": 0} - ), - ), - ], -) -def test_extract_features( - sample_data: pathlib.Path, - output_path: pathlib.Path | None, - spiral_config: config.SpiralConfig | None, + assert expected_output_path.is_file() + + +def test_export_features_to_csv_no_extension_no_dir( valid_spiral: models.Spiral, tmp_path: pathlib.Path, + caplog: pytest.LogCaptureFixture, ) -> None: - """Test extract_features function with valid categories.""" - if output_path: - output_path = tmp_path / "features.csv" - feature_categories = ["duration", "velocity", "hausdorff", "AUC"] + """Test _export_features_to_csv with no extension and no directory.""" + input_path = pathlib.Path("/fake/input/path.csv") + output_path = tmp_path / "output_dir" + + expected_filename = ( + f"{valid_spiral.metadata['id']}_{valid_spiral.metadata['task']}_{valid_spiral.metadata['hand']}_" + f"features_{datetime.today().strftime('%Y%m%d')}.csv" + ) + + expected_output_path = output_path / expected_filename + + orchestrator._export_features_to_csv( + valid_spiral, + {"feature1": "0"}, + input_path, + output_path, + ) + + assert expected_output_path.is_file() + assert "Creating directory that doesn't exist:" in caplog.text + + +def test_export_features_to_csv_overwrite( + valid_spiral: models.Spiral, + tmp_path: pathlib.Path, + caplog: pytest.LogCaptureFixture, +) -> None: + """Test _export_features_to_csv with overwrite option.""" + input_path = pathlib.Path("/fake/input/path.csv") + output_path = tmp_path / "features.csv" + output_path.write_text("This should be overwritten\n") + + orchestrator._export_features_to_csv( + valid_spiral, + {"feature1": "0"}, + input_path, + output_path, + ) + + csv_content = output_path.read_text() + + assert output_path.is_file() + assert "Overwriting existing file:" in caplog.text + assert "This should be overwritten" not in csv_content + + +def test_export_features_to_csv_raise_exception( + valid_spiral: models.Spiral, + tmp_path: pathlib.Path, + caplog: pytest.LogCaptureFixture, +) -> None: + """Test _export_features_to_csv raises an exception with a read-only file.""" + input_path = pathlib.Path("/fake/input/path.csv") + output_path = tmp_path / "features.csv" + original_content = "So Long, and Thanks for All the Fish" + output_path.write_text(original_content) + output_path.chmod(0o444) + + orchestrator._export_features_to_csv( + valid_spiral, + {"feature1": "0"}, + input_path, + output_path, + ) + + assert output_path.read_text() == original_content + assert "Failed to save features to" in caplog.text + assert "Permission denied" in caplog.text + + +def test_extract_features_no_output_no_config(sample_data: pathlib.Path) -> None: + """Test extract_features with no output path or custom config.""" + feature_categories: list[orchestrator.FeatureCategories] = [ + "duration", + "velocity", + "hausdorff", + "AUC", + ] features = orchestrator.extract_features( - sample_data, output_path, feature_categories, spiral_config + sample_data, None, feature_categories, None ) - expected_max_hausdorff_distance = 0 - if spiral_config: - expected_max_hausdorff_distance = max( - np.sqrt(x**2 + y**2) - for x, y in zip(valid_spiral.data["x"], valid_spiral.data["y"]) - ) assert isinstance(features, dict) assert len(features) == 25 assert all(isinstance(value, str) for value in features.values()) assert all(len(value.split(".")[-1]) <= 15 for value in features.values()) - if output_path: - assert output_path.is_file() - if spiral_config: - assert ( - features["hausdorff_distance_maximum"] - == f"{expected_max_hausdorff_distance:.15f}" - ) + + +def test_extract_features_with_output_path( + sample_data: pathlib.Path, + tmp_path: pathlib.Path, +) -> None: + """Test extract_features with an output path specified.""" + output_path = tmp_path / "features.csv" + feature_categories: list[orchestrator.FeatureCategories] = [ + "duration", + "velocity", + "hausdorff", + "AUC", + ] + + features = orchestrator.extract_features( + sample_data, output_path, feature_categories, None + ) + + csv_content = output_path.read_text() + lines = csv_content.strip().split("\n") + header_lines = lines[:4] + feature_lines = lines[4:] + + assert output_path.is_file() + assert len(lines) == 29 + assert any(line.startswith("participant_id,") for line in header_lines) + assert any(line.startswith("task,") for line in header_lines) + assert any(line.startswith("hand,") for line in header_lines) + assert any(line.startswith("source_file,") for line in header_lines) + for line in feature_lines: + name, value = line.split(",", 1) + assert name in features + assert features[name] == value + if "." in value: + assert len(value.split(".")[-1]) <= 15 + + +def test_extract_features_with_custom_spiral_config( + sample_data: pathlib.Path, + valid_spiral: models.Spiral, +) -> None: + """Test extract_features with a custom spiral configuration.""" + spiral_config = config.SpiralConfig.add_custom_params( + {"center_x": 0, "center_y": 0, "growth_rate": 0} + ) + feature_categories: list[orchestrator.FeatureCategories] = [ + "duration", + "velocity", + "hausdorff", + "AUC", + ] + features = orchestrator.extract_features( + sample_data, None, feature_categories, spiral_config + ) + + expected_max_hausdorff_distance = max( + np.sqrt(x**2 + y**2) + for x, y in zip(valid_spiral.data["x"], valid_spiral.data["y"]) + ) + + assert ( + features["hausdorff_distance_maximum"] + == f"{expected_max_hausdorff_distance:.15f}" + ) From ec77e5ca8367d349347e6d3a96fb7ef356ac87b3 Mon Sep 17 00:00:00 2001 From: Alp Erkent Date: Wed, 21 May 2025 12:18:18 -0400 Subject: [PATCH 09/11] Refactor run_pipeline function to improve docstring clarity and set default values for output_path and feature_categories --- src/graphomotor/core/orchestrator.py | 50 +++++++++++++++++----------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/src/graphomotor/core/orchestrator.py b/src/graphomotor/core/orchestrator.py index 622c8f5..a226969 100644 --- a/src/graphomotor/core/orchestrator.py +++ b/src/graphomotor/core/orchestrator.py @@ -213,32 +213,42 @@ def extract_features( def run_pipeline( input_path: pathlib.Path | str, - output_path: pathlib.Path | str | None, - feature_categories: list[FeatureCategories], + output_path: pathlib.Path | str | None = None, + feature_categories: list[FeatureCategories] = [ + "duration", + "velocity", + "hausdorff", + "AUC", + ], config_params: dict[str, float | int] | None = None, ) -> dict[str, str]: - """Run the Graphomotor pipeline to extract features from spiral drawing data. + """Run the Graphomotor pipeline to extract features from spiral drawings. Args: - input_path: Path to the input CSV file containing spiral drawing data. - output_path: Path where extracted features will be saved. Three behaviors are - possible: - - If None: Features are calculated but not saved to disk. - - If path includes file extension (e.g., "/path/to/output.csv"): This exact - file path is used. - - If path has no file extension (e.g., "/path/to/output"): A file is - created in that directory with auto-generated filename: - "/path/to/output/{participant_id}_{task}_{hand}_features_{date}.csv". - feature_categories: List of feature categories to extract. Options are: - - "duration": Extract task duration. - - "velocity": Extract velocity-based metrics. - - "hausdorff": Extract Hausdorff distance metrics. - - "AUC": Extract area under the curve metric. - config_params: Optional configuration parameters for spiral drawing. If None, - default parameters are used. + input_path: Path to the input CSV file with spiral drawing data. + output_path: Path to save extracted features. If None, features aren't saved. If + path has an extension, features are saved to that file. If path points to a + directory, a file is created with participant ID, task, hand, and date in + the filename. + feature_categories: Feature categories to extract. Defaults to all available + categories: + - "duration": Task duration + - "velocity": Velocity-based metrics + - "hausdorff": Hausdorff distance metrics + - "AUC": Area under the curve metric + config_params: Optional dictionary with custom spiral configuration parameters. + These parameters control reference spiral generation and spiral centering. + If None, default parameters are used. Supported parameters are: + - "center_x": X-coordinate of the spiral center. Default is 50. + - "center_y": Y-coordinate of the spiral center. Default is 50. + - "start_radius": Starting radius of the spiral. Default is 0. + - "growth_rate": Growth rate of the spiral. Default is 1.075. + - "start_angle": Starting angle of the spiral. Default is 0. + - "end_angle": Ending angle of the spiral. Default is 8π. + - "num_points": Number of points in the spiral. Default is 10000. Returns: - Dictionary containing the extracted features. + Dictionary of extracted features. """ logger.info("Starting Graphomotor pipeline") logger.info(f"Input path: {input_path}") From 33abc0f2f524e2ef1e0e3035251e4a701dd20acb Mon Sep 17 00:00:00 2001 From: Alp Erkent Date: Wed, 21 May 2025 14:07:52 -0400 Subject: [PATCH 10/11] Refactor orchestrator module to add `Literal` type hinting for `config_params` argument of `run_pipeline`; update imports across multiple modules for consistency of importing only at module-level. --- src/graphomotor/core/config.py | 4 +-- src/graphomotor/core/models.py | 18 +++++------ src/graphomotor/core/orchestrator.py | 42 +++++++++++++++++--------- src/graphomotor/utils/center_spiral.py | 6 ++-- tests/unit/test_center_spiral.py | 4 +-- tests/unit/test_orchestrator.py | 10 +++--- 6 files changed, 49 insertions(+), 35 deletions(-) diff --git a/src/graphomotor/core/config.py b/src/graphomotor/core/config.py index ad86293..17d641f 100644 --- a/src/graphomotor/core/config.py +++ b/src/graphomotor/core/config.py @@ -1,13 +1,13 @@ """Configuration module for Graphomotor.""" +import dataclasses import logging import warnings -from dataclasses import dataclass import numpy as np -@dataclass +@dataclasses.dataclass class SpiralConfig: """Class for the parameters of anticipated spiral drawing.""" diff --git a/src/graphomotor/core/models.py b/src/graphomotor/core/models.py index c143707..798d562 100644 --- a/src/graphomotor/core/models.py +++ b/src/graphomotor/core/models.py @@ -1,14 +1,14 @@ """Internal data class for spiral drawing data.""" -from datetime import datetime -from typing import Callable +import datetime +import typing import numpy as np import pandas as pd -from pydantic import BaseModel, ConfigDict, field_validator +import pydantic -class Spiral(BaseModel): +class Spiral(pydantic.BaseModel): """Class representing a spiral drawing, encapsulating both raw data and metadata. Attributes: @@ -21,12 +21,12 @@ class Spiral(BaseModel): - start_time: Start time of drawing. """ - model_config = ConfigDict(arbitrary_types_allowed=True) + model_config = pydantic.ConfigDict(arbitrary_types_allowed=True) data: pd.DataFrame - metadata: dict[str, str | datetime] + metadata: dict[str, str | datetime.datetime] - @field_validator("data") + @pydantic.field_validator("data") @classmethod def validate_dataframe(cls, v: pd.DataFrame) -> pd.DataFrame: """Validate that DataFrame contains required columns and correct data types. @@ -46,7 +46,7 @@ def validate_dataframe(cls, v: pd.DataFrame) -> pd.DataFrame: return v - @field_validator("metadata") + @pydantic.field_validator("metadata") @classmethod def validate_metadata(cls, v: dict) -> dict: """Validate metadata dictionary for required keys and correct data types. @@ -102,7 +102,7 @@ def all(cls) -> set[str]: @classmethod def get_extractors( cls, spiral: Spiral, reference_spiral: np.ndarray - ) -> dict[str, Callable[[], dict[str, float]]]: + ) -> dict[str, typing.Callable[[], dict[str, float]]]: """Get all feature extractors with appropriate inputs. Args: diff --git a/src/graphomotor/core/orchestrator.py b/src/graphomotor/core/orchestrator.py index a226969..75390f0 100644 --- a/src/graphomotor/core/orchestrator.py +++ b/src/graphomotor/core/orchestrator.py @@ -1,9 +1,9 @@ """Runner for the Graphomotor pipeline.""" +import datetime import os import pathlib -from datetime import datetime -from typing import Literal +import typing import numpy as np import pandas as pd @@ -14,7 +14,7 @@ logger = config.get_logger() -FeatureCategories = Literal["duration", "velocity", "hausdorff", "AUC"] +FeatureCategories = typing.Literal["duration", "velocity", "hausdorff", "AUC"] def _ensure_path(path: pathlib.Path | str) -> pathlib.Path: @@ -122,7 +122,7 @@ def _export_features_to_csv( filename = ( f"{participant_id}_{task}_{hand}_features_" - f"{datetime.today().strftime('%Y%m%d')}.csv" + f"{datetime.datetime.today().strftime('%Y%m%d')}.csv" ) if not output_path.suffix: @@ -220,7 +220,19 @@ def run_pipeline( "hausdorff", "AUC", ], - config_params: dict[str, float | int] | None = None, + config_params: dict[ + typing.Literal[ + "center_x", + "center_y", + "start_radius", + "growth_rate", + "start_angle", + "end_angle", + "num_points", + ], + float | int, + ] + | None = None, ) -> dict[str, str]: """Run the Graphomotor pipeline to extract features from spiral drawings. @@ -238,14 +250,14 @@ def run_pipeline( - "AUC": Area under the curve metric config_params: Optional dictionary with custom spiral configuration parameters. These parameters control reference spiral generation and spiral centering. - If None, default parameters are used. Supported parameters are: - - "center_x": X-coordinate of the spiral center. Default is 50. - - "center_y": Y-coordinate of the spiral center. Default is 50. - - "start_radius": Starting radius of the spiral. Default is 0. - - "growth_rate": Growth rate of the spiral. Default is 1.075. - - "start_angle": Starting angle of the spiral. Default is 0. - - "end_angle": Ending angle of the spiral. Default is 8π. - - "num_points": Number of points in the spiral. Default is 10000. + If None, default configuration is used. Supported parameters are: + - "center_x" (float): X-coordinate of the spiral center. Default is 50. + - "center_y" (float): Y-coordinate of the spiral center. Default is 50. + - "start_radius" (float): Starting radius of the spiral. Default is 0. + - "growth_rate" (float): Growth rate of the spiral. Default is 1.075. + - "start_angle" (float): Starting angle of the spiral. Default is 0. + - "end_angle" (float): Ending angle of the spiral. Default is 8π. + - "num_points" (int): Number of points in the spiral. Default is 10000. Returns: Dictionary of extracted features. @@ -258,7 +270,9 @@ def run_pipeline( spiral_config = None if config_params: logger.info(f"Custom spiral configuration: {config_params}") - spiral_config = config.SpiralConfig.add_custom_params(config_params) + spiral_config = config.SpiralConfig.add_custom_params( + typing.cast(dict, config_params) + ) features = extract_features( input_path, output_path, feature_categories, spiral_config diff --git a/src/graphomotor/utils/center_spiral.py b/src/graphomotor/utils/center_spiral.py index a5efdb0..8055615 100644 --- a/src/graphomotor/utils/center_spiral.py +++ b/src/graphomotor/utils/center_spiral.py @@ -1,15 +1,15 @@ """Utility functions for centering a spiral.""" -from typing import overload +import typing import numpy as np from graphomotor.core import config, models -@overload +@typing.overload def center_spiral(spiral: models.Spiral) -> models.Spiral: ... -@overload +@typing.overload def center_spiral(spiral: np.ndarray) -> np.ndarray: ... def center_spiral(spiral): """Center a spiral by translating it to the origin. diff --git a/tests/unit/test_center_spiral.py b/tests/unit/test_center_spiral.py index 7f0c74f..3f6ab52 100644 --- a/tests/unit/test_center_spiral.py +++ b/tests/unit/test_center_spiral.py @@ -1,6 +1,6 @@ """Test cases for center_spiral.py functions.""" -from typing import cast +import typing import numpy as np import pytest @@ -42,4 +42,4 @@ def test_center_spiral_invalid_type( TypeError, match=f"Expected models.Spiral or np.ndarray, got {expected_type_name}", ): - center_spiral.center_spiral(cast(models.Spiral, invalid_input)) + center_spiral.center_spiral(typing.cast(models.Spiral, invalid_input)) diff --git a/tests/unit/test_orchestrator.py b/tests/unit/test_orchestrator.py index c5d9fcb..1e5e8f4 100644 --- a/tests/unit/test_orchestrator.py +++ b/tests/unit/test_orchestrator.py @@ -1,8 +1,8 @@ """Tests for the orchestrator module.""" +import datetime import pathlib -from datetime import datetime -from typing import cast +import typing import numpy as np import pytest @@ -48,7 +48,7 @@ def test_validate_feature_categories_only_invalid( def test_validate_feature_categories_mixed(caplog: pytest.LogCaptureFixture) -> None: """Test _validate_feature_categories with mix of valid and invalid categories.""" - feature_categories = cast( + feature_categories = typing.cast( list[orchestrator.FeatureCategories], [ "duration", @@ -136,7 +136,7 @@ def test_export_features_to_csv_no_extension_dir_exists( expected_filename = ( f"{valid_spiral.metadata['id']}_{valid_spiral.metadata['task']}_{valid_spiral.metadata['hand']}_" - f"features_{datetime.today().strftime('%Y%m%d')}.csv" + f"features_{datetime.datetime.today().strftime('%Y%m%d')}.csv" ) expected_output_path = output_path / expected_filename @@ -162,7 +162,7 @@ def test_export_features_to_csv_no_extension_no_dir( expected_filename = ( f"{valid_spiral.metadata['id']}_{valid_spiral.metadata['task']}_{valid_spiral.metadata['hand']}_" - f"features_{datetime.today().strftime('%Y%m%d')}.csv" + f"features_{datetime.datetime.today().strftime('%Y%m%d')}.csv" ) expected_output_path = output_path / expected_filename From a84ccf721734d2f8a214f6e78edb237bb057d455 Mon Sep 17 00:00:00 2001 From: Alp Erkent Date: Wed, 21 May 2025 14:30:57 -0400 Subject: [PATCH 11/11] Refactor smoke test for `run_pipeline` to be more comprehensive --- src/graphomotor/core/orchestrator.py | 2 +- tests/smoke/test_orchestrator_smoke.py | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/graphomotor/core/orchestrator.py b/src/graphomotor/core/orchestrator.py index 75390f0..3fc7ce0 100644 --- a/src/graphomotor/core/orchestrator.py +++ b/src/graphomotor/core/orchestrator.py @@ -156,7 +156,7 @@ def _export_features_to_csv( try: features_df.to_csv(output_file, index=False, header=False) - logger.debug(f"Features saved successfully to {output_file}") + logger.info(f"Features saved successfully to {output_file}") except Exception as e: # Allowed to pass in Jupyter Notebook scenarios. logger.error(f"Failed to save features to {output_file}: {str(e)}") diff --git a/tests/smoke/test_orchestrator_smoke.py b/tests/smoke/test_orchestrator_smoke.py index b0159dd..e7fd27d 100644 --- a/tests/smoke/test_orchestrator_smoke.py +++ b/tests/smoke/test_orchestrator_smoke.py @@ -10,15 +10,26 @@ def test_orchestrator_happy_path( sample_data: pathlib.Path, caplog: pytest.LogCaptureFixture, + tmp_path: pathlib.Path, ) -> None: """Test the orchestrator with a happy path scenario.""" + output_path = tmp_path / "features.csv" features = orchestrator.run_pipeline( input_path=sample_data, - output_path=None, + output_path=output_path, feature_categories=["duration", "velocity", "hausdorff", "AUC"], - config_params=None, + config_params={"center_x": 0, "center_y": 0}, ) + csv_content = output_path.read_text() + assert "Custom spiral configuration" in caplog.text + assert "Features saved successfully to" in caplog.text assert "Graphomotor pipeline completed successfully" in caplog.text + assert "ERROR" not in caplog.text + assert "WARNING" not in caplog.text + assert isinstance(features, dict) assert len(features) == 25 + + assert output_path.is_file() + assert len(csv_content.strip().split("\n")) == 29