From 12c5045bbef9a773ece25dac4b1e08113b04dae9 Mon Sep 17 00:00:00 2001 From: Jesse Cusack Date: Tue, 27 Jan 2026 10:37:42 -0800 Subject: [PATCH 1/5] add depth average velocity to dive cycles --- .gitignore | 1 + pyproject.toml | 1 + src/glide/assets/config.yml | 75 +++- src/glide/cli.py | 93 ++++- src/glide/process_l1.py | 270 +++++++++++++- tests/test_process_l1.py | 128 +++++++ uv.lock | 697 ++++++++++++++++++++++++++++++++++++ 7 files changed, 1257 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 7cdad7e..d71e300 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .DS_Store +gliderdac* # Python-generated files __pycache__/ diff --git a/pyproject.toml b/pyproject.toml index 3628b7d..41e8b3c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,6 +31,7 @@ build-backend = "hatchling.build" [dependency-groups] dev = [ + "compliance-checker>=5.4.2", "ipykernel>=6.29.5", "matplotlib>=3.10.0", "mypy>=1.15.0", diff --git a/src/glide/assets/config.yml b/src/glide/assets/config.yml index 5cc94c8..d953f4f 100644 --- a/src/glide/assets/config.yml +++ b/src/glide/assets/config.yml @@ -9,11 +9,18 @@ --- ### PART 1 GLOBAL CONFIGURATION -# This part contains global attributes. - +# Edit the name for your deployment +trajectory: + name: YYYYMMDD_gliderSN + attributes: # Don't change the attributes, they are required by IOOS + cf_role: trajectory_id + comment: "A trajectory is a single deployment of a glider and may span multiple data files." + long_name: "Trajectory/Deployment Name" + +# Add CF standard global attributes here netcdf_attributes: title: Example Slocum glider dataset generated by the python package glide. - comment: glide is developed at https://github.com/OSUGliders/glide + comment: glide is developed by the OSU glider group at https://github.com/OSUGliders/glide conventions: "CF-1.6, Unidata Dataset Discovery v1.0" --- ### PART 2 VARIABLE DEFINITIONS, QC CONTROLS, AND METADATA @@ -128,6 +135,68 @@ m_gps_lon: valid_min: -180.0 coordinate_reference_frame: urn:ogc:crs:EPSG::4326 +u: + dtype: f4 + CF: + comment: "The depth-averaged current is an estimate of the net current measured while the glider is underwater. The value is calculated over the entire underwater segment, which may consist of 1 or more dives." + long_name: "Depth-Averaged Eastward Sea Water Velocity" + observation_type: "calculated" + platform: "platform" + source_sensor: "m_water_vx" + standard_name: "eastward_sea_water_velocity" + units: "m s-1" + valid_max: 10. + valid_min: -10. + +v: + dtype: f4 + CF: + comment: "The depth-averaged current is an estimate of the net current measured while the glider is underwater. The value is calculated over the entire underwater segment, which may consist of 1 or more dives." + long_name: "Depth-Averaged Northward Sea Water Velocity" + observation_type: "calculated" + platform: "platform" + source_sensor: "m_water_vy" + standard_name: "northward_sea_water_velocity" + units: "m s-1" + valid_max: 10. + valid_min: -10. + +time_uv: + CF: + calendar: "gregorian" + comment: "The depth-averaged current is an estimate of the net current measured while the glider is underwater. The value is calculated over the entire underwater segment, which may consist of 1 or more dives." + long_name: "Depth-Averaged Time" + observation_type: "calculated" + source_sensor: "m_present_time" + standard_name: "time" + units: "seconds since 1970-01-01T00:00:00Z" + +lat_uv: + dtype: f4 + CF: + comment: "The depth-averaged current is an estimate of the net current measured while the glider is underwater. The value is calculated over the entire underwater segment, which may consist of 1 or more dives." + long_name: "Depth-Averaged Latitude" + observation_type: "calculated" + platform: "platform" + source_sensor: "m_gps_lat" + standard_name: "latitude" + units: "degrees_north" + valid_max: 90. + valid_min: -90. + +lon_uv: + dtype: f4 + CF: + comment: "The depth-averaged current is an estimate of the net current measured while the glider is underwater. The value is calculated over the entire underwater segment, which may consist of 1 or more dives." + long_name: "Depth-Averaged Longitude" + observation_type: "calculated" + platform: "platform" + source_sensor: "m_gps_lon" + standard_name: "longitude" + units: "degrees_east" + valid_max: 180. + valid_min: -180. + heading: source: m_heading conversion: rad_to_deg diff --git a/src/glide/cli.py b/src/glide/cli.py index 464fe30..86ffb55 100644 --- a/src/glide/cli.py +++ b/src/glide/cli.py @@ -7,7 +7,9 @@ from pathlib import Path import netCDF4 as nc +import numpy as np import typer +import xarray as xr from typing_extensions import Annotated from . import ancillery, config, hotel, process_l1, process_l2, process_l3 @@ -118,10 +120,9 @@ def l2( """ conf = config.load_config(config_file) - flt = process_l1.parse_l1(flt_file) + flt_raw = process_l1.parse_l1(flt_file) # Keep raw for velocity extraction + flt = process_l1.format_l1(flt_raw.copy(), conf) sci = process_l1.parse_l1(sci_file) - - flt = process_l1.format_l1(flt, conf) sci = process_l1.format_l1(sci, conf) flt = process_l1.apply_qc(flt, conf) @@ -133,6 +134,10 @@ def l2( out = process_l1.get_profiles(merged, shallowest_profile, profile_distance) + out = process_l1.assign_surface_state(out, flt=flt_raw) + + out = process_l1.add_velocity(out, conf, flt=flt_raw) + out = process_l1.enforce_types(out, conf) out.attrs = conf["globals"]["netcdf_attributes"] @@ -295,6 +300,88 @@ def concat( ds.to_netcdf(out_file) +# @app.command() +# @log_args +# def backfill( +# flt_file: Annotated[ +# str, typer.Argument(help="Flight file (sbd/dbd) with velocity data.") +# ], +# l2_dir: Annotated[ +# str, typer.Argument(help="Directory containing L2 files to update.") +# ], +# lookback: Annotated[ +# int, typer.Option("-n", help="Number of previous files to check.") +# ] = 3, +# tolerance: Annotated[ +# float, typer.Option("-t", help="Max seconds after dive end.") +# ] = 300.0, +# ) -> None: +# """ +# Backfill depth-averaged velocity to previous L2 files missing this data. +# """ +# l2_path = Path(l2_dir) +# flt = xr.open_dataset(flt_file, decode_timedelta=True).load() + +# # Extract velocity data +# if "m_water_vx" not in flt and "m_water_vy" not in flt: +# typer.echo("No velocity data in flight file.") +# return + +# time_flt = flt.m_present_time.values +# u_flt = ( +# flt.m_water_vx.values if "m_water_vx" in flt else np.full_like(time_flt, np.nan) +# ) +# v_flt = ( +# flt.m_water_vy.values if "m_water_vy" in flt else np.full_like(time_flt, np.nan) +# ) +# vel_valid = np.isfinite(u_flt) | np.isfinite(v_flt) + +# if not vel_valid.any(): +# typer.echo("No valid velocity data in flight file.") +# return + +# vel_times = time_flt[vel_valid] +# vel_u = u_flt[vel_valid] +# vel_v = v_flt[vel_valid] +# flt.close() + +# l2_files = sorted( +# l2_path.glob("*.nc"), key=lambda p: p.stat().st_mtime, reverse=True +# ) +# l2_files = l2_files[:lookback] + +# updated = [] +# for l2_file in l2_files: +# with nc.Dataset(str(l2_file), "r+") as ds: +# if "time_uv" not in ds.variables or "u" not in ds.variables: +# continue + +# time_uv = ds.variables["time_uv"][:] +# u_vals = ds.variables["u"][:] +# v_vals = ds.variables["v"][:] + +# file_updated = False +# for i, t_uv in enumerate(time_uv): +# if np.isnan(u_vals[i]): +# # Find last velocity within tolerance of this dive +# match = (vel_times > t_uv - 3600) & (vel_times < t_uv + tolerance) +# if match.any(): +# last_idx = np.where(match)[0][-1] +# ds.variables["u"][i] = vel_u[last_idx] +# ds.variables["v"][i] = vel_v[last_idx] +# file_updated = True +# _log.info("Updated dive %d in %s", i, l2_file) + +# if file_updated and str(l2_file) not in updated: +# updated.append(str(l2_file)) + +# if updated: +# for f in updated: +# typer.echo(f"Updated: {f}") +# else: +# typer.echo("No files updated.") + + @app.command() @log_args def cfg( diff --git a/src/glide/process_l1.py b/src/glide/process_l1.py index cba027f..a8d16d9 100644 --- a/src/glide/process_l1.py +++ b/src/glide/process_l1.py @@ -65,6 +65,13 @@ def _format_variables( ds = ds.drop_vars(remaining_vars) _log.debug("Variables remaining in dataset %s", list(ds.keys())) + + ds["trajectory"] = ( + "traj_strlen", + [config["globals"]["trajectory"]["name"]], + config["globals"]["trajectory"]["attributes"], + ) + return ds @@ -156,6 +163,10 @@ def merge( _log.debug("Dims of dataset to interpolate are %s", ds_to_interp.sizes) _log.debug("Interpolating onto time from %s", times_from) + # This dimension gets in the way of interpolation + if "traj_strlen" in ds_to_interp.dims and "traj_strlen" in ds.dims: + ds_to_interp = ds_to_interp.drop_dims("traj_strlen") + vars_to_interp = set(ds_to_interp.variables) - set(ds_to_interp.coords) for v in vars_to_interp: @@ -280,8 +291,8 @@ def get_profiles( state[climb_start:climb_end] = 2 climb_counter += 1 - ds["dive_id"] = ("time", dive_id, dict(_FillValue=np.int16(-1))) - ds["climb_id"] = ("time", climb_id, dict(_FillValue=np.int16(-1))) + ds["dive_id"] = ("time", dive_id, dict(_FillValue=np.int32(-1))) + ds["climb_id"] = ("time", climb_id, dict(_FillValue=np.int32(-1))) ds["state"] = ( "time", state, @@ -297,6 +308,261 @@ def get_profiles( return ds +def assign_surface_state( + ds: xr.Dataset, + flt: xr.Dataset | None = None, + dt: float = 300.0, +) -> xr.Dataset: + """Assign surface state (0) to unknown points near GPS fixes. + + Points with state == -1 (unknown) that are within `dt` seconds of a valid + GPS fix are marked as surface state (0). + + Parameters + ---------- + ds : xr.Dataset + Dataset with state variable from get_profiles. + flt : xr.Dataset, optional + Raw flight data containing m_gps_lat/lon with valid GPS fix times. + dt : float + Time threshold in seconds for matching to GPS fixes (default 300). + + Returns + ------- + xr.Dataset + Dataset with updated state variable. + """ + if "state" not in ds: + _log.warning("No state variable in dataset") + return ds + + if flt is None or "m_gps_lat" not in flt: + _log.warning("No flight data with GPS, cannot assign surface state") + return ds + + # Get GPS fix times (where lat is valid) + gps_valid = np.isfinite(flt.m_gps_lat.values) + if not gps_valid.any(): + _log.warning("No valid GPS fixes found") + return ds + + gps_times = flt.m_present_time.values[gps_valid] + + # Update state: unknown (-1) near GPS fixes becomes surface (0) + state = ds.state.values.copy() + time_l2 = ds.time.values + + unknown_mask = state == -1 + unknown_indices = np.where(unknown_mask)[0] + + surface_count = 0 + for idx in unknown_indices: + t = time_l2[idx] + # Check if any GPS fix is within dt seconds + if np.any(np.abs(gps_times - t) <= dt): + state[idx] = 0 + surface_count += 1 + + _log.debug("Assigned %d points to surface state", surface_count) + + # Update the state variable + ds["state"] = ( + "time", + state, + ds.state.attrs, + ) + + return ds + + +def _find_dive_cycles(state: np.ndarray) -> list[tuple[int, int, int, int]]: + """Find dive cycles from state array. + + A dive cycle is a contiguous sequence of dive (1), climb (2), and unknown (-1) + states bounded by surface (0) states. Unknown states are included because + there may be gaps at inflection points between dive and climb. + + Parameters + ---------- + state : np.ndarray + State array with values -1 (unknown), 0 (surface), 1 (dive), 2 (climb). + + Returns + ------- + list of tuples + Each tuple is (cycle_start, cycle_end, surf_start, surf_end) where: + - cycle_start/end: indices of the dive/climb portion + - surf_start/end: indices of the following surface period (for velocity lookup) + """ + cycles = [] + n = len(state) + i = 0 + + while i < n: + # Skip initial unknown states at the very start + while i < n and state[i] == -1: + i += 1 + + if i >= n: + break + + # Skip surface period (before dive) + while i < n and state[i] == 0: + i += 1 + + if i >= n: + break + + # Now we should be in dive/climb or unknown (gap) + # Look for any dive or climb state to start a cycle + if state[i] not in (-1, 1, 2): + i += 1 + continue + + # Find the actual start of dive/climb activity + cycle_start = i + + # Continue through dive (1), climb (2), and unknown (-1) until we hit surface (0) + # This captures the full dive cycle including any gaps at inflection points + while i < n and state[i] != 0: + i += 1 + + cycle_end = i + + # Check if this segment actually contains any dive or climb + segment_states = state[cycle_start:cycle_end] + has_dive_climb = np.any((segment_states == 1) | (segment_states == 2)) + + if not has_dive_climb: + # Pure unknown segment, skip it + continue + + # Find following surface period + surf_start = i + while i < n and state[i] == 0: + i += 1 + surf_end = i + + # Only record if we found a surface period after (for velocity) + if surf_end > surf_start: + cycles.append((cycle_start, cycle_end, surf_start, surf_end)) + else: + # No surface after - this is incomplete, skip velocity + cycles.append((cycle_start, cycle_end, -1, -1)) + + return cycles + + +def add_velocity( + ds: xr.Dataset, + config: dict, + flt: xr.Dataset | None = None, +) -> xr.Dataset: + """Add depth-averaged velocity variables to L2 dataset. + + Uses state transitions to identify dive cycles. A dive cycle is all + contiguous dive (1) and climb (2) states between surface (0) periods. + Velocity is taken from the following surface period. + + Parameters + ---------- + ds : xr.Dataset + L2 dataset with state variable (must have surface states assigned). + config : dict + Configuration with variable specifications. + flt : xr.Dataset, optional + Raw flight data containing m_water_vx/vy. + """ + specs = config["variables"] + + def _empty_velocity(): + ds["time_uv"] = (("time_uv",), [np.nan], specs["time_uv"]["CF"]) + ds["lat_uv"] = (("time_uv",), [np.nan], specs["lat_uv"]["CF"]) + ds["lon_uv"] = (("time_uv",), [np.nan], specs["lon_uv"]["CF"]) + ds["u"] = (("time_uv",), [np.nan], specs["u"]["CF"]) + ds["v"] = (("time_uv",), [np.nan], specs["v"]["CF"]) + return ds + + if "state" not in ds: + _log.warning("No state variable in dataset - run get_profiles first") + return _empty_velocity() + + # Find dive cycles from state transitions + cycles = _find_dive_cycles(ds.state.values) + n_cycles = len(cycles) + + if n_cycles < 1: + _log.warning("No dive cycles detected from state transitions") + return _empty_velocity() + + _log.debug("Found %d dive cycles from state transitions", n_cycles) + + # Get flight data arrays for velocity lookup + if flt is not None and "m_water_vx" in flt and "m_water_vy" in flt: + time_flt = flt.m_present_time.values + u_flt = flt.m_water_vx.values + v_flt = flt.m_water_vy.values + else: + time_flt = None + u_flt = None + v_flt = None + _log.warning( + "No flight data with m_water_vx and m_water_vy, velocity will be NaN" + ) + + time_l2 = ds.time.values + lat_l2 = ds.lat.values + lon_l2 = ds.lon.values + + time_uv = np.full(n_cycles, np.nan) + lat_uv = np.full(n_cycles, np.nan) + lon_uv = np.full(n_cycles, np.nan) + u = np.full(n_cycles, np.nan) + v = np.full(n_cycles, np.nan) + + for i, (cycle_start, cycle_end, surf_start, surf_end) in enumerate(cycles): + # Mean time and position from the dive/climb portion + cycle_times = time_l2[cycle_start:cycle_end] + cycle_lats = lat_l2[cycle_start:cycle_end] + cycle_lons = lon_l2[cycle_start:cycle_end] + + if len(cycle_times) > 0: + time_uv[i] = np.nanmean(cycle_times) + lat_uv[i] = np.nanmean(cycle_lats) + lon_uv[i] = np.nanmean(cycle_lons) + + # Find velocity in the following surface period + if surf_start < 0 or time_flt is None: + continue + + t_surf_start = time_l2[surf_start] + t_surf_end = time_l2[surf_end - 1] if surf_end > surf_start else t_surf_start + + # Look for velocity in flight data during surface period + vel_mask = (time_flt >= t_surf_start) & (time_flt <= t_surf_end + 60) + vel_valid = vel_mask & (np.isfinite(u_flt) | np.isfinite(v_flt)) + + if vel_valid.any(): + # Take the last valid velocity (glider may recalculate multiple times) + last_vel_idx = np.where(vel_valid)[0][-1] + u[i] = u_flt[last_vel_idx] + v[i] = v_flt[last_vel_idx] + _log.debug("Cycle %d: assigned u=%.4f, v=%.4f", i, u[i], v[i]) + + ds["time_uv"] = (("time_uv",), time_uv, specs["time_uv"]["CF"]) + ds["lat_uv"] = (("time_uv",), lat_uv, specs["lat_uv"]["CF"]) + ds["lon_uv"] = (("time_uv",), lon_uv, specs["lon_uv"]["CF"]) + ds["u"] = (("time_uv",), u, specs["u"]["CF"]) + ds["v"] = (("time_uv",), v, specs["v"]["CF"]) + + _log.info( + "Added velocity for %d dive cycles, %d with valid data", + n_cycles, + np.isfinite(u).sum(), + ) + return ds + + def enforce_types(ds: xr.Dataset, config: dict) -> xr.Dataset: """Enforce data types on variables based on the configuration file.""" variable_specs = { diff --git a/tests/test_process_l1.py b/tests/test_process_l1.py index a52b7dd..5097629 100644 --- a/tests/test_process_l1.py +++ b/tests/test_process_l1.py @@ -1,5 +1,6 @@ from importlib import resources +import numpy as np import pandas as pd import xarray as xr @@ -28,3 +29,130 @@ def test_format_variables() -> None: def test_parse_l1() -> None: pl1.parse_l1(get_test_data("684", "sbd")) pl1.parse_l1(get_test_data("684", "tbd")) + + +def test_assign_surface_state() -> None: + """Test that surface state is assigned to unknown points near GPS fixes.""" + # Create a synthetic L2 dataset with state variable + n = 100 + time = np.arange(n, dtype=float) + + # State: surface at start, dive in middle, surface at end + # -1 = unknown, 0 = surface, 1 = dive, 2 = climb + state = np.full(n, -1, dtype="b") + state[20:40] = 1 # dive + state[40:60] = 2 # climb + + ds = xr.Dataset( + { + "state": ( + "time", + state, + dict( + long_name="Glider state", + flag_values=np.array([-1, 0, 1, 2], "b"), + flag_meanings="unknown surface dive climb", + ), + ), + }, + coords={"time": time}, + ) + + # Create flight data with GPS fixes at surface times + flt_time = np.arange(n, dtype=float) + gps_lat = np.full(n, np.nan) + gps_lat[5] = 45.0 # GPS fix near start (surface) + gps_lat[10] = 45.0 # Another GPS fix (surface) + gps_lat[70] = 45.0 # GPS fix near end (surface) + gps_lat[80] = 45.0 # Another GPS fix (surface) + + flt = xr.Dataset( + { + "m_gps_lat": ("time", gps_lat), + "m_present_time": ("time", flt_time), + }, + coords={"time": flt_time}, + ) + + # Apply surface state assignment + result = pl1.assign_surface_state(ds, flt, dt=15.0) + + # Check that unknown states near GPS fixes are now surface (0) + assert result.state.values[5] == 0, "Point at GPS fix should be surface" + assert result.state.values[10] == 0, "Point at GPS fix should be surface" + assert result.state.values[70] == 0, "Point near GPS fix should be surface" + assert result.state.values[80] == 0, "Point near GPS fix should be surface" + + # Check that dive/climb states are unchanged + assert np.all(result.state.values[20:40] == 1), "Dive states should be unchanged" + assert np.all(result.state.values[40:60] == 2), "Climb states should be unchanged" + + # Check that unknown states far from GPS fixes remain unknown + assert result.state.values[30] == 1, "Mid-dive should still be dive" + assert result.state.values[50] == 2, "Mid-climb should still be climb" + + +def test_assign_surface_state_no_flight_data() -> None: + """Test that assign_surface_state handles missing flight data gracefully.""" + n = 20 + state = np.full(n, -1, dtype="b") + state[5:15] = 1 + + ds = xr.Dataset( + {"state": ("time", state)}, + coords={"time": np.arange(n, dtype=float)}, + ) + + # No flight data - should return unchanged + result = pl1.assign_surface_state(ds, flt=None) + assert np.array_equal(result.state.values, state) + + +def test_find_dive_cycles() -> None: + """Test that dive cycles are correctly identified from state transitions.""" + # State sequence: surface -> dive -> climb -> surface -> dive -> climb -> surface + state = np.array( + [0, 0, 0, 1, 1, 1, 2, 2, 2, 0, 0, 1, 1, 2, 2, 0, 0, 0], + dtype="b", + ) + + cycles = pl1._find_dive_cycles(state) + + # Should find 2 dive cycles + assert len(cycles) == 2, f"Expected 2 cycles, got {len(cycles)}" + + # First cycle: indices 3-9 (dive+climb), surface 9-11 + cycle_start, cycle_end, surf_start, surf_end = cycles[0] + assert cycle_start == 3 + assert cycle_end == 9 + assert surf_start == 9 + assert surf_end == 11 + + # Second cycle: indices 11-15, surface 15-18 + cycle_start, cycle_end, surf_start, surf_end = cycles[1] + assert cycle_start == 11 + assert cycle_end == 15 + assert surf_start == 15 + assert surf_end == 18 + + +def test_find_dive_cycles_with_unknown_gaps() -> None: + """Test that unknown states at inflection points don't break cycles.""" + # State with unknown gap between dive and climb (at inflection) + # surface -> dive -> unknown (inflection) -> climb -> surface + state = np.array( + [0, 0, 1, 1, 1, -1, -1, 2, 2, 2, 0, 0], + dtype="b", + ) + + cycles = pl1._find_dive_cycles(state) + + # Should find 1 cycle (not 2!) + assert len(cycles) == 1, f"Expected 1 cycle, got {len(cycles)}" + + cycle_start, cycle_end, surf_start, surf_end = cycles[0] + # Cycle should span the entire dive+unknown+climb section + assert cycle_start == 2 + assert cycle_end == 10 + assert surf_start == 10 + assert surf_end == 12 diff --git a/uv.lock b/uv.lock index 71c3575..fd6248b 100644 --- a/uv.lock +++ b/uv.lock @@ -65,6 +65,28 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe", size = 166393, upload-time = "2025-01-31T02:16:45.015Z" }, ] +[[package]] +name = "cf-units" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cftime" }, + { name = "jinja2" }, + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b6/d9/3e4014a228c23a4e10d106eead518d1708f9985f80e5bd3aa66d8268bf22/cf_units-3.3.0.tar.gz", hash = "sha256:2327da492f30cf018a3f1b5950192ce9bb3332e50b1c7ac53f7543de7fa61fdb", size = 319987, upload-time = "2024-10-31T17:24:18.59Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/90/401c9ee0818a9cbc802dfde1887d250887743b4d63d08062580e8ab2d040/cf_units-3.3.0-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:af65fcf34a23b2ac3e822439703f00f1f9c7ecceadfd7de10cee83be083ba0f2", size = 458888, upload-time = "2024-10-31T17:24:03.109Z" }, + { url = "https://files.pythonhosted.org/packages/4b/9e/14660ef9b5aadb0bd728b2997dd44e23b49a935d01fac6b374d31f70c59f/cf_units-3.3.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:a9f1dd41a1d61a74d627037775806dcb9e70a7cf4b1c2f77aecfafa90419e492", size = 451051, upload-time = "2024-10-31T17:24:04.912Z" }, + { url = "https://files.pythonhosted.org/packages/27/13/f10c7ae229642c093118b395f33578d39abfcab56e07bf6b83eb98953689/cf_units-3.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2cce0c048d2c1857527f36ce233fecf4fc81d0f1715399e06c295f7b64492f42", size = 736243, upload-time = "2024-10-31T17:24:07.307Z" }, + { url = "https://files.pythonhosted.org/packages/71/7e/5e6868e8ffc2017f8857c5d3f98b90ab198e0b7df9e671036984759f55d7/cf_units-3.3.0-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:0d9b9cdeca0365001f22bec427dd41102fd8c0afce8a9b7456b958549987c151", size = 459456, upload-time = "2024-10-31T17:24:08.721Z" }, + { url = "https://files.pythonhosted.org/packages/c4/5d/1f1aac4078aaed59b547c9bd2b1143c4518fcd8d0a7111d8f4858925f490/cf_units-3.3.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:7d0fe30bfb8b5edaa7abe073a66bada75c8f94b68c1ff338e389ac0c8256dc3f", size = 451297, upload-time = "2024-10-31T17:24:11.142Z" }, + { url = "https://files.pythonhosted.org/packages/f0/1b/396f255539ed57bb9dad5e4abe46323ef3863b5d60655b961fb76729f788/cf_units-3.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:157d354884ba3c66f29ba95411e5f88de902c1d2cda4842f93829a58dbebb9f3", size = 739965, upload-time = "2024-10-31T17:24:12.946Z" }, + { url = "https://files.pythonhosted.org/packages/f6/59/315cf44dd240cf97d364fe7eb7587df35c7f9ed9da83a9ae85cd49121a1f/cf_units-3.3.0-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:67d15944ef079940affaf4c92d14d83554fd0c43af4ae99607137beb43276c71", size = 458570, upload-time = "2024-10-31T17:24:14.551Z" }, + { url = "https://files.pythonhosted.org/packages/79/88/0f0e555be1ca5eb8ed1f2fed932cc703e24ee0c7cc4198866c6d592a2509/cf_units-3.3.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e63f2dd523658941a6da0490349a831d926ab49ec90278a8759979063dd3acf7", size = 450495, upload-time = "2024-10-31T17:24:15.953Z" }, + { url = "https://files.pythonhosted.org/packages/48/87/e4a2158ad7756892bf2addb4b70783dc67907dde1632cd50120895afda3f/cf_units-3.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e26ac5412c828edb33ae510470c74213e1bd2280559e078b779799c44d33349", size = 735070, upload-time = "2024-10-31T17:24:17.32Z" }, +] + [[package]] name = "cffi" version = "1.17.1" @@ -139,6 +161,79 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f3/2d/980323fb5ec1ef369604b61ba259a41d0336cc1a85b639ed7bd210bd1290/cftime-1.6.4.post1-cp313-cp313-win_amd64.whl", hash = "sha256:d2a8c223faea7f1248ab469cc0d7795dd46f2a423789038f439fee7190bae259", size = 178496, upload-time = "2024-10-22T18:48:16.8Z" }, ] +[[package]] +name = "charset-normalizer" +version = "3.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload-time = "2025-10-14T04:42:32.879Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/27/c6491ff4954e58a10f69ad90aca8a1b6fe9c5d3c6f380907af3c37435b59/charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8", size = 206988, upload-time = "2025-10-14T04:40:33.79Z" }, + { url = "https://files.pythonhosted.org/packages/94/59/2e87300fe67ab820b5428580a53cad894272dbb97f38a7a814a2a1ac1011/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0", size = 147324, upload-time = "2025-10-14T04:40:34.961Z" }, + { url = "https://files.pythonhosted.org/packages/07/fb/0cf61dc84b2b088391830f6274cb57c82e4da8bbc2efeac8c025edb88772/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3", size = 142742, upload-time = "2025-10-14T04:40:36.105Z" }, + { url = "https://files.pythonhosted.org/packages/62/8b/171935adf2312cd745d290ed93cf16cf0dfe320863ab7cbeeae1dcd6535f/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc", size = 160863, upload-time = "2025-10-14T04:40:37.188Z" }, + { url = "https://files.pythonhosted.org/packages/09/73/ad875b192bda14f2173bfc1bc9a55e009808484a4b256748d931b6948442/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897", size = 157837, upload-time = "2025-10-14T04:40:38.435Z" }, + { url = "https://files.pythonhosted.org/packages/6d/fc/de9cce525b2c5b94b47c70a4b4fb19f871b24995c728e957ee68ab1671ea/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381", size = 151550, upload-time = "2025-10-14T04:40:40.053Z" }, + { url = "https://files.pythonhosted.org/packages/55/c2/43edd615fdfba8c6f2dfbd459b25a6b3b551f24ea21981e23fb768503ce1/charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815", size = 149162, upload-time = "2025-10-14T04:40:41.163Z" }, + { url = "https://files.pythonhosted.org/packages/03/86/bde4ad8b4d0e9429a4e82c1e8f5c659993a9a863ad62c7df05cf7b678d75/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0", size = 150019, upload-time = "2025-10-14T04:40:42.276Z" }, + { url = "https://files.pythonhosted.org/packages/1f/86/a151eb2af293a7e7bac3a739b81072585ce36ccfb4493039f49f1d3cae8c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161", size = 143310, upload-time = "2025-10-14T04:40:43.439Z" }, + { url = "https://files.pythonhosted.org/packages/b5/fe/43dae6144a7e07b87478fdfc4dbe9efd5defb0e7ec29f5f58a55aeef7bf7/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4", size = 162022, upload-time = "2025-10-14T04:40:44.547Z" }, + { url = "https://files.pythonhosted.org/packages/80/e6/7aab83774f5d2bca81f42ac58d04caf44f0cc2b65fc6db2b3b2e8a05f3b3/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89", size = 149383, upload-time = "2025-10-14T04:40:46.018Z" }, + { url = "https://files.pythonhosted.org/packages/4f/e8/b289173b4edae05c0dde07f69f8db476a0b511eac556dfe0d6bda3c43384/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569", size = 159098, upload-time = "2025-10-14T04:40:47.081Z" }, + { url = "https://files.pythonhosted.org/packages/d8/df/fe699727754cae3f8478493c7f45f777b17c3ef0600e28abfec8619eb49c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224", size = 152991, upload-time = "2025-10-14T04:40:48.246Z" }, + { url = "https://files.pythonhosted.org/packages/1a/86/584869fe4ddb6ffa3bd9f491b87a01568797fb9bd8933f557dba9771beaf/charset_normalizer-3.4.4-cp311-cp311-win32.whl", hash = "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a", size = 99456, upload-time = "2025-10-14T04:40:49.376Z" }, + { url = "https://files.pythonhosted.org/packages/65/f6/62fdd5feb60530f50f7e38b4f6a1d5203f4d16ff4f9f0952962c044e919a/charset_normalizer-3.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016", size = 106978, upload-time = "2025-10-14T04:40:50.844Z" }, + { url = "https://files.pythonhosted.org/packages/7a/9d/0710916e6c82948b3be62d9d398cb4fcf4e97b56d6a6aeccd66c4b2f2bd5/charset_normalizer-3.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1", size = 99969, upload-time = "2025-10-14T04:40:52.272Z" }, + { url = "https://files.pythonhosted.org/packages/f3/85/1637cd4af66fa687396e757dec650f28025f2a2f5a5531a3208dc0ec43f2/charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394", size = 208425, upload-time = "2025-10-14T04:40:53.353Z" }, + { url = "https://files.pythonhosted.org/packages/9d/6a/04130023fef2a0d9c62d0bae2649b69f7b7d8d24ea5536feef50551029df/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25", size = 148162, upload-time = "2025-10-14T04:40:54.558Z" }, + { url = "https://files.pythonhosted.org/packages/78/29/62328d79aa60da22c9e0b9a66539feae06ca0f5a4171ac4f7dc285b83688/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef", size = 144558, upload-time = "2025-10-14T04:40:55.677Z" }, + { url = "https://files.pythonhosted.org/packages/86/bb/b32194a4bf15b88403537c2e120b817c61cd4ecffa9b6876e941c3ee38fe/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d", size = 161497, upload-time = "2025-10-14T04:40:57.217Z" }, + { url = "https://files.pythonhosted.org/packages/19/89/a54c82b253d5b9b111dc74aca196ba5ccfcca8242d0fb64146d4d3183ff1/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8", size = 159240, upload-time = "2025-10-14T04:40:58.358Z" }, + { url = "https://files.pythonhosted.org/packages/c0/10/d20b513afe03acc89ec33948320a5544d31f21b05368436d580dec4e234d/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86", size = 153471, upload-time = "2025-10-14T04:40:59.468Z" }, + { url = "https://files.pythonhosted.org/packages/61/fa/fbf177b55bdd727010f9c0a3c49eefa1d10f960e5f09d1d887bf93c2e698/charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a", size = 150864, upload-time = "2025-10-14T04:41:00.623Z" }, + { url = "https://files.pythonhosted.org/packages/05/12/9fbc6a4d39c0198adeebbde20b619790e9236557ca59fc40e0e3cebe6f40/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f", size = 150647, upload-time = "2025-10-14T04:41:01.754Z" }, + { url = "https://files.pythonhosted.org/packages/ad/1f/6a9a593d52e3e8c5d2b167daf8c6b968808efb57ef4c210acb907c365bc4/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc", size = 145110, upload-time = "2025-10-14T04:41:03.231Z" }, + { url = "https://files.pythonhosted.org/packages/30/42/9a52c609e72471b0fc54386dc63c3781a387bb4fe61c20231a4ebcd58bdd/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf", size = 162839, upload-time = "2025-10-14T04:41:04.715Z" }, + { url = "https://files.pythonhosted.org/packages/c4/5b/c0682bbf9f11597073052628ddd38344a3d673fda35a36773f7d19344b23/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15", size = 150667, upload-time = "2025-10-14T04:41:05.827Z" }, + { url = "https://files.pythonhosted.org/packages/e4/24/a41afeab6f990cf2daf6cb8c67419b63b48cf518e4f56022230840c9bfb2/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9", size = 160535, upload-time = "2025-10-14T04:41:06.938Z" }, + { url = "https://files.pythonhosted.org/packages/2a/e5/6a4ce77ed243c4a50a1fecca6aaaab419628c818a49434be428fe24c9957/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0", size = 154816, upload-time = "2025-10-14T04:41:08.101Z" }, + { url = "https://files.pythonhosted.org/packages/a8/ef/89297262b8092b312d29cdb2517cb1237e51db8ecef2e9af5edbe7b683b1/charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26", size = 99694, upload-time = "2025-10-14T04:41:09.23Z" }, + { url = "https://files.pythonhosted.org/packages/3d/2d/1e5ed9dd3b3803994c155cd9aacb60c82c331bad84daf75bcb9c91b3295e/charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525", size = 107131, upload-time = "2025-10-14T04:41:10.467Z" }, + { url = "https://files.pythonhosted.org/packages/d0/d9/0ed4c7098a861482a7b6a95603edce4c0d9db2311af23da1fb2b75ec26fc/charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3", size = 100390, upload-time = "2025-10-14T04:41:11.915Z" }, + { url = "https://files.pythonhosted.org/packages/97/45/4b3a1239bbacd321068ea6e7ac28875b03ab8bc0aa0966452db17cd36714/charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794", size = 208091, upload-time = "2025-10-14T04:41:13.346Z" }, + { url = "https://files.pythonhosted.org/packages/7d/62/73a6d7450829655a35bb88a88fca7d736f9882a27eacdca2c6d505b57e2e/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed", size = 147936, upload-time = "2025-10-14T04:41:14.461Z" }, + { url = "https://files.pythonhosted.org/packages/89/c5/adb8c8b3d6625bef6d88b251bbb0d95f8205831b987631ab0c8bb5d937c2/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72", size = 144180, upload-time = "2025-10-14T04:41:15.588Z" }, + { url = "https://files.pythonhosted.org/packages/91/ed/9706e4070682d1cc219050b6048bfd293ccf67b3d4f5a4f39207453d4b99/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328", size = 161346, upload-time = "2025-10-14T04:41:16.738Z" }, + { url = "https://files.pythonhosted.org/packages/d5/0d/031f0d95e4972901a2f6f09ef055751805ff541511dc1252ba3ca1f80cf5/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede", size = 158874, upload-time = "2025-10-14T04:41:17.923Z" }, + { url = "https://files.pythonhosted.org/packages/f5/83/6ab5883f57c9c801ce5e5677242328aa45592be8a00644310a008d04f922/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894", size = 153076, upload-time = "2025-10-14T04:41:19.106Z" }, + { url = "https://files.pythonhosted.org/packages/75/1e/5ff781ddf5260e387d6419959ee89ef13878229732732ee73cdae01800f2/charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1", size = 150601, upload-time = "2025-10-14T04:41:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/d7/57/71be810965493d3510a6ca79b90c19e48696fb1ff964da319334b12677f0/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490", size = 150376, upload-time = "2025-10-14T04:41:21.398Z" }, + { url = "https://files.pythonhosted.org/packages/e5/d5/c3d057a78c181d007014feb7e9f2e65905a6c4ef182c0ddf0de2924edd65/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44", size = 144825, upload-time = "2025-10-14T04:41:22.583Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8c/d0406294828d4976f275ffbe66f00266c4b3136b7506941d87c00cab5272/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133", size = 162583, upload-time = "2025-10-14T04:41:23.754Z" }, + { url = "https://files.pythonhosted.org/packages/d7/24/e2aa1f18c8f15c4c0e932d9287b8609dd30ad56dbe41d926bd846e22fb8d/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3", size = 150366, upload-time = "2025-10-14T04:41:25.27Z" }, + { url = "https://files.pythonhosted.org/packages/e4/5b/1e6160c7739aad1e2df054300cc618b06bf784a7a164b0f238360721ab86/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e", size = 160300, upload-time = "2025-10-14T04:41:26.725Z" }, + { url = "https://files.pythonhosted.org/packages/7a/10/f882167cd207fbdd743e55534d5d9620e095089d176d55cb22d5322f2afd/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc", size = 154465, upload-time = "2025-10-14T04:41:28.322Z" }, + { url = "https://files.pythonhosted.org/packages/89/66/c7a9e1b7429be72123441bfdbaf2bc13faab3f90b933f664db506dea5915/charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac", size = 99404, upload-time = "2025-10-14T04:41:29.95Z" }, + { url = "https://files.pythonhosted.org/packages/c4/26/b9924fa27db384bdcd97ab83b4f0a8058d96ad9626ead570674d5e737d90/charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14", size = 107092, upload-time = "2025-10-14T04:41:31.188Z" }, + { url = "https://files.pythonhosted.org/packages/af/8f/3ed4bfa0c0c72a7ca17f0380cd9e4dd842b09f664e780c13cff1dcf2ef1b/charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2", size = 100408, upload-time = "2025-10-14T04:41:32.624Z" }, + { url = "https://files.pythonhosted.org/packages/2a/35/7051599bd493e62411d6ede36fd5af83a38f37c4767b92884df7301db25d/charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd", size = 207746, upload-time = "2025-10-14T04:41:33.773Z" }, + { url = "https://files.pythonhosted.org/packages/10/9a/97c8d48ef10d6cd4fcead2415523221624bf58bcf68a802721a6bc807c8f/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb", size = 147889, upload-time = "2025-10-14T04:41:34.897Z" }, + { url = "https://files.pythonhosted.org/packages/10/bf/979224a919a1b606c82bd2c5fa49b5c6d5727aa47b4312bb27b1734f53cd/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e", size = 143641, upload-time = "2025-10-14T04:41:36.116Z" }, + { url = "https://files.pythonhosted.org/packages/ba/33/0ad65587441fc730dc7bd90e9716b30b4702dc7b617e6ba4997dc8651495/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14", size = 160779, upload-time = "2025-10-14T04:41:37.229Z" }, + { url = "https://files.pythonhosted.org/packages/67/ed/331d6b249259ee71ddea93f6f2f0a56cfebd46938bde6fcc6f7b9a3d0e09/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191", size = 159035, upload-time = "2025-10-14T04:41:38.368Z" }, + { url = "https://files.pythonhosted.org/packages/67/ff/f6b948ca32e4f2a4576aa129d8bed61f2e0543bf9f5f2b7fc3758ed005c9/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838", size = 152542, upload-time = "2025-10-14T04:41:39.862Z" }, + { url = "https://files.pythonhosted.org/packages/16/85/276033dcbcc369eb176594de22728541a925b2632f9716428c851b149e83/charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6", size = 149524, upload-time = "2025-10-14T04:41:41.319Z" }, + { url = "https://files.pythonhosted.org/packages/9e/f2/6a2a1f722b6aba37050e626530a46a68f74e63683947a8acff92569f979a/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e", size = 150395, upload-time = "2025-10-14T04:41:42.539Z" }, + { url = "https://files.pythonhosted.org/packages/60/bb/2186cb2f2bbaea6338cad15ce23a67f9b0672929744381e28b0592676824/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c", size = 143680, upload-time = "2025-10-14T04:41:43.661Z" }, + { url = "https://files.pythonhosted.org/packages/7d/a5/bf6f13b772fbb2a90360eb620d52ed8f796f3c5caee8398c3b2eb7b1c60d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090", size = 162045, upload-time = "2025-10-14T04:41:44.821Z" }, + { url = "https://files.pythonhosted.org/packages/df/c5/d1be898bf0dc3ef9030c3825e5d3b83f2c528d207d246cbabe245966808d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152", size = 149687, upload-time = "2025-10-14T04:41:46.442Z" }, + { url = "https://files.pythonhosted.org/packages/a5/42/90c1f7b9341eef50c8a1cb3f098ac43b0508413f33affd762855f67a410e/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828", size = 160014, upload-time = "2025-10-14T04:41:47.631Z" }, + { url = "https://files.pythonhosted.org/packages/76/be/4d3ee471e8145d12795ab655ece37baed0929462a86e72372fd25859047c/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec", size = 154044, upload-time = "2025-10-14T04:41:48.81Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6f/8f7af07237c34a1defe7defc565a9bc1807762f672c0fde711a4b22bf9c0/charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9", size = 99940, upload-time = "2025-10-14T04:41:49.946Z" }, + { url = "https://files.pythonhosted.org/packages/4b/51/8ade005e5ca5b0d80fb4aff72a3775b325bdc3d27408c8113811a7cbe640/charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c", size = 107104, upload-time = "2025-10-14T04:41:51.051Z" }, + { url = "https://files.pythonhosted.org/packages/da/5f/6b8f83a55bb8278772c5ae54a577f3099025f9ade59d0136ac24a0df4bde/charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2", size = 100743, upload-time = "2025-10-14T04:41:52.122Z" }, + { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" }, +] + [[package]] name = "click" version = "8.1.8" @@ -181,6 +276,34 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180, upload-time = "2024-03-12T16:53:39.226Z" }, ] +[[package]] +name = "compliance-checker" +version = "5.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cf-units", marker = "sys_platform != 'emscripten'" }, + { name = "cftime" }, + { name = "isodate" }, + { name = "jinja2" }, + { name = "lxml" }, + { name = "netcdf4" }, + { name = "owslib" }, + { name = "packaging" }, + { name = "pendulum" }, + { name = "pygeoif" }, + { name = "pyproj" }, + { name = "pyudunits2", marker = "sys_platform == 'emscripten'" }, + { name = "regex" }, + { name = "requests" }, + { name = "setuptools" }, + { name = "shapely" }, + { name = "validators" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d4/6a/c70ee5a27656ac65493087884674d477ba2cc8f4109ae6fece743109e810/compliance_checker-5.4.2.tar.gz", hash = "sha256:636e50a8ce28d4a6a28fa1b2e28558e46e5595e8e9bd32f75f0ac94218a34d4b", size = 691769, upload-time = "2025-09-09T20:42:42.691Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/37/e13eb343b8732ba84e332990f616cec402d07fbf0066e60686cd08f62eff/compliance_checker-5.4.2-py3-none-any.whl", hash = "sha256:311dec521c912d8f1bf30382918a9f4092f8819202af6cf9b6716e8cd7bbbdec", size = 748166, upload-time = "2025-09-09T20:42:40.947Z" }, +] + [[package]] name = "contourpy" version = "1.3.1" @@ -379,6 +502,7 @@ dependencies = [ [package.dev-dependencies] dev = [ + { name = "compliance-checker" }, { name = "ipykernel" }, { name = "matplotlib" }, { name = "mypy" }, @@ -406,6 +530,7 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ + { name = "compliance-checker", specifier = ">=5.4.2" }, { name = "ipykernel", specifier = ">=6.29.5" }, { name = "matplotlib", specifier = ">=3.10.0" }, { name = "mypy", specifier = ">=1.15.0" }, @@ -436,6 +561,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e0/79/325e670fe4a91125e5aa5f7c0a3d4b8d74388012e635a97c4bf6613ac719/gsw-3.6.19-cp312-cp312-win_amd64.whl", hash = "sha256:bcf0eb380f22eb22e44c9521db78be760a1126fbffd1af21b317726968eca90c", size = 2166073, upload-time = "2024-07-23T17:28:49.329Z" }, ] +[[package]] +name = "idna" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, +] + [[package]] name = "importlib-metadata" version = "8.6.1" @@ -502,6 +636,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e7/e1/f4474a7ecdb7745a820f6f6039dc43c66add40f1bcc66485607d93571af6/ipython-8.32.0-py3-none-any.whl", hash = "sha256:cae85b0c61eff1fc48b0a8002de5958b6528fa9c8defb1894da63f42613708aa", size = 825524, upload-time = "2025-01-31T14:04:41.675Z" }, ] +[[package]] +name = "isodate" +version = "0.7.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705, upload-time = "2024-10-08T23:04:11.5Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320, upload-time = "2024-10-08T23:04:09.501Z" }, +] + [[package]] name = "jedi" version = "0.19.2" @@ -514,6 +657,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, ] +[[package]] +name = "jinja2" +version = "3.1.6" +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, 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, upload-time = "2025-03-05T20:05:00.369Z" }, +] + [[package]] name = "jupyter-client" version = "8.6.3" @@ -619,6 +774,182 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/db/bc/83e112abc66cd466c6b83f99118035867cecd41802f8d044638aa78a106e/locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3", size = 4398, upload-time = "2022-04-20T22:04:42.23Z" }, ] +[[package]] +name = "lxml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/88/262177de60548e5a2bfc46ad28232c9e9cbde697bd94132aeb80364675cb/lxml-6.0.2.tar.gz", hash = "sha256:cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96e0cd62", size = 4073426, upload-time = "2025-09-22T04:04:59.287Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/d5/becbe1e2569b474a23f0c672ead8a29ac50b2dc1d5b9de184831bda8d14c/lxml-6.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:13e35cbc684aadf05d8711a5d1b5857c92e5e580efa9a0d2be197199c8def607", size = 8634365, upload-time = "2025-09-22T04:00:45.672Z" }, + { url = "https://files.pythonhosted.org/packages/28/66/1ced58f12e804644426b85d0bb8a4478ca77bc1761455da310505f1a3526/lxml-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b1675e096e17c6fe9c0e8c81434f5736c0739ff9ac6123c87c2d452f48fc938", size = 4650793, upload-time = "2025-09-22T04:00:47.783Z" }, + { url = "https://files.pythonhosted.org/packages/11/84/549098ffea39dfd167e3f174b4ce983d0eed61f9d8d25b7bf2a57c3247fc/lxml-6.0.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8ac6e5811ae2870953390452e3476694196f98d447573234592d30488147404d", size = 4944362, upload-time = "2025-09-22T04:00:49.845Z" }, + { url = "https://files.pythonhosted.org/packages/ac/bd/f207f16abf9749d2037453d56b643a7471d8fde855a231a12d1e095c4f01/lxml-6.0.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5aa0fc67ae19d7a64c3fe725dc9a1bb11f80e01f78289d05c6f62545affec438", size = 5083152, upload-time = "2025-09-22T04:00:51.709Z" }, + { url = "https://files.pythonhosted.org/packages/15/ae/bd813e87d8941d52ad5b65071b1affb48da01c4ed3c9c99e40abb266fbff/lxml-6.0.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:de496365750cc472b4e7902a485d3f152ecf57bd3ba03ddd5578ed8ceb4c5964", size = 5023539, upload-time = "2025-09-22T04:00:53.593Z" }, + { url = "https://files.pythonhosted.org/packages/02/cd/9bfef16bd1d874fbe0cb51afb00329540f30a3283beb9f0780adbb7eec03/lxml-6.0.2-cp311-cp311-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:200069a593c5e40b8f6fc0d84d86d970ba43138c3e68619ffa234bc9bb806a4d", size = 5344853, upload-time = "2025-09-22T04:00:55.524Z" }, + { url = "https://files.pythonhosted.org/packages/b8/89/ea8f91594bc5dbb879734d35a6f2b0ad50605d7fb419de2b63d4211765cc/lxml-6.0.2-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7d2de809c2ee3b888b59f995625385f74629707c9355e0ff856445cdcae682b7", size = 5225133, upload-time = "2025-09-22T04:00:57.269Z" }, + { url = "https://files.pythonhosted.org/packages/b9/37/9c735274f5dbec726b2db99b98a43950395ba3d4a1043083dba2ad814170/lxml-6.0.2-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:b2c3da8d93cf5db60e8858c17684c47d01fee6405e554fb55018dd85fc23b178", size = 4677944, upload-time = "2025-09-22T04:00:59.052Z" }, + { url = "https://files.pythonhosted.org/packages/20/28/7dfe1ba3475d8bfca3878365075abe002e05d40dfaaeb7ec01b4c587d533/lxml-6.0.2-cp311-cp311-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:442de7530296ef5e188373a1ea5789a46ce90c4847e597856570439621d9c553", size = 5284535, upload-time = "2025-09-22T04:01:01.335Z" }, + { url = "https://files.pythonhosted.org/packages/e7/cf/5f14bc0de763498fc29510e3532bf2b4b3a1c1d5d0dff2e900c16ba021ef/lxml-6.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2593c77efde7bfea7f6389f1ab249b15ed4aa5bc5cb5131faa3b843c429fbedb", size = 5067343, upload-time = "2025-09-22T04:01:03.13Z" }, + { url = "https://files.pythonhosted.org/packages/1c/b0/bb8275ab5472f32b28cfbbcc6db7c9d092482d3439ca279d8d6fa02f7025/lxml-6.0.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:3e3cb08855967a20f553ff32d147e14329b3ae70ced6edc2f282b94afbc74b2a", size = 4725419, upload-time = "2025-09-22T04:01:05.013Z" }, + { url = "https://files.pythonhosted.org/packages/25/4c/7c222753bc72edca3b99dbadba1b064209bc8ed4ad448af990e60dcce462/lxml-6.0.2-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:2ed6c667fcbb8c19c6791bbf40b7268ef8ddf5a96940ba9404b9f9a304832f6c", size = 5275008, upload-time = "2025-09-22T04:01:07.327Z" }, + { url = "https://files.pythonhosted.org/packages/6c/8c/478a0dc6b6ed661451379447cdbec77c05741a75736d97e5b2b729687828/lxml-6.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b8f18914faec94132e5b91e69d76a5c1d7b0c73e2489ea8929c4aaa10b76bbf7", size = 5248906, upload-time = "2025-09-22T04:01:09.452Z" }, + { url = "https://files.pythonhosted.org/packages/2d/d9/5be3a6ab2784cdf9accb0703b65e1b64fcdd9311c9f007630c7db0cfcce1/lxml-6.0.2-cp311-cp311-win32.whl", hash = "sha256:6605c604e6daa9e0d7f0a2137bdc47a2e93b59c60a65466353e37f8272f47c46", size = 3610357, upload-time = "2025-09-22T04:01:11.102Z" }, + { url = "https://files.pythonhosted.org/packages/e2/7d/ca6fb13349b473d5732fb0ee3eec8f6c80fc0688e76b7d79c1008481bf1f/lxml-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e5867f2651016a3afd8dd2c8238baa66f1e2802f44bc17e236f547ace6647078", size = 4036583, upload-time = "2025-09-22T04:01:12.766Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a2/51363b5ecd3eab46563645f3a2c3836a2fc67d01a1b87c5017040f39f567/lxml-6.0.2-cp311-cp311-win_arm64.whl", hash = "sha256:4197fb2534ee05fd3e7afaab5d8bfd6c2e186f65ea7f9cd6a82809c887bd1285", size = 3680591, upload-time = "2025-09-22T04:01:14.874Z" }, + { url = "https://files.pythonhosted.org/packages/f3/c8/8ff2bc6b920c84355146cd1ab7d181bc543b89241cfb1ebee824a7c81457/lxml-6.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a59f5448ba2ceccd06995c95ea59a7674a10de0810f2ce90c9006f3cbc044456", size = 8661887, upload-time = "2025-09-22T04:01:17.265Z" }, + { url = "https://files.pythonhosted.org/packages/37/6f/9aae1008083bb501ef63284220ce81638332f9ccbfa53765b2b7502203cf/lxml-6.0.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e8113639f3296706fbac34a30813929e29247718e88173ad849f57ca59754924", size = 4667818, upload-time = "2025-09-22T04:01:19.688Z" }, + { url = "https://files.pythonhosted.org/packages/f1/ca/31fb37f99f37f1536c133476674c10b577e409c0a624384147653e38baf2/lxml-6.0.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a8bef9b9825fa8bc816a6e641bb67219489229ebc648be422af695f6e7a4fa7f", size = 4950807, upload-time = "2025-09-22T04:01:21.487Z" }, + { url = "https://files.pythonhosted.org/packages/da/87/f6cb9442e4bada8aab5ae7e1046264f62fdbeaa6e3f6211b93f4c0dd97f1/lxml-6.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:65ea18d710fd14e0186c2f973dc60bb52039a275f82d3c44a0e42b43440ea534", size = 5109179, upload-time = "2025-09-22T04:01:23.32Z" }, + { url = "https://files.pythonhosted.org/packages/c8/20/a7760713e65888db79bbae4f6146a6ae5c04e4a204a3c48896c408cd6ed2/lxml-6.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c371aa98126a0d4c739ca93ceffa0fd7a5d732e3ac66a46e74339acd4d334564", size = 5023044, upload-time = "2025-09-22T04:01:25.118Z" }, + { url = "https://files.pythonhosted.org/packages/a2/b0/7e64e0460fcb36471899f75831509098f3fd7cd02a3833ac517433cb4f8f/lxml-6.0.2-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:700efd30c0fa1a3581d80a748157397559396090a51d306ea59a70020223d16f", size = 5359685, upload-time = "2025-09-22T04:01:27.398Z" }, + { url = "https://files.pythonhosted.org/packages/b9/e1/e5df362e9ca4e2f48ed6411bd4b3a0ae737cc842e96877f5bf9428055ab4/lxml-6.0.2-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c33e66d44fe60e72397b487ee92e01da0d09ba2d66df8eae42d77b6d06e5eba0", size = 5654127, upload-time = "2025-09-22T04:01:29.629Z" }, + { url = "https://files.pythonhosted.org/packages/c6/d1/232b3309a02d60f11e71857778bfcd4acbdb86c07db8260caf7d008b08f8/lxml-6.0.2-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90a345bbeaf9d0587a3aaffb7006aa39ccb6ff0e96a57286c0cb2fd1520ea192", size = 5253958, upload-time = "2025-09-22T04:01:31.535Z" }, + { url = "https://files.pythonhosted.org/packages/35/35/d955a070994725c4f7d80583a96cab9c107c57a125b20bb5f708fe941011/lxml-6.0.2-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:064fdadaf7a21af3ed1dcaa106b854077fbeada827c18f72aec9346847cd65d0", size = 4711541, upload-time = "2025-09-22T04:01:33.801Z" }, + { url = "https://files.pythonhosted.org/packages/1e/be/667d17363b38a78c4bd63cfd4b4632029fd68d2c2dc81f25ce9eb5224dd5/lxml-6.0.2-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fbc74f42c3525ac4ffa4b89cbdd00057b6196bcefe8bce794abd42d33a018092", size = 5267426, upload-time = "2025-09-22T04:01:35.639Z" }, + { url = "https://files.pythonhosted.org/packages/ea/47/62c70aa4a1c26569bc958c9ca86af2bb4e1f614e8c04fb2989833874f7ae/lxml-6.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6ddff43f702905a4e32bc24f3f2e2edfe0f8fde3277d481bffb709a4cced7a1f", size = 5064917, upload-time = "2025-09-22T04:01:37.448Z" }, + { url = "https://files.pythonhosted.org/packages/bd/55/6ceddaca353ebd0f1908ef712c597f8570cc9c58130dbb89903198e441fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:6da5185951d72e6f5352166e3da7b0dc27aa70bd1090b0eb3f7f7212b53f1bb8", size = 4788795, upload-time = "2025-09-22T04:01:39.165Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e8/fd63e15da5e3fd4c2146f8bbb3c14e94ab850589beab88e547b2dbce22e1/lxml-6.0.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:57a86e1ebb4020a38d295c04fc79603c7899e0df71588043eb218722dabc087f", size = 5676759, upload-time = "2025-09-22T04:01:41.506Z" }, + { url = "https://files.pythonhosted.org/packages/76/47/b3ec58dc5c374697f5ba37412cd2728f427d056315d124dd4b61da381877/lxml-6.0.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2047d8234fe735ab77802ce5f2297e410ff40f5238aec569ad7c8e163d7b19a6", size = 5255666, upload-time = "2025-09-22T04:01:43.363Z" }, + { url = "https://files.pythonhosted.org/packages/19/93/03ba725df4c3d72afd9596eef4a37a837ce8e4806010569bedfcd2cb68fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6f91fd2b2ea15a6800c8e24418c0775a1694eefc011392da73bc6cef2623b322", size = 5277989, upload-time = "2025-09-22T04:01:45.215Z" }, + { url = "https://files.pythonhosted.org/packages/c6/80/c06de80bfce881d0ad738576f243911fccf992687ae09fd80b734712b39c/lxml-6.0.2-cp312-cp312-win32.whl", hash = "sha256:3ae2ce7d6fedfb3414a2b6c5e20b249c4c607f72cb8d2bb7cc9c6ec7c6f4e849", size = 3611456, upload-time = "2025-09-22T04:01:48.243Z" }, + { url = "https://files.pythonhosted.org/packages/f7/d7/0cdfb6c3e30893463fb3d1e52bc5f5f99684a03c29a0b6b605cfae879cd5/lxml-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:72c87e5ee4e58a8354fb9c7c84cbf95a1c8236c127a5d1b7683f04bed8361e1f", size = 4011793, upload-time = "2025-09-22T04:01:50.042Z" }, + { url = "https://files.pythonhosted.org/packages/ea/7b/93c73c67db235931527301ed3785f849c78991e2e34f3fd9a6663ffda4c5/lxml-6.0.2-cp312-cp312-win_arm64.whl", hash = "sha256:61cb10eeb95570153e0c0e554f58df92ecf5109f75eacad4a95baa709e26c3d6", size = 3672836, upload-time = "2025-09-22T04:01:52.145Z" }, + { url = "https://files.pythonhosted.org/packages/53/fd/4e8f0540608977aea078bf6d79f128e0e2c2bba8af1acf775c30baa70460/lxml-6.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9b33d21594afab46f37ae58dfadd06636f154923c4e8a4d754b0127554eb2e77", size = 8648494, upload-time = "2025-09-22T04:01:54.242Z" }, + { url = "https://files.pythonhosted.org/packages/5d/f4/2a94a3d3dfd6c6b433501b8d470a1960a20ecce93245cf2db1706adf6c19/lxml-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6c8963287d7a4c5c9a432ff487c52e9c5618667179c18a204bdedb27310f022f", size = 4661146, upload-time = "2025-09-22T04:01:56.282Z" }, + { url = "https://files.pythonhosted.org/packages/25/2e/4efa677fa6b322013035d38016f6ae859d06cac67437ca7dc708a6af7028/lxml-6.0.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1941354d92699fb5ffe6ed7b32f9649e43c2feb4b97205f75866f7d21aa91452", size = 4946932, upload-time = "2025-09-22T04:01:58.989Z" }, + { url = "https://files.pythonhosted.org/packages/ce/0f/526e78a6d38d109fdbaa5049c62e1d32fdd70c75fb61c4eadf3045d3d124/lxml-6.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bb2f6ca0ae2d983ded09357b84af659c954722bbf04dea98030064996d156048", size = 5100060, upload-time = "2025-09-22T04:02:00.812Z" }, + { url = "https://files.pythonhosted.org/packages/81/76/99de58d81fa702cc0ea7edae4f4640416c2062813a00ff24bd70ac1d9c9b/lxml-6.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb2a12d704f180a902d7fa778c6d71f36ceb7b0d317f34cdc76a5d05aa1dd1df", size = 5019000, upload-time = "2025-09-22T04:02:02.671Z" }, + { url = "https://files.pythonhosted.org/packages/b5/35/9e57d25482bc9a9882cb0037fdb9cc18f4b79d85df94fa9d2a89562f1d25/lxml-6.0.2-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:6ec0e3f745021bfed19c456647f0298d60a24c9ff86d9d051f52b509663feeb1", size = 5348496, upload-time = "2025-09-22T04:02:04.904Z" }, + { url = "https://files.pythonhosted.org/packages/a6/8e/cb99bd0b83ccc3e8f0f528e9aa1f7a9965dfec08c617070c5db8d63a87ce/lxml-6.0.2-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:846ae9a12d54e368933b9759052d6206a9e8b250291109c48e350c1f1f49d916", size = 5643779, upload-time = "2025-09-22T04:02:06.689Z" }, + { url = "https://files.pythonhosted.org/packages/d0/34/9e591954939276bb679b73773836c6684c22e56d05980e31d52a9a8deb18/lxml-6.0.2-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ef9266d2aa545d7374938fb5c484531ef5a2ec7f2d573e62f8ce722c735685fd", size = 5244072, upload-time = "2025-09-22T04:02:08.587Z" }, + { url = "https://files.pythonhosted.org/packages/8d/27/b29ff065f9aaca443ee377aff699714fcbffb371b4fce5ac4ca759e436d5/lxml-6.0.2-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:4077b7c79f31755df33b795dc12119cb557a0106bfdab0d2c2d97bd3cf3dffa6", size = 4718675, upload-time = "2025-09-22T04:02:10.783Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/f756f9c2cd27caa1a6ef8c32ae47aadea697f5c2c6d07b0dae133c244fbe/lxml-6.0.2-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a7c5d5e5f1081955358533be077166ee97ed2571d6a66bdba6ec2f609a715d1a", size = 5255171, upload-time = "2025-09-22T04:02:12.631Z" }, + { url = "https://files.pythonhosted.org/packages/61/46/bb85ea42d2cb1bd8395484fd72f38e3389611aa496ac7772da9205bbda0e/lxml-6.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8f8d0cbd0674ee89863a523e6994ac25fd5be9c8486acfc3e5ccea679bad2679", size = 5057175, upload-time = "2025-09-22T04:02:14.718Z" }, + { url = "https://files.pythonhosted.org/packages/95/0c/443fc476dcc8e41577f0af70458c50fe299a97bb6b7505bb1ae09aa7f9ac/lxml-6.0.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2cbcbf6d6e924c28f04a43f3b6f6e272312a090f269eff68a2982e13e5d57659", size = 4785688, upload-time = "2025-09-22T04:02:16.957Z" }, + { url = "https://files.pythonhosted.org/packages/48/78/6ef0b359d45bb9697bc5a626e1992fa5d27aa3f8004b137b2314793b50a0/lxml-6.0.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dfb874cfa53340009af6bdd7e54ebc0d21012a60a4e65d927c2e477112e63484", size = 5660655, upload-time = "2025-09-22T04:02:18.815Z" }, + { url = "https://files.pythonhosted.org/packages/ff/ea/e1d33808f386bc1339d08c0dcada6e4712d4ed8e93fcad5f057070b7988a/lxml-6.0.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:fb8dae0b6b8b7f9e96c26fdd8121522ce5de9bb5538010870bd538683d30e9a2", size = 5247695, upload-time = "2025-09-22T04:02:20.593Z" }, + { url = "https://files.pythonhosted.org/packages/4f/47/eba75dfd8183673725255247a603b4ad606f4ae657b60c6c145b381697da/lxml-6.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:358d9adae670b63e95bc59747c72f4dc97c9ec58881d4627fe0120da0f90d314", size = 5269841, upload-time = "2025-09-22T04:02:22.489Z" }, + { url = "https://files.pythonhosted.org/packages/76/04/5c5e2b8577bc936e219becb2e98cdb1aca14a4921a12995b9d0c523502ae/lxml-6.0.2-cp313-cp313-win32.whl", hash = "sha256:e8cd2415f372e7e5a789d743d133ae474290a90b9023197fd78f32e2dc6873e2", size = 3610700, upload-time = "2025-09-22T04:02:24.465Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0a/4643ccc6bb8b143e9f9640aa54e38255f9d3b45feb2cbe7ae2ca47e8782e/lxml-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:b30d46379644fbfc3ab81f8f82ae4de55179414651f110a1514f0b1f8f6cb2d7", size = 4010347, upload-time = "2025-09-22T04:02:26.286Z" }, + { url = "https://files.pythonhosted.org/packages/31/ef/dcf1d29c3f530577f61e5fe2f1bd72929acf779953668a8a47a479ae6f26/lxml-6.0.2-cp313-cp313-win_arm64.whl", hash = "sha256:13dcecc9946dca97b11b7c40d29fba63b55ab4170d3c0cf8c0c164343b9bfdcf", size = 3671248, upload-time = "2025-09-22T04:02:27.918Z" }, + { url = "https://files.pythonhosted.org/packages/03/15/d4a377b385ab693ce97b472fe0c77c2b16ec79590e688b3ccc71fba19884/lxml-6.0.2-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:b0c732aa23de8f8aec23f4b580d1e52905ef468afb4abeafd3fec77042abb6fe", size = 8659801, upload-time = "2025-09-22T04:02:30.113Z" }, + { url = "https://files.pythonhosted.org/packages/c8/e8/c128e37589463668794d503afaeb003987373c5f94d667124ffd8078bbd9/lxml-6.0.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4468e3b83e10e0317a89a33d28f7aeba1caa4d1a6fd457d115dd4ffe90c5931d", size = 4659403, upload-time = "2025-09-22T04:02:32.119Z" }, + { url = "https://files.pythonhosted.org/packages/00/ce/74903904339decdf7da7847bb5741fc98a5451b42fc419a86c0c13d26fe2/lxml-6.0.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:abd44571493973bad4598a3be7e1d807ed45aa2adaf7ab92ab7c62609569b17d", size = 4966974, upload-time = "2025-09-22T04:02:34.155Z" }, + { url = "https://files.pythonhosted.org/packages/1f/d3/131dec79ce61c5567fecf82515bd9bc36395df42501b50f7f7f3bd065df0/lxml-6.0.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:370cd78d5855cfbffd57c422851f7d3864e6ae72d0da615fca4dad8c45d375a5", size = 5102953, upload-time = "2025-09-22T04:02:36.054Z" }, + { url = "https://files.pythonhosted.org/packages/3a/ea/a43ba9bb750d4ffdd885f2cd333572f5bb900cd2408b67fdda07e85978a0/lxml-6.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:901e3b4219fa04ef766885fb40fa516a71662a4c61b80c94d25336b4934b71c0", size = 5055054, upload-time = "2025-09-22T04:02:38.154Z" }, + { url = "https://files.pythonhosted.org/packages/60/23/6885b451636ae286c34628f70a7ed1fcc759f8d9ad382d132e1c8d3d9bfd/lxml-6.0.2-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:a4bf42d2e4cf52c28cc1812d62426b9503cdb0c87a6de81442626aa7d69707ba", size = 5352421, upload-time = "2025-09-22T04:02:40.413Z" }, + { url = "https://files.pythonhosted.org/packages/48/5b/fc2ddfc94ddbe3eebb8e9af6e3fd65e2feba4967f6a4e9683875c394c2d8/lxml-6.0.2-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2c7fdaa4d7c3d886a42534adec7cfac73860b89b4e5298752f60aa5984641a0", size = 5673684, upload-time = "2025-09-22T04:02:42.288Z" }, + { url = "https://files.pythonhosted.org/packages/29/9c/47293c58cc91769130fbf85531280e8cc7868f7fbb6d92f4670071b9cb3e/lxml-6.0.2-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:98a5e1660dc7de2200b00d53fa00bcd3c35a3608c305d45a7bbcaf29fa16e83d", size = 5252463, upload-time = "2025-09-22T04:02:44.165Z" }, + { url = "https://files.pythonhosted.org/packages/9b/da/ba6eceb830c762b48e711ded880d7e3e89fc6c7323e587c36540b6b23c6b/lxml-6.0.2-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:dc051506c30b609238d79eda75ee9cab3e520570ec8219844a72a46020901e37", size = 4698437, upload-time = "2025-09-22T04:02:46.524Z" }, + { url = "https://files.pythonhosted.org/packages/a5/24/7be3f82cb7990b89118d944b619e53c656c97dc89c28cfb143fdb7cd6f4d/lxml-6.0.2-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8799481bbdd212470d17513a54d568f44416db01250f49449647b5ab5b5dccb9", size = 5269890, upload-time = "2025-09-22T04:02:48.812Z" }, + { url = "https://files.pythonhosted.org/packages/1b/bd/dcfb9ea1e16c665efd7538fc5d5c34071276ce9220e234217682e7d2c4a5/lxml-6.0.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9261bb77c2dab42f3ecd9103951aeca2c40277701eb7e912c545c1b16e0e4917", size = 5097185, upload-time = "2025-09-22T04:02:50.746Z" }, + { url = "https://files.pythonhosted.org/packages/21/04/a60b0ff9314736316f28316b694bccbbabe100f8483ad83852d77fc7468e/lxml-6.0.2-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:65ac4a01aba353cfa6d5725b95d7aed6356ddc0a3cd734de00124d285b04b64f", size = 4745895, upload-time = "2025-09-22T04:02:52.968Z" }, + { url = "https://files.pythonhosted.org/packages/d6/bd/7d54bd1846e5a310d9c715921c5faa71cf5c0853372adf78aee70c8d7aa2/lxml-6.0.2-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:b22a07cbb82fea98f8a2fd814f3d1811ff9ed76d0fc6abc84eb21527596e7cc8", size = 5695246, upload-time = "2025-09-22T04:02:54.798Z" }, + { url = "https://files.pythonhosted.org/packages/fd/32/5643d6ab947bc371da21323acb2a6e603cedbe71cb4c99c8254289ab6f4e/lxml-6.0.2-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:d759cdd7f3e055d6bc8d9bec3ad905227b2e4c785dc16c372eb5b5e83123f48a", size = 5260797, upload-time = "2025-09-22T04:02:57.058Z" }, + { url = "https://files.pythonhosted.org/packages/33/da/34c1ec4cff1eea7d0b4cd44af8411806ed943141804ac9c5d565302afb78/lxml-6.0.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:945da35a48d193d27c188037a05fec5492937f66fb1958c24fc761fb9d40d43c", size = 5277404, upload-time = "2025-09-22T04:02:58.966Z" }, + { url = "https://files.pythonhosted.org/packages/82/57/4eca3e31e54dc89e2c3507e1cd411074a17565fa5ffc437c4ae0a00d439e/lxml-6.0.2-cp314-cp314-win32.whl", hash = "sha256:be3aaa60da67e6153eb15715cc2e19091af5dc75faef8b8a585aea372507384b", size = 3670072, upload-time = "2025-09-22T04:03:38.05Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e0/c96cf13eccd20c9421ba910304dae0f619724dcf1702864fd59dd386404d/lxml-6.0.2-cp314-cp314-win_amd64.whl", hash = "sha256:fa25afbadead523f7001caf0c2382afd272c315a033a7b06336da2637d92d6ed", size = 4080617, upload-time = "2025-09-22T04:03:39.835Z" }, + { url = "https://files.pythonhosted.org/packages/d5/5d/b3f03e22b3d38d6f188ef044900a9b29b2fe0aebb94625ce9fe244011d34/lxml-6.0.2-cp314-cp314-win_arm64.whl", hash = "sha256:063eccf89df5b24e361b123e257e437f9e9878f425ee9aae3144c77faf6da6d8", size = 3754930, upload-time = "2025-09-22T04:03:41.565Z" }, + { url = "https://files.pythonhosted.org/packages/5e/5c/42c2c4c03554580708fc738d13414801f340c04c3eff90d8d2d227145275/lxml-6.0.2-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:6162a86d86893d63084faaf4ff937b3daea233e3682fb4474db07395794fa80d", size = 8910380, upload-time = "2025-09-22T04:03:01.645Z" }, + { url = "https://files.pythonhosted.org/packages/bf/4f/12df843e3e10d18d468a7557058f8d3733e8b6e12401f30b1ef29360740f/lxml-6.0.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:414aaa94e974e23a3e92e7ca5b97d10c0cf37b6481f50911032c69eeb3991bba", size = 4775632, upload-time = "2025-09-22T04:03:03.814Z" }, + { url = "https://files.pythonhosted.org/packages/e4/0c/9dc31e6c2d0d418483cbcb469d1f5a582a1cd00a1f4081953d44051f3c50/lxml-6.0.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:48461bd21625458dd01e14e2c38dd0aea69addc3c4f960c30d9f59d7f93be601", size = 4975171, upload-time = "2025-09-22T04:03:05.651Z" }, + { url = "https://files.pythonhosted.org/packages/e7/2b/9b870c6ca24c841bdd887504808f0417aa9d8d564114689266f19ddf29c8/lxml-6.0.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:25fcc59afc57d527cfc78a58f40ab4c9b8fd096a9a3f964d2781ffb6eb33f4ed", size = 5110109, upload-time = "2025-09-22T04:03:07.452Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0c/4f5f2a4dd319a178912751564471355d9019e220c20d7db3fb8307ed8582/lxml-6.0.2-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5179c60288204e6ddde3f774a93350177e08876eaf3ab78aa3a3649d43eb7d37", size = 5041061, upload-time = "2025-09-22T04:03:09.297Z" }, + { url = "https://files.pythonhosted.org/packages/12/64/554eed290365267671fe001a20d72d14f468ae4e6acef1e179b039436967/lxml-6.0.2-cp314-cp314t-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:967aab75434de148ec80597b75062d8123cadf2943fb4281f385141e18b21338", size = 5306233, upload-time = "2025-09-22T04:03:11.651Z" }, + { url = "https://files.pythonhosted.org/packages/7a/31/1d748aa275e71802ad9722df32a7a35034246b42c0ecdd8235412c3396ef/lxml-6.0.2-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d100fcc8930d697c6561156c6810ab4a508fb264c8b6779e6e61e2ed5e7558f9", size = 5604739, upload-time = "2025-09-22T04:03:13.592Z" }, + { url = "https://files.pythonhosted.org/packages/8f/41/2c11916bcac09ed561adccacceaedd2bf0e0b25b297ea92aab99fd03d0fa/lxml-6.0.2-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ca59e7e13e5981175b8b3e4ab84d7da57993eeff53c07764dcebda0d0e64ecd", size = 5225119, upload-time = "2025-09-22T04:03:15.408Z" }, + { url = "https://files.pythonhosted.org/packages/99/05/4e5c2873d8f17aa018e6afde417c80cc5d0c33be4854cce3ef5670c49367/lxml-6.0.2-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:957448ac63a42e2e49531b9d6c0fa449a1970dbc32467aaad46f11545be9af1d", size = 4633665, upload-time = "2025-09-22T04:03:17.262Z" }, + { url = "https://files.pythonhosted.org/packages/0f/c9/dcc2da1bebd6275cdc723b515f93edf548b82f36a5458cca3578bc899332/lxml-6.0.2-cp314-cp314t-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b7fc49c37f1786284b12af63152fe1d0990722497e2d5817acfe7a877522f9a9", size = 5234997, upload-time = "2025-09-22T04:03:19.14Z" }, + { url = "https://files.pythonhosted.org/packages/9c/e2/5172e4e7468afca64a37b81dba152fc5d90e30f9c83c7c3213d6a02a5ce4/lxml-6.0.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e19e0643cc936a22e837f79d01a550678da8377d7d801a14487c10c34ee49c7e", size = 5090957, upload-time = "2025-09-22T04:03:21.436Z" }, + { url = "https://files.pythonhosted.org/packages/a5/b3/15461fd3e5cd4ddcb7938b87fc20b14ab113b92312fc97afe65cd7c85de1/lxml-6.0.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:1db01e5cf14345628e0cbe71067204db658e2fb8e51e7f33631f5f4735fefd8d", size = 4764372, upload-time = "2025-09-22T04:03:23.27Z" }, + { url = "https://files.pythonhosted.org/packages/05/33/f310b987c8bf9e61c4dd8e8035c416bd3230098f5e3cfa69fc4232de7059/lxml-6.0.2-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:875c6b5ab39ad5291588aed6925fac99d0097af0dd62f33c7b43736043d4a2ec", size = 5634653, upload-time = "2025-09-22T04:03:25.767Z" }, + { url = "https://files.pythonhosted.org/packages/70/ff/51c80e75e0bc9382158133bdcf4e339b5886c6ee2418b5199b3f1a61ed6d/lxml-6.0.2-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:cdcbed9ad19da81c480dfd6dd161886db6096083c9938ead313d94b30aadf272", size = 5233795, upload-time = "2025-09-22T04:03:27.62Z" }, + { url = "https://files.pythonhosted.org/packages/56/4d/4856e897df0d588789dd844dbed9d91782c4ef0b327f96ce53c807e13128/lxml-6.0.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:80dadc234ebc532e09be1975ff538d154a7fa61ea5031c03d25178855544728f", size = 5257023, upload-time = "2025-09-22T04:03:30.056Z" }, + { url = "https://files.pythonhosted.org/packages/0f/85/86766dfebfa87bea0ab78e9ff7a4b4b45225df4b4d3b8cc3c03c5cd68464/lxml-6.0.2-cp314-cp314t-win32.whl", hash = "sha256:da08e7bb297b04e893d91087df19638dc7a6bb858a954b0cc2b9f5053c922312", size = 3911420, upload-time = "2025-09-22T04:03:32.198Z" }, + { url = "https://files.pythonhosted.org/packages/fe/1a/b248b355834c8e32614650b8008c69ffeb0ceb149c793961dd8c0b991bb3/lxml-6.0.2-cp314-cp314t-win_amd64.whl", hash = "sha256:252a22982dca42f6155125ac76d3432e548a7625d56f5a273ee78a5057216eca", size = 4406837, upload-time = "2025-09-22T04:03:34.027Z" }, + { url = "https://files.pythonhosted.org/packages/92/aa/df863bcc39c5e0946263454aba394de8a9084dbaff8ad143846b0d844739/lxml-6.0.2-cp314-cp314t-win_arm64.whl", hash = "sha256:bb4c1847b303835d89d785a18801a883436cdfd5dc3d62947f9c49e24f0f5a2c", size = 3822205, upload-time = "2025-09-22T04:03:36.249Z" }, + { url = "https://files.pythonhosted.org/packages/0b/11/29d08bc103a62c0eba8016e7ed5aeebbf1e4312e83b0b1648dd203b0e87d/lxml-6.0.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1c06035eafa8404b5cf475bb37a9f6088b0aca288d4ccc9d69389750d5543700", size = 3949829, upload-time = "2025-09-22T04:04:45.608Z" }, + { url = "https://files.pythonhosted.org/packages/12/b3/52ab9a3b31e5ab8238da241baa19eec44d2ab426532441ee607165aebb52/lxml-6.0.2-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c7d13103045de1bdd6fe5d61802565f1a3537d70cd3abf596aa0af62761921ee", size = 4226277, upload-time = "2025-09-22T04:04:47.754Z" }, + { url = "https://files.pythonhosted.org/packages/a0/33/1eaf780c1baad88224611df13b1c2a9dfa460b526cacfe769103ff50d845/lxml-6.0.2-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0a3c150a95fbe5ac91de323aa756219ef9cf7fde5a3f00e2281e30f33fa5fa4f", size = 4330433, upload-time = "2025-09-22T04:04:49.907Z" }, + { url = "https://files.pythonhosted.org/packages/7a/c1/27428a2ff348e994ab4f8777d3a0ad510b6b92d37718e5887d2da99952a2/lxml-6.0.2-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:60fa43be34f78bebb27812ed90f1925ec99560b0fa1decdb7d12b84d857d31e9", size = 4272119, upload-time = "2025-09-22T04:04:51.801Z" }, + { url = "https://files.pythonhosted.org/packages/f0/d0/3020fa12bcec4ab62f97aab026d57c2f0cfd480a558758d9ca233bb6a79d/lxml-6.0.2-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:21c73b476d3cfe836be731225ec3421fa2f048d84f6df6a8e70433dff1376d5a", size = 4417314, upload-time = "2025-09-22T04:04:55.024Z" }, + { url = "https://files.pythonhosted.org/packages/6c/77/d7f491cbc05303ac6801651aabeb262d43f319288c1ea96c66b1d2692ff3/lxml-6.0.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:27220da5be049e936c3aca06f174e8827ca6445a4353a1995584311487fc4e3e", size = 3518768, upload-time = "2025-09-22T04:04:57.097Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/db/fefacb2136439fc8dd20e797950e749aa1f4997ed584c62cfb8ef7c2be0e/markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", size = 11631, upload-time = "2025-09-27T18:36:18.185Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2e/5898933336b61975ce9dc04decbc0a7f2fee78c30353c5efba7f2d6ff27a/markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", size = 12058, upload-time = "2025-09-27T18:36:19.444Z" }, + { url = "https://files.pythonhosted.org/packages/1d/09/adf2df3699d87d1d8184038df46a9c80d78c0148492323f4693df54e17bb/markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50", size = 24287, upload-time = "2025-09-27T18:36:20.768Z" }, + { url = "https://files.pythonhosted.org/packages/30/ac/0273f6fcb5f42e314c6d8cd99effae6a5354604d461b8d392b5ec9530a54/markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf", size = 22940, upload-time = "2025-09-27T18:36:22.249Z" }, + { url = "https://files.pythonhosted.org/packages/19/ae/31c1be199ef767124c042c6c3e904da327a2f7f0cd63a0337e1eca2967a8/markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f", size = 21887, upload-time = "2025-09-27T18:36:23.535Z" }, + { url = "https://files.pythonhosted.org/packages/b2/76/7edcab99d5349a4532a459e1fe64f0b0467a3365056ae550d3bcf3f79e1e/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a", size = 23692, upload-time = "2025-09-27T18:36:24.823Z" }, + { url = "https://files.pythonhosted.org/packages/a4/28/6e74cdd26d7514849143d69f0bf2399f929c37dc2b31e6829fd2045b2765/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115", size = 21471, upload-time = "2025-09-27T18:36:25.95Z" }, + { url = "https://files.pythonhosted.org/packages/62/7e/a145f36a5c2945673e590850a6f8014318d5577ed7e5920a4b3448e0865d/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a", size = 22923, upload-time = "2025-09-27T18:36:27.109Z" }, + { url = "https://files.pythonhosted.org/packages/0f/62/d9c46a7f5c9adbeeeda52f5b8d802e1094e9717705a645efc71b0913a0a8/markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19", size = 14572, upload-time = "2025-09-27T18:36:28.045Z" }, + { url = "https://files.pythonhosted.org/packages/83/8a/4414c03d3f891739326e1783338e48fb49781cc915b2e0ee052aa490d586/markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01", size = 15077, upload-time = "2025-09-27T18:36:29.025Z" }, + { url = "https://files.pythonhosted.org/packages/35/73/893072b42e6862f319b5207adc9ae06070f095b358655f077f69a35601f0/markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c", size = 13876, upload-time = "2025-09-27T18:36:29.954Z" }, + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" }, + { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" }, + { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" }, + { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" }, + { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" }, + { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, + { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" }, + { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" }, + { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" }, + { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" }, + { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" }, + { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" }, + { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" }, + { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" }, + { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" }, + { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" }, + { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" }, + { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" }, + { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" }, + { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" }, +] + [[package]] name = "matplotlib" version = "3.10.0" @@ -674,6 +1005,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload-time = "2024-04-15T13:44:43.265Z" }, ] +[[package]] +name = "mpmath" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload-time = "2023-03-07T16:47:11.061Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" }, +] + [[package]] name = "mypy" version = "1.15.0" @@ -749,6 +1089,11 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/71/96/d5d8859a6dac29f8ebc815ff8e75770bd513db9f08d7a711e21ae562a948/netCDF4-1.7.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30d20e56b9ba2c48884eb89c91b63e6c0612b4927881707e34402719153ef17f", size = 9378149, upload-time = "2024-10-22T19:01:04.924Z" }, { url = "https://files.pythonhosted.org/packages/d1/80/b9c19f1bb4ac6c5fa6f94a4f278bc68a778473d1814a86a375d7cffa193a/netCDF4-1.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d6bfd38ba0bde04d56f06c1554714a2ea9dab75811c89450dc3ec57a9d36b80", size = 9254471, upload-time = "2024-10-22T19:01:07.041Z" }, { url = "https://files.pythonhosted.org/packages/66/b5/e04550fd53de57001dbd5a87242da7ff784c80790adc48897977b6ccf891/netCDF4-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:5c5fbee6134ee1246c397e1508e5297d825aa19221fdf3fa8dc9727ad824d7a5", size = 6990521, upload-time = "2024-10-23T15:02:27.549Z" }, + { url = "https://files.pythonhosted.org/packages/84/0a/182bb4fe5639699ba39d558b553b8e6f04fbfea6cf78404c0f21ef149bf7/netcdf4-1.7.2-cp311-abi3-macosx_13_0_x86_64.whl", hash = "sha256:7e81c3c47f2772eab0b93fba8bb05b17b58dce17720e1bed25e9d76551deecd0", size = 2751391, upload-time = "2025-10-13T18:32:22.749Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1f/54ac27c791360f7452ca27ed1cb2917946bbe1ea4337c590a5abcef6332d/netcdf4-1.7.2-cp311-abi3-macosx_14_0_arm64.whl", hash = "sha256:cb2791dba37fc98fd1ac4e236c97822909f54efbcdf7f1415c9777810e0a28f4", size = 2387513, upload-time = "2025-10-13T18:32:27.499Z" }, + { url = "https://files.pythonhosted.org/packages/5c/5e/9bf3008a9e45c08f4c9fedce4d6f722ef5d970f56a9c5eb375a200dd2b66/netcdf4-1.7.2-cp311-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bf11480f6b8a5b246818ffff6b4d90481e51f8b9555b41af0c372eb0aaf8b65f", size = 9621674, upload-time = "2025-10-13T18:32:29.193Z" }, + { url = "https://files.pythonhosted.org/packages/a1/75/46871e85f2bbfb1efe229623d25d7c9daa17e2e968d5235572b2c8bb53e8/netcdf4-1.7.2-cp311-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1ccc05328a8ff31921b539821791aeb20b054879f3fdf6d1d505bf6422824fec", size = 9453759, upload-time = "2025-10-13T18:32:31.136Z" }, + { url = "https://files.pythonhosted.org/packages/cd/10/c52f12297965938d9b9be666ea1f9d8340c2aea31d6909d90aa650847248/netcdf4-1.7.2-cp311-abi3-win_amd64.whl", hash = "sha256:999bfc4acebf400ed724d5e7329e2e768accc7ee1fa1d82d505da782f730301b", size = 7148514, upload-time = "2025-10-13T18:32:33.121Z" }, ] [[package]] @@ -844,6 +1189,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a4/42/230a3fc58aa50ce28649f3f9162d83bbf3d77e29fdd397a4766d8a88409f/numpy_groupies-0.11.2-py3-none-any.whl", hash = "sha256:8d0d686160f860c12d97f12f457116f8b8bebfa33a68b8efcd24dcfedc2837f1", size = 40634, upload-time = "2024-07-31T18:31:29.679Z" }, ] +[[package]] +name = "owslib" +version = "0.35.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lxml" }, + { name = "python-dateutil" }, + { name = "pyyaml" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/03/5df0b995a3a6eefc24cc2320e3fe830d95e76ee6b0b1c6c9d0f1d4040bbe/owslib-0.35.0.tar.gz", hash = "sha256:0182f377bb30d25b78284bbaf82a12dece97902ed844cee88791ff38665b9b00", size = 194282, upload-time = "2025-10-28T15:13:42.594Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/12/74c145b9e273b2b479f1ea578c7778d96d0c34f2d112fd0ec96c905bb792/owslib-0.35.0-py3-none-any.whl", hash = "sha256:01648ea9b2b86502f456ad68a8dd07131d336416c5637f34adb358aafc0ad380", size = 240487, upload-time = "2025-10-28T15:13:41.399Z" }, +] + [[package]] name = "packaging" version = "24.2" @@ -929,6 +1289,49 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/71/e7/40fb618334dcdf7c5a316c0e7343c5cd82d3d866edc100d98e29bc945ecd/partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f", size = 18905, upload-time = "2024-05-06T19:51:39.271Z" }, ] +[[package]] +name = "pendulum" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/23/7c/009c12b86c7cc6c403aec80f8a4308598dfc5995e5c523a5491faaa3952e/pendulum-3.1.0.tar.gz", hash = "sha256:66f96303560f41d097bee7d2dc98ffca716fbb3a832c4b3062034c2d45865015", size = 85930, upload-time = "2025-04-19T14:30:01.675Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/6e/d28d3c22e6708b819a94c05bd05a3dfaed5c685379e8b6dc4b34b473b942/pendulum-3.1.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:61a03d14f8c64d13b2f7d5859e4b4053c4a7d3b02339f6c71f3e4606bfd67423", size = 338596, upload-time = "2025-04-19T14:01:11.306Z" }, + { url = "https://files.pythonhosted.org/packages/e1/e6/43324d58021d463c2eeb6146b169d2c935f2f840f9e45ac2d500453d954c/pendulum-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e674ed2d158afa5c361e60f1f67872dc55b492a10cacdaa7fcd7b7da5f158f24", size = 325854, upload-time = "2025-04-19T14:01:13.156Z" }, + { url = "https://files.pythonhosted.org/packages/b0/a7/d2ae79b960bfdea94dab67e2f118697b08bc9e98eb6bd8d32c4d99240da3/pendulum-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c75377eb16e58bbe7e03ea89eeea49be6fc5de0934a4aef0e263f8b4fa71bc2", size = 344334, upload-time = "2025-04-19T14:01:15.151Z" }, + { url = "https://files.pythonhosted.org/packages/96/94/941f071212e23c29aae7def891fb636930c648386e059ce09ea0dcd43933/pendulum-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:656b8b0ce070f0f2e5e2668247d3c783c55336534aa1f13bd0969535878955e1", size = 382259, upload-time = "2025-04-19T14:01:16.924Z" }, + { url = "https://files.pythonhosted.org/packages/51/ad/a78a701656aec00d16fee636704445c23ca11617a0bfe7c3848d1caa5157/pendulum-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48962903e6c1afe1f13548cb6252666056086c107d59e3d64795c58c9298bc2e", size = 436361, upload-time = "2025-04-19T14:01:18.796Z" }, + { url = "https://files.pythonhosted.org/packages/da/93/83f59ccbf4435c29dca8c63a6560fcbe4783079a468a5f91d9f886fd21f0/pendulum-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d364ec3f8e65010fefd4b0aaf7be5eb97e5df761b107a06f5e743b7c3f52c311", size = 353653, upload-time = "2025-04-19T14:01:20.159Z" }, + { url = "https://files.pythonhosted.org/packages/6f/0f/42d6644ec6339b41066f594e52d286162aecd2e9735aaf994d7e00c9e09d/pendulum-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:dd52caffc2afb86612ec43bbeb226f204ea12ebff9f3d12f900a7d3097210fcc", size = 524567, upload-time = "2025-04-19T14:01:21.457Z" }, + { url = "https://files.pythonhosted.org/packages/de/45/d84d909202755ab9d3379e5481fdf70f53344ebefbd68d6f5803ddde98a6/pendulum-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d439fccaa35c91f686bd59d30604dab01e8b5c1d0dd66e81648c432fd3f8a539", size = 525571, upload-time = "2025-04-19T14:01:23.329Z" }, + { url = "https://files.pythonhosted.org/packages/0d/e0/4de160773ce3c2f7843c310db19dd919a0cd02cc1c0384866f63b18a6251/pendulum-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:43288773a86d9c5c0ddb645f88f615ff6bd12fd1410b34323662beccb18f3b49", size = 260259, upload-time = "2025-04-19T14:01:24.689Z" }, + { url = "https://files.pythonhosted.org/packages/c1/7f/ffa278f78112c6c6e5130a702042f52aab5c649ae2edf814df07810bbba5/pendulum-3.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:569ea5072ae0f11d625e03b36d865f8037b76e838a3b621f6967314193896a11", size = 253899, upload-time = "2025-04-19T14:01:26.442Z" }, + { url = "https://files.pythonhosted.org/packages/7a/d7/b1bfe15a742f2c2713acb1fdc7dc3594ff46ef9418ac6a96fcb12a6ba60b/pendulum-3.1.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:4dfd53e7583ccae138be86d6c0a0b324c7547df2afcec1876943c4d481cf9608", size = 336209, upload-time = "2025-04-19T14:01:27.815Z" }, + { url = "https://files.pythonhosted.org/packages/eb/87/0392da0c603c828b926d9f7097fbdddaafc01388cb8a00888635d04758c3/pendulum-3.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6a6e06a28f3a7d696546347805536f6f38be458cb79de4f80754430696bea9e6", size = 323130, upload-time = "2025-04-19T14:01:29.336Z" }, + { url = "https://files.pythonhosted.org/packages/c0/61/95f1eec25796be6dddf71440ee16ec1fd0c573fc61a73bd1ef6daacd529a/pendulum-3.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e68d6a51880708084afd8958af42dc8c5e819a70a6c6ae903b1c4bfc61e0f25", size = 341509, upload-time = "2025-04-19T14:01:31.1Z" }, + { url = "https://files.pythonhosted.org/packages/b5/7b/eb0f5e6aa87d5e1b467a1611009dbdc92f0f72425ebf07669bfadd8885a6/pendulum-3.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e3f1e5da39a7ea7119efda1dd96b529748c1566f8a983412d0908455d606942", size = 378674, upload-time = "2025-04-19T14:01:32.974Z" }, + { url = "https://files.pythonhosted.org/packages/29/68/5a4c1b5de3e54e16cab21d2ec88f9cd3f18599e96cc90a441c0b0ab6b03f/pendulum-3.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9af1e5eeddb4ebbe1b1c9afb9fd8077d73416ade42dd61264b3f3b87742e0bb", size = 436133, upload-time = "2025-04-19T14:01:34.349Z" }, + { url = "https://files.pythonhosted.org/packages/87/5d/f7a1d693e5c0f789185117d5c1d5bee104f5b0d9fbf061d715fb61c840a8/pendulum-3.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20f74aa8029a42e327bfc150472e0e4d2358fa5d795f70460160ba81b94b6945", size = 351232, upload-time = "2025-04-19T14:01:35.669Z" }, + { url = "https://files.pythonhosted.org/packages/30/77/c97617eb31f1d0554edb073201a294019b9e0a9bd2f73c68e6d8d048cd6b/pendulum-3.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:cf6229e5ee70c2660148523f46c472e677654d0097bec010d6730f08312a4931", size = 521562, upload-time = "2025-04-19T14:01:37.05Z" }, + { url = "https://files.pythonhosted.org/packages/76/22/0d0ef3393303877e757b848ecef8a9a8c7627e17e7590af82d14633b2cd1/pendulum-3.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:350cabb23bf1aec7c7694b915d3030bff53a2ad4aeabc8c8c0d807c8194113d6", size = 523221, upload-time = "2025-04-19T14:01:38.444Z" }, + { url = "https://files.pythonhosted.org/packages/99/f3/aefb579aa3cebd6f2866b205fc7a60d33e9a696e9e629024752107dc3cf5/pendulum-3.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:42959341e843077c41d47420f28c3631de054abd64da83f9b956519b5c7a06a7", size = 260502, upload-time = "2025-04-19T14:01:39.814Z" }, + { url = "https://files.pythonhosted.org/packages/02/74/4332b5d6e34c63d4df8e8eab2249e74c05513b1477757463f7fdca99e9be/pendulum-3.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:006758e2125da2e624493324dfd5d7d1b02b0c44bc39358e18bf0f66d0767f5f", size = 253089, upload-time = "2025-04-19T14:01:41.171Z" }, + { url = "https://files.pythonhosted.org/packages/8e/1f/af928ba4aa403dac9569f787adcf024005e7654433d71f7a84e608716837/pendulum-3.1.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:28658b0baf4b30eb31d096a375983cfed033e60c0a7bbe94fa23f06cd779b50b", size = 336209, upload-time = "2025-04-19T14:01:42.775Z" }, + { url = "https://files.pythonhosted.org/packages/b6/16/b010643007ba964c397da7fa622924423883c1bbff1a53f9d1022cd7f024/pendulum-3.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b114dcb99ce511cb8f5495c7b6f0056b2c3dba444ef1ea6e48030d7371bd531a", size = 323132, upload-time = "2025-04-19T14:01:44.577Z" }, + { url = "https://files.pythonhosted.org/packages/64/19/c3c47aeecb5d9bceb0e89faafd800d39809b696c5b7bba8ec8370ad5052c/pendulum-3.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2404a6a54c80252ea393291f0b7f35525a61abae3d795407f34e118a8f133a18", size = 341509, upload-time = "2025-04-19T14:01:46.084Z" }, + { url = "https://files.pythonhosted.org/packages/38/cf/c06921ff6b860ff7e62e70b8e5d4dc70e36f5abb66d168bd64d51760bc4e/pendulum-3.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d06999790d9ee9962a1627e469f98568bf7ad1085553fa3c30ed08b3944a14d7", size = 378674, upload-time = "2025-04-19T14:01:47.727Z" }, + { url = "https://files.pythonhosted.org/packages/62/0b/a43953b9eba11e82612b033ac5133f716f1b76b6108a65da6f408b3cc016/pendulum-3.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94751c52f6b7c306734d1044c2c6067a474237e1e5afa2f665d1fbcbbbcf24b3", size = 436133, upload-time = "2025-04-19T14:01:49.126Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a0/ec3d70b3b96e23ae1d039f132af35e17704c22a8250d1887aaefea4d78a6/pendulum-3.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5553ac27be05e997ec26d7f004cf72788f4ce11fe60bb80dda604a64055b29d0", size = 351232, upload-time = "2025-04-19T14:01:50.575Z" }, + { url = "https://files.pythonhosted.org/packages/f4/97/aba23f1716b82f6951ba2b1c9178a2d107d1e66c102762a9bf19988547ea/pendulum-3.1.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:f8dee234ca6142bf0514368d01a72945a44685aaa2fc4c14c98d09da9437b620", size = 521563, upload-time = "2025-04-19T14:01:51.9Z" }, + { url = "https://files.pythonhosted.org/packages/01/33/2c0d5216cc53d16db0c4b3d510f141ee0a540937f8675948541190fbd48b/pendulum-3.1.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7378084fe54faab4ee481897a00b710876f2e901ded6221671e827a253e643f2", size = 523221, upload-time = "2025-04-19T14:01:53.275Z" }, + { url = "https://files.pythonhosted.org/packages/51/89/8de955c339c31aeae77fd86d3225509b998c81875e9dba28cb88b8cbf4b3/pendulum-3.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:8539db7ae2c8da430ac2515079e288948c8ebf7eb1edd3e8281b5cdf433040d6", size = 260501, upload-time = "2025-04-19T14:01:54.749Z" }, + { url = "https://files.pythonhosted.org/packages/15/c3/226a3837363e94f8722461848feec18bfdd7d5172564d53aa3c3397ff01e/pendulum-3.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:1ce26a608e1f7387cd393fba2a129507c4900958d4f47b90757ec17656856571", size = 253087, upload-time = "2025-04-19T14:01:55.998Z" }, + { url = "https://files.pythonhosted.org/packages/6e/23/e98758924d1b3aac11a626268eabf7f3cf177e7837c28d47bf84c64532d0/pendulum-3.1.0-py3-none-any.whl", hash = "sha256:f9178c2a8e291758ade1e8dd6371b1d26d08371b4c7730a6e9a3ef8b16ebae0f", size = 111799, upload-time = "2025-04-19T14:02:34.739Z" }, +] + [[package]] name = "pexpect" version = "4.9.0" @@ -1075,6 +1478,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, ] +[[package]] +name = "pygeoif" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/02/2e/c6660ceea2fc28feefdfb0389bf53b5d0e0ba92aaba72e813901cb0552ed/pygeoif-1.6.0.tar.gz", hash = "sha256:eb0efa59c6573ea2cadce69a7ea9d2d10394b895ed47831c00d44752219c01be", size = 40915, upload-time = "2025-10-01T10:02:13.429Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/7f/c803c39fa76fe055bc4154fb6e897185ad21946820a2227283e0a20eeb35/pygeoif-1.6.0-py3-none-any.whl", hash = "sha256:02f84807dadbaf1941c4bb2a9ef1ebac99b1b0404597d2602efdbb58910c69c9", size = 27976, upload-time = "2025-10-01T10:02:12.19Z" }, +] + [[package]] name = "pygments" version = "2.19.1" @@ -1093,6 +1508,71 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1c/a7/c8a2d361bf89c0d9577c934ebb7421b25dc84bf3a8e3ac0a40aed9acc547/pyparsing-3.2.1-py3-none-any.whl", hash = "sha256:506ff4f4386c4cec0590ec19e6302d3aedb992fdc02c761e90416f158dacf8e1", size = 107716, upload-time = "2024-12-31T20:59:42.738Z" }, ] +[[package]] +name = "pyproj" +version = "3.7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/90/67bd7260b4ea9b8b20b4f58afef6c223ecb3abf368eb4ec5bc2cdef81b49/pyproj-3.7.2.tar.gz", hash = "sha256:39a0cf1ecc7e282d1d30f36594ebd55c9fae1fda8a2622cee5d100430628f88c", size = 226279, upload-time = "2025-08-14T12:05:42.18Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/bd/f205552cd1713b08f93b09e39a3ec99edef0b3ebbbca67b486fdf1abe2de/pyproj-3.7.2-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:2514d61f24c4e0bb9913e2c51487ecdaeca5f8748d8313c933693416ca41d4d5", size = 6227022, upload-time = "2025-08-14T12:03:51.474Z" }, + { url = "https://files.pythonhosted.org/packages/75/4c/9a937e659b8b418ab573c6d340d27e68716928953273e0837e7922fcac34/pyproj-3.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:8693ca3892d82e70de077701ee76dd13d7bca4ae1c9d1e739d72004df015923a", size = 4625810, upload-time = "2025-08-14T12:03:53.808Z" }, + { url = "https://files.pythonhosted.org/packages/c0/7d/a9f41e814dc4d1dc54e95b2ccaf0b3ebe3eb18b1740df05fe334724c3d89/pyproj-3.7.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5e26484d80fea56273ed1555abaea161e9661d81a6c07815d54b8e883d4ceb25", size = 9638694, upload-time = "2025-08-14T12:03:55.669Z" }, + { url = "https://files.pythonhosted.org/packages/ad/ab/9bdb4a6216b712a1f9aab1c0fcbee5d3726f34a366f29c3e8c08a78d6b70/pyproj-3.7.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:281cb92847814e8018010c48b4069ff858a30236638631c1a91dd7bfa68f8a8a", size = 9493977, upload-time = "2025-08-14T12:03:57.937Z" }, + { url = "https://files.pythonhosted.org/packages/c9/db/2db75b1b6190f1137b1c4e8ef6a22e1c338e46320f6329bfac819143e063/pyproj-3.7.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9c8577f0b7bb09118ec2e57e3babdc977127dd66326d6c5d755c76b063e6d9dc", size = 10841151, upload-time = "2025-08-14T12:04:00.271Z" }, + { url = "https://files.pythonhosted.org/packages/89/f7/989643394ba23a286e9b7b3f09981496172f9e0d4512457ffea7dc47ffc7/pyproj-3.7.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a23f59904fac3a5e7364b3aa44d288234af267ca041adb2c2b14a903cd5d3ac5", size = 10751585, upload-time = "2025-08-14T12:04:02.228Z" }, + { url = "https://files.pythonhosted.org/packages/53/6d/ad928fe975a6c14a093c92e6a319ca18f479f3336bb353a740bdba335681/pyproj-3.7.2-cp311-cp311-win32.whl", hash = "sha256:f2af4ed34b2cf3e031a2d85b067a3ecbd38df073c567e04b52fa7a0202afde8a", size = 5908533, upload-time = "2025-08-14T12:04:04.821Z" }, + { url = "https://files.pythonhosted.org/packages/79/e0/b95584605cec9ed50b7ebaf7975d1c4ddeec5a86b7a20554ed8b60042bd7/pyproj-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:0b7cb633565129677b2a183c4d807c727d1c736fcb0568a12299383056e67433", size = 6320742, upload-time = "2025-08-14T12:04:06.357Z" }, + { url = "https://files.pythonhosted.org/packages/b7/4d/536e8f93bca808175c2d0a5ac9fdf69b960d8ab6b14f25030dccb07464d7/pyproj-3.7.2-cp311-cp311-win_arm64.whl", hash = "sha256:38b08d85e3a38e455625b80e9eb9f78027c8e2649a21dec4df1f9c3525460c71", size = 6245772, upload-time = "2025-08-14T12:04:08.365Z" }, + { url = "https://files.pythonhosted.org/packages/8d/ab/9893ea9fb066be70ed9074ae543914a618c131ed8dff2da1e08b3a4df4db/pyproj-3.7.2-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:0a9bb26a6356fb5b033433a6d1b4542158fb71e3c51de49b4c318a1dff3aeaab", size = 6219832, upload-time = "2025-08-14T12:04:10.264Z" }, + { url = "https://files.pythonhosted.org/packages/53/78/4c64199146eed7184eb0e85bedec60a4aa8853b6ffe1ab1f3a8b962e70a0/pyproj-3.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:567caa03021178861fad27fabde87500ec6d2ee173dd32f3e2d9871e40eebd68", size = 4620650, upload-time = "2025-08-14T12:04:11.978Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ac/14a78d17943898a93ef4f8c6a9d4169911c994e3161e54a7cedeba9d8dde/pyproj-3.7.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c203101d1dc3c038a56cff0447acc515dd29d6e14811406ac539c21eed422b2a", size = 9667087, upload-time = "2025-08-14T12:04:13.964Z" }, + { url = "https://files.pythonhosted.org/packages/b8/be/212882c450bba74fc8d7d35cbd57e4af84792f0a56194819d98106b075af/pyproj-3.7.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1edc34266c0c23ced85f95a1ee8b47c9035eae6aca5b6b340327250e8e281630", size = 9552797, upload-time = "2025-08-14T12:04:16.624Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c0/c0f25c87b5d2a8686341c53c1792a222a480d6c9caf60311fec12c99ec26/pyproj-3.7.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa9f26c21bc0e2dc3d224cb1eb4020cf23e76af179a7c66fea49b828611e4260", size = 10837036, upload-time = "2025-08-14T12:04:18.733Z" }, + { url = "https://files.pythonhosted.org/packages/5d/37/5cbd6772addde2090c91113332623a86e8c7d583eccb2ad02ea634c4a89f/pyproj-3.7.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9428b318530625cb389b9ddc9c51251e172808a4af79b82809376daaeabe5e9", size = 10775952, upload-time = "2025-08-14T12:04:20.709Z" }, + { url = "https://files.pythonhosted.org/packages/69/a1/dc250e3cf83eb4b3b9a2cf86fdb5e25288bd40037ae449695550f9e96b2f/pyproj-3.7.2-cp312-cp312-win32.whl", hash = "sha256:b3d99ed57d319da042f175f4554fc7038aa4bcecc4ac89e217e350346b742c9d", size = 5898872, upload-time = "2025-08-14T12:04:22.485Z" }, + { url = "https://files.pythonhosted.org/packages/4a/a6/6fe724b72b70f2b00152d77282e14964d60ab092ec225e67c196c9b463e5/pyproj-3.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:11614a054cd86a2ed968a657d00987a86eeb91fdcbd9ad3310478685dc14a128", size = 6312176, upload-time = "2025-08-14T12:04:24.736Z" }, + { url = "https://files.pythonhosted.org/packages/5d/68/915cc32c02a91e76d02c8f55d5a138d6ef9e47a0d96d259df98f4842e558/pyproj-3.7.2-cp312-cp312-win_arm64.whl", hash = "sha256:509a146d1398bafe4f53273398c3bb0b4732535065fa995270e52a9d3676bca3", size = 6233452, upload-time = "2025-08-14T12:04:27.287Z" }, + { url = "https://files.pythonhosted.org/packages/be/14/faf1b90d267cea68d7e70662e7f88cefdb1bc890bd596c74b959e0517a72/pyproj-3.7.2-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:19466e529b1b15eeefdf8ff26b06fa745856c044f2f77bf0edbae94078c1dfa1", size = 6214580, upload-time = "2025-08-14T12:04:28.804Z" }, + { url = "https://files.pythonhosted.org/packages/35/48/da9a45b184d375f62667f62eba0ca68569b0bd980a0bb7ffcc1d50440520/pyproj-3.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:c79b9b84c4a626c5dc324c0d666be0bfcebd99f7538d66e8898c2444221b3da7", size = 4615388, upload-time = "2025-08-14T12:04:30.553Z" }, + { url = "https://files.pythonhosted.org/packages/5e/e7/d2b459a4a64bca328b712c1b544e109df88e5c800f7c143cfbc404d39bfb/pyproj-3.7.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ceecf374cacca317bc09e165db38ac548ee3cad07c3609442bd70311c59c21aa", size = 9628455, upload-time = "2025-08-14T12:04:32.435Z" }, + { url = "https://files.pythonhosted.org/packages/f8/85/c2b1706e51942de19076eff082f8495e57d5151364e78b5bef4af4a1d94a/pyproj-3.7.2-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5141a538ffdbe4bfd157421828bb2e07123a90a7a2d6f30fa1462abcfb5ce681", size = 9514269, upload-time = "2025-08-14T12:04:34.599Z" }, + { url = "https://files.pythonhosted.org/packages/34/38/07a9b89ae7467872f9a476883a5bad9e4f4d1219d31060f0f2b282276cbe/pyproj-3.7.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f000841e98ea99acbb7b8ca168d67773b0191de95187228a16110245c5d954d5", size = 10808437, upload-time = "2025-08-14T12:04:36.485Z" }, + { url = "https://files.pythonhosted.org/packages/12/56/fda1daeabbd39dec5b07f67233d09f31facb762587b498e6fc4572be9837/pyproj-3.7.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8115faf2597f281a42ab608ceac346b4eb1383d3b45ab474fd37341c4bf82a67", size = 10745540, upload-time = "2025-08-14T12:04:38.568Z" }, + { url = "https://files.pythonhosted.org/packages/0d/90/c793182cbba65a39a11db2ac6b479fe76c59e6509ae75e5744c344a0da9d/pyproj-3.7.2-cp313-cp313-win32.whl", hash = "sha256:f18c0579dd6be00b970cb1a6719197fceecc407515bab37da0066f0184aafdf3", size = 5896506, upload-time = "2025-08-14T12:04:41.059Z" }, + { url = "https://files.pythonhosted.org/packages/be/0f/747974129cf0d800906f81cd25efd098c96509026e454d4b66868779ab04/pyproj-3.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:bb41c29d5f60854b1075853fe80c58950b398d4ebb404eb532536ac8d2834ed7", size = 6310195, upload-time = "2025-08-14T12:04:42.974Z" }, + { url = "https://files.pythonhosted.org/packages/82/64/fc7598a53172c4931ec6edf5228280663063150625d3f6423b4c20f9daff/pyproj-3.7.2-cp313-cp313-win_arm64.whl", hash = "sha256:2b617d573be4118c11cd96b8891a0b7f65778fa7733ed8ecdb297a447d439100", size = 6230748, upload-time = "2025-08-14T12:04:44.491Z" }, + { url = "https://files.pythonhosted.org/packages/aa/f0/611dd5cddb0d277f94b7af12981f56e1441bf8d22695065d4f0df5218498/pyproj-3.7.2-cp313-cp313t-macosx_13_0_x86_64.whl", hash = "sha256:d27b48f0e81beeaa2b4d60c516c3a1cfbb0c7ff6ef71256d8e9c07792f735279", size = 6241729, upload-time = "2025-08-14T12:04:46.274Z" }, + { url = "https://files.pythonhosted.org/packages/15/93/40bd4a6c523ff9965e480870611aed7eda5aa2c6128c6537345a2b77b542/pyproj-3.7.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:55a3610d75023c7b1c6e583e48ef8f62918e85a2ae81300569d9f104d6684bb6", size = 4652497, upload-time = "2025-08-14T12:04:48.203Z" }, + { url = "https://files.pythonhosted.org/packages/1b/ae/7150ead53c117880b35e0d37960d3138fe640a235feb9605cb9386f50bb0/pyproj-3.7.2-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8d7349182fa622696787cc9e195508d2a41a64765da9b8a6bee846702b9e6220", size = 9942610, upload-time = "2025-08-14T12:04:49.652Z" }, + { url = "https://files.pythonhosted.org/packages/d8/17/7a4a7eafecf2b46ab64e5c08176c20ceb5844b503eaa551bf12ccac77322/pyproj-3.7.2-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:d230b186eb876ed4f29a7c5ee310144c3a0e44e89e55f65fb3607e13f6db337c", size = 9692390, upload-time = "2025-08-14T12:04:51.731Z" }, + { url = "https://files.pythonhosted.org/packages/c3/55/ae18f040f6410f0ea547a21ada7ef3e26e6c82befa125b303b02759c0e9d/pyproj-3.7.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:237499c7862c578d0369e2b8ac56eec550e391a025ff70e2af8417139dabb41c", size = 11047596, upload-time = "2025-08-14T12:04:53.748Z" }, + { url = "https://files.pythonhosted.org/packages/e6/2e/d3fff4d2909473f26ae799f9dda04caa322c417a51ff3b25763f7d03b233/pyproj-3.7.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8c225f5978abd506fd9a78eaaf794435e823c9156091cabaab5374efb29d7f69", size = 10896975, upload-time = "2025-08-14T12:04:55.875Z" }, + { url = "https://files.pythonhosted.org/packages/f2/bc/8fc7d3963d87057b7b51ebe68c1e7c51c23129eee5072ba6b86558544a46/pyproj-3.7.2-cp313-cp313t-win32.whl", hash = "sha256:2da731876d27639ff9d2d81c151f6ab90a1546455fabd93368e753047be344a2", size = 5953057, upload-time = "2025-08-14T12:04:58.466Z" }, + { url = "https://files.pythonhosted.org/packages/cc/27/ea9809966cc47d2d51e6d5ae631ea895f7c7c7b9b3c29718f900a8f7d197/pyproj-3.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f54d91ae18dd23b6c0ab48126d446820e725419da10617d86a1b69ada6d881d3", size = 6375414, upload-time = "2025-08-14T12:04:59.861Z" }, + { url = "https://files.pythonhosted.org/packages/5b/f8/1ef0129fba9a555c658e22af68989f35e7ba7b9136f25758809efec0cd6e/pyproj-3.7.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fc52ba896cfc3214dc9f9ca3c0677a623e8fdd096b257c14a31e719d21ff3fdd", size = 6262501, upload-time = "2025-08-14T12:05:01.39Z" }, + { url = "https://files.pythonhosted.org/packages/42/17/c2b050d3f5b71b6edd0d96ae16c990fdc42a5f1366464a5c2772146de33a/pyproj-3.7.2-cp314-cp314-macosx_13_0_x86_64.whl", hash = "sha256:2aaa328605ace41db050d06bac1adc11f01b71fe95c18661497763116c3a0f02", size = 6214541, upload-time = "2025-08-14T12:05:03.166Z" }, + { url = "https://files.pythonhosted.org/packages/03/68/68ada9c8aea96ded09a66cfd9bf87aa6db8c2edebe93f5bf9b66b0143fbc/pyproj-3.7.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:35dccbce8201313c596a970fde90e33605248b66272595c061b511c8100ccc08", size = 4617456, upload-time = "2025-08-14T12:05:04.563Z" }, + { url = "https://files.pythonhosted.org/packages/81/e4/4c50ceca7d0e937977866b02cb64e6ccf4df979a5871e521f9e255df6073/pyproj-3.7.2-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:25b0b7cb0042444c29a164b993c45c1b8013d6c48baa61dc1160d834a277e83b", size = 9615590, upload-time = "2025-08-14T12:05:06.094Z" }, + { url = "https://files.pythonhosted.org/packages/05/1e/ada6fb15a1d75b5bd9b554355a69a798c55a7dcc93b8d41596265c1772e3/pyproj-3.7.2-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:85def3a6388e9ba51f964619aa002a9d2098e77c6454ff47773bb68871024281", size = 9474960, upload-time = "2025-08-14T12:05:07.973Z" }, + { url = "https://files.pythonhosted.org/packages/51/07/9d48ad0a8db36e16f842f2c8a694c1d9d7dcf9137264846bef77585a71f3/pyproj-3.7.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b1bccefec3875ab81eabf49059e2b2ea77362c178b66fd3528c3e4df242f1516", size = 10799478, upload-time = "2025-08-14T12:05:14.102Z" }, + { url = "https://files.pythonhosted.org/packages/85/cf/2f812b529079f72f51ff2d6456b7fef06c01735e5cfd62d54ffb2b548028/pyproj-3.7.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d5371ca114d6990b675247355a801925814eca53e6c4b2f1b5c0a956336ee36e", size = 10710030, upload-time = "2025-08-14T12:05:16.317Z" }, + { url = "https://files.pythonhosted.org/packages/99/9b/4626a19e1f03eba4c0e77b91a6cf0f73aa9cb5d51a22ee385c22812bcc2c/pyproj-3.7.2-cp314-cp314-win32.whl", hash = "sha256:77f066626030f41be543274f5ac79f2a511fe89860ecd0914f22131b40a0ec25", size = 5991181, upload-time = "2025-08-14T12:05:19.492Z" }, + { url = "https://files.pythonhosted.org/packages/04/b2/5a6610554306a83a563080c2cf2c57565563eadd280e15388efa00fb5b33/pyproj-3.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:5a964da1696b8522806f4276ab04ccfff8f9eb95133a92a25900697609d40112", size = 6434721, upload-time = "2025-08-14T12:05:21.022Z" }, + { url = "https://files.pythonhosted.org/packages/ae/ce/6c910ea2e1c74ef673c5d48c482564b8a7824a44c4e35cca2e765b68cfcc/pyproj-3.7.2-cp314-cp314-win_arm64.whl", hash = "sha256:e258ab4dbd3cf627809067c0ba8f9884ea76c8e5999d039fb37a1619c6c3e1f6", size = 6363821, upload-time = "2025-08-14T12:05:22.627Z" }, + { url = "https://files.pythonhosted.org/packages/e4/e4/5532f6f7491812ba782a2177fe9de73fd8e2912b59f46a1d056b84b9b8f2/pyproj-3.7.2-cp314-cp314t-macosx_13_0_x86_64.whl", hash = "sha256:bbbac2f930c6d266f70ec75df35ef851d96fdb3701c674f42fd23a9314573b37", size = 6241773, upload-time = "2025-08-14T12:05:24.577Z" }, + { url = "https://files.pythonhosted.org/packages/20/1f/0938c3f2bbbef1789132d1726d9b0e662f10cfc22522743937f421ad664e/pyproj-3.7.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:b7544e0a3d6339dc9151e9c8f3ea62a936ab7cc446a806ec448bbe86aebb979b", size = 4652537, upload-time = "2025-08-14T12:05:26.391Z" }, + { url = "https://files.pythonhosted.org/packages/c7/a8/488b1ed47d25972f33874f91f09ca8f2227902f05f63a2b80dc73e7b1c97/pyproj-3.7.2-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:f7f5133dca4c703e8acadf6f30bc567d39a42c6af321e7f81975c2518f3ed357", size = 9940864, upload-time = "2025-08-14T12:05:27.985Z" }, + { url = "https://files.pythonhosted.org/packages/c7/cc/7f4c895d0cb98e47b6a85a6d79eaca03eb266129eed2f845125c09cf31ff/pyproj-3.7.2-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:5aff3343038d7426aa5076f07feb88065f50e0502d1b0d7c22ddfdd2c75a3f81", size = 9688868, upload-time = "2025-08-14T12:05:30.425Z" }, + { url = "https://files.pythonhosted.org/packages/b2/b7/c7e306b8bb0f071d9825b753ee4920f066c40fbfcce9372c4f3cfb2fc4ed/pyproj-3.7.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b0552178c61f2ac1c820d087e8ba6e62b29442debddbb09d51c4bf8acc84d888", size = 11045910, upload-time = "2025-08-14T12:05:32.507Z" }, + { url = "https://files.pythonhosted.org/packages/42/fb/538a4d2df695980e2dde5c04d965fbdd1fe8c20a3194dc4aaa3952a4d1be/pyproj-3.7.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:47d87db2d2c436c5fd0409b34d70bb6cdb875cca2ebe7a9d1c442367b0ab8d59", size = 10895724, upload-time = "2025-08-14T12:05:35.465Z" }, + { url = "https://files.pythonhosted.org/packages/e8/8b/a3f0618b03957de9db5489a04558a8826f43906628bb0b766033aa3b5548/pyproj-3.7.2-cp314-cp314t-win32.whl", hash = "sha256:c9b6f1d8ad3e80a0ee0903a778b6ece7dca1d1d40f6d114ae01bc8ddbad971aa", size = 6056848, upload-time = "2025-08-14T12:05:37.553Z" }, + { url = "https://files.pythonhosted.org/packages/bc/56/413240dd5149dd3291eda55aa55a659da4431244a2fd1319d0ae89407cfb/pyproj-3.7.2-cp314-cp314t-win_amd64.whl", hash = "sha256:1914e29e27933ba6f9822663ee0600f169014a2859f851c054c88cf5ea8a333c", size = 6517676, upload-time = "2025-08-14T12:05:39.126Z" }, + { url = "https://files.pythonhosted.org/packages/15/73/a7141a1a0559bf1a7aa42a11c879ceb19f02f5c6c371c6d57fd86cefd4d1/pyproj-3.7.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d9d25bae416a24397e0d85739f84d323b55f6511e45a522dd7d7eae70d10c7e4", size = 6391844, upload-time = "2025-08-14T12:05:40.745Z" }, +] + [[package]] name = "pytest" version = "8.3.4" @@ -1129,6 +1609,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/eb/38/ac33370d784287baa1c3d538978b5e2ea064d4c1b93ffbd12826c190dd10/pytz-2025.1-py2.py3-none-any.whl", hash = "sha256:89dd22dca55b46eac6eda23b2d72721bf1bdfef212645d81513ef5d03038de57", size = 507930, upload-time = "2025-01-31T01:54:45.634Z" }, ] +[[package]] +name = "pyudunits2" +version = "0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sympy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3a/22/8c6c8762af2223672bc701d5e72b607a3be4d000f8776c59b72a13a08044/pyudunits2-0.1.tar.gz", hash = "sha256:791d234d402d8877e55a8baaad4a329c7537a187eda5bfc1b19d33150e0a170a", size = 190383, upload-time = "2025-02-07T08:32:22.462Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/89/31c191e0c3743e642664e19acc040442b4e616c9fc5894ccd776d3823129/pyudunits2-0.1-py3-none-any.whl", hash = "sha256:38b21a832e4165e5276a9d216b7573c42cebfd43d0f932ccb06c9d627d211db1", size = 233152, upload-time = "2025-02-07T08:32:19.876Z" }, +] + [[package]] name = "pywin32" version = "308" @@ -1236,6 +1728,113 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/17/fc/b79f0b72891cbb9917698add0fede71dfb64e83fa3481a02ed0e78c34be7/pyzmq-26.2.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:17f88622b848805d3f6427ce1ad5a2aa3cf61f12a97e684dab2979802024d460", size = 1399943, upload-time = "2025-01-30T11:39:58.293Z" }, ] +[[package]] +name = "regex" +version = "2025.11.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/a9/546676f25e573a4cf00fe8e119b78a37b6a8fe2dc95cda877b30889c9c45/regex-2025.11.3.tar.gz", hash = "sha256:1fedc720f9bb2494ce31a58a1631f9c82df6a09b49c19517ea5cc280b4541e01", size = 414669, upload-time = "2025-11-03T21:34:22.089Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/90/4fb5056e5f03a7048abd2b11f598d464f0c167de4f2a51aa868c376b8c70/regex-2025.11.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:eadade04221641516fa25139273505a1c19f9bf97589a05bc4cfcd8b4a618031", size = 488081, upload-time = "2025-11-03T21:31:11.946Z" }, + { url = "https://files.pythonhosted.org/packages/85/23/63e481293fac8b069d84fba0299b6666df720d875110efd0338406b5d360/regex-2025.11.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:feff9e54ec0dd3833d659257f5c3f5322a12eee58ffa360984b716f8b92983f4", size = 290554, upload-time = "2025-11-03T21:31:13.387Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9d/b101d0262ea293a0066b4522dfb722eb6a8785a8c3e084396a5f2c431a46/regex-2025.11.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3b30bc921d50365775c09a7ed446359e5c0179e9e2512beec4a60cbcef6ddd50", size = 288407, upload-time = "2025-11-03T21:31:14.809Z" }, + { url = "https://files.pythonhosted.org/packages/0c/64/79241c8209d5b7e00577ec9dca35cd493cc6be35b7d147eda367d6179f6d/regex-2025.11.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f99be08cfead2020c7ca6e396c13543baea32343b7a9a5780c462e323bd8872f", size = 793418, upload-time = "2025-11-03T21:31:16.556Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e2/23cd5d3573901ce8f9757c92ca4db4d09600b865919b6d3e7f69f03b1afd/regex-2025.11.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6dd329a1b61c0ee95ba95385fb0c07ea0d3fe1a21e1349fa2bec272636217118", size = 860448, upload-time = "2025-11-03T21:31:18.12Z" }, + { url = "https://files.pythonhosted.org/packages/2a/4c/aecf31beeaa416d0ae4ecb852148d38db35391aac19c687b5d56aedf3a8b/regex-2025.11.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4c5238d32f3c5269d9e87be0cf096437b7622b6920f5eac4fd202468aaeb34d2", size = 907139, upload-time = "2025-11-03T21:31:20.753Z" }, + { url = "https://files.pythonhosted.org/packages/61/22/b8cb00df7d2b5e0875f60628594d44dba283e951b1ae17c12f99e332cc0a/regex-2025.11.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:10483eefbfb0adb18ee9474498c9a32fcf4e594fbca0543bb94c48bac6183e2e", size = 800439, upload-time = "2025-11-03T21:31:22.069Z" }, + { url = "https://files.pythonhosted.org/packages/02/a8/c4b20330a5cdc7a8eb265f9ce593f389a6a88a0c5f280cf4d978f33966bc/regex-2025.11.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:78c2d02bb6e1da0720eedc0bad578049cad3f71050ef8cd065ecc87691bed2b0", size = 782965, upload-time = "2025-11-03T21:31:23.598Z" }, + { url = "https://files.pythonhosted.org/packages/b4/4c/ae3e52988ae74af4b04d2af32fee4e8077f26e51b62ec2d12d246876bea2/regex-2025.11.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e6b49cd2aad93a1790ce9cffb18964f6d3a4b0b3dbdbd5de094b65296fce6e58", size = 854398, upload-time = "2025-11-03T21:31:25.008Z" }, + { url = "https://files.pythonhosted.org/packages/06/d1/a8b9cf45874eda14b2e275157ce3b304c87e10fb38d9fc26a6e14eb18227/regex-2025.11.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:885b26aa3ee56433b630502dc3d36ba78d186a00cc535d3806e6bfd9ed3c70ab", size = 845897, upload-time = "2025-11-03T21:31:26.427Z" }, + { url = "https://files.pythonhosted.org/packages/ea/fe/1830eb0236be93d9b145e0bd8ab499f31602fe0999b1f19e99955aa8fe20/regex-2025.11.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ddd76a9f58e6a00f8772e72cff8ebcff78e022be95edf018766707c730593e1e", size = 788906, upload-time = "2025-11-03T21:31:28.078Z" }, + { url = "https://files.pythonhosted.org/packages/66/47/dc2577c1f95f188c1e13e2e69d8825a5ac582ac709942f8a03af42ed6e93/regex-2025.11.3-cp311-cp311-win32.whl", hash = "sha256:3e816cc9aac1cd3cc9a4ec4d860f06d40f994b5c7b4d03b93345f44e08cc68bf", size = 265812, upload-time = "2025-11-03T21:31:29.72Z" }, + { url = "https://files.pythonhosted.org/packages/50/1e/15f08b2f82a9bbb510621ec9042547b54d11e83cb620643ebb54e4eb7d71/regex-2025.11.3-cp311-cp311-win_amd64.whl", hash = "sha256:087511f5c8b7dfbe3a03f5d5ad0c2a33861b1fc387f21f6f60825a44865a385a", size = 277737, upload-time = "2025-11-03T21:31:31.422Z" }, + { url = "https://files.pythonhosted.org/packages/f4/fc/6500eb39f5f76c5e47a398df82e6b535a5e345f839581012a418b16f9cc3/regex-2025.11.3-cp311-cp311-win_arm64.whl", hash = "sha256:1ff0d190c7f68ae7769cd0313fe45820ba07ffebfddfaa89cc1eb70827ba0ddc", size = 270290, upload-time = "2025-11-03T21:31:33.041Z" }, + { url = "https://files.pythonhosted.org/packages/e8/74/18f04cb53e58e3fb107439699bd8375cf5a835eec81084e0bddbd122e4c2/regex-2025.11.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bc8ab71e2e31b16e40868a40a69007bc305e1109bd4658eb6cad007e0bf67c41", size = 489312, upload-time = "2025-11-03T21:31:34.343Z" }, + { url = "https://files.pythonhosted.org/packages/78/3f/37fcdd0d2b1e78909108a876580485ea37c91e1acf66d3bb8e736348f441/regex-2025.11.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:22b29dda7e1f7062a52359fca6e58e548e28c6686f205e780b02ad8ef710de36", size = 291256, upload-time = "2025-11-03T21:31:35.675Z" }, + { url = "https://files.pythonhosted.org/packages/bf/26/0a575f58eb23b7ebd67a45fccbc02ac030b737b896b7e7a909ffe43ffd6a/regex-2025.11.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3a91e4a29938bc1a082cc28fdea44be420bf2bebe2665343029723892eb073e1", size = 288921, upload-time = "2025-11-03T21:31:37.07Z" }, + { url = "https://files.pythonhosted.org/packages/ea/98/6a8dff667d1af907150432cf5abc05a17ccd32c72a3615410d5365ac167a/regex-2025.11.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:08b884f4226602ad40c5d55f52bf91a9df30f513864e0054bad40c0e9cf1afb7", size = 798568, upload-time = "2025-11-03T21:31:38.784Z" }, + { url = "https://files.pythonhosted.org/packages/64/15/92c1db4fa4e12733dd5a526c2dd2b6edcbfe13257e135fc0f6c57f34c173/regex-2025.11.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3e0b11b2b2433d1c39c7c7a30e3f3d0aeeea44c2a8d0bae28f6b95f639927a69", size = 864165, upload-time = "2025-11-03T21:31:40.559Z" }, + { url = "https://files.pythonhosted.org/packages/f9/e7/3ad7da8cdee1ce66c7cd37ab5ab05c463a86ffeb52b1a25fe7bd9293b36c/regex-2025.11.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:87eb52a81ef58c7ba4d45c3ca74e12aa4b4e77816f72ca25258a85b3ea96cb48", size = 912182, upload-time = "2025-11-03T21:31:42.002Z" }, + { url = "https://files.pythonhosted.org/packages/84/bd/9ce9f629fcb714ffc2c3faf62b6766ecb7a585e1e885eb699bcf130a5209/regex-2025.11.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a12ab1f5c29b4e93db518f5e3872116b7e9b1646c9f9f426f777b50d44a09e8c", size = 803501, upload-time = "2025-11-03T21:31:43.815Z" }, + { url = "https://files.pythonhosted.org/packages/7c/0f/8dc2e4349d8e877283e6edd6c12bdcebc20f03744e86f197ab6e4492bf08/regex-2025.11.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7521684c8c7c4f6e88e35ec89680ee1aa8358d3f09d27dfbdf62c446f5d4c695", size = 787842, upload-time = "2025-11-03T21:31:45.353Z" }, + { url = "https://files.pythonhosted.org/packages/f9/73/cff02702960bc185164d5619c0c62a2f598a6abff6695d391b096237d4ab/regex-2025.11.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7fe6e5440584e94cc4b3f5f4d98a25e29ca12dccf8873679a635638349831b98", size = 858519, upload-time = "2025-11-03T21:31:46.814Z" }, + { url = "https://files.pythonhosted.org/packages/61/83/0e8d1ae71e15bc1dc36231c90b46ee35f9d52fab2e226b0e039e7ea9c10a/regex-2025.11.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:8e026094aa12b43f4fd74576714e987803a315c76edb6b098b9809db5de58f74", size = 850611, upload-time = "2025-11-03T21:31:48.289Z" }, + { url = "https://files.pythonhosted.org/packages/c8/f5/70a5cdd781dcfaa12556f2955bf170cd603cb1c96a1827479f8faea2df97/regex-2025.11.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:435bbad13e57eb5606a68443af62bed3556de2f46deb9f7d4237bc2f1c9fb3a0", size = 789759, upload-time = "2025-11-03T21:31:49.759Z" }, + { url = "https://files.pythonhosted.org/packages/59/9b/7c29be7903c318488983e7d97abcf8ebd3830e4c956c4c540005fcfb0462/regex-2025.11.3-cp312-cp312-win32.whl", hash = "sha256:3839967cf4dc4b985e1570fd8d91078f0c519f30491c60f9ac42a8db039be204", size = 266194, upload-time = "2025-11-03T21:31:51.53Z" }, + { url = "https://files.pythonhosted.org/packages/1a/67/3b92df89f179d7c367be654ab5626ae311cb28f7d5c237b6bb976cd5fbbb/regex-2025.11.3-cp312-cp312-win_amd64.whl", hash = "sha256:e721d1b46e25c481dc5ded6f4b3f66c897c58d2e8cfdf77bbced84339108b0b9", size = 277069, upload-time = "2025-11-03T21:31:53.151Z" }, + { url = "https://files.pythonhosted.org/packages/d7/55/85ba4c066fe5094d35b249c3ce8df0ba623cfd35afb22d6764f23a52a1c5/regex-2025.11.3-cp312-cp312-win_arm64.whl", hash = "sha256:64350685ff08b1d3a6fff33f45a9ca183dc1d58bbfe4981604e70ec9801bbc26", size = 270330, upload-time = "2025-11-03T21:31:54.514Z" }, + { url = "https://files.pythonhosted.org/packages/e1/a7/dda24ebd49da46a197436ad96378f17df30ceb40e52e859fc42cac45b850/regex-2025.11.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c1e448051717a334891f2b9a620fe36776ebf3dd8ec46a0b877c8ae69575feb4", size = 489081, upload-time = "2025-11-03T21:31:55.9Z" }, + { url = "https://files.pythonhosted.org/packages/19/22/af2dc751aacf88089836aa088a1a11c4f21a04707eb1b0478e8e8fb32847/regex-2025.11.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9b5aca4d5dfd7fbfbfbdaf44850fcc7709a01146a797536a8f84952e940cca76", size = 291123, upload-time = "2025-11-03T21:31:57.758Z" }, + { url = "https://files.pythonhosted.org/packages/a3/88/1a3ea5672f4b0a84802ee9891b86743438e7c04eb0b8f8c4e16a42375327/regex-2025.11.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:04d2765516395cf7dda331a244a3282c0f5ae96075f728629287dfa6f76ba70a", size = 288814, upload-time = "2025-11-03T21:32:01.12Z" }, + { url = "https://files.pythonhosted.org/packages/fb/8c/f5987895bf42b8ddeea1b315c9fedcfe07cadee28b9c98cf50d00adcb14d/regex-2025.11.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d9903ca42bfeec4cebedba8022a7c97ad2aab22e09573ce9976ba01b65e4361", size = 798592, upload-time = "2025-11-03T21:32:03.006Z" }, + { url = "https://files.pythonhosted.org/packages/99/2a/6591ebeede78203fa77ee46a1c36649e02df9eaa77a033d1ccdf2fcd5d4e/regex-2025.11.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:639431bdc89d6429f6721625e8129413980ccd62e9d3f496be618a41d205f160", size = 864122, upload-time = "2025-11-03T21:32:04.553Z" }, + { url = "https://files.pythonhosted.org/packages/94/d6/be32a87cf28cf8ed064ff281cfbd49aefd90242a83e4b08b5a86b38e8eb4/regex-2025.11.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f117efad42068f9715677c8523ed2be1518116d1c49b1dd17987716695181efe", size = 912272, upload-time = "2025-11-03T21:32:06.148Z" }, + { url = "https://files.pythonhosted.org/packages/62/11/9bcef2d1445665b180ac7f230406ad80671f0fc2a6ffb93493b5dd8cd64c/regex-2025.11.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4aecb6f461316adf9f1f0f6a4a1a3d79e045f9b71ec76055a791affa3b285850", size = 803497, upload-time = "2025-11-03T21:32:08.162Z" }, + { url = "https://files.pythonhosted.org/packages/e5/a7/da0dc273d57f560399aa16d8a68ae7f9b57679476fc7ace46501d455fe84/regex-2025.11.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3b3a5f320136873cc5561098dfab677eea139521cb9a9e8db98b7e64aef44cbc", size = 787892, upload-time = "2025-11-03T21:32:09.769Z" }, + { url = "https://files.pythonhosted.org/packages/da/4b/732a0c5a9736a0b8d6d720d4945a2f1e6f38f87f48f3173559f53e8d5d82/regex-2025.11.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:75fa6f0056e7efb1f42a1c34e58be24072cb9e61a601340cc1196ae92326a4f9", size = 858462, upload-time = "2025-11-03T21:32:11.769Z" }, + { url = "https://files.pythonhosted.org/packages/0c/f5/a2a03df27dc4c2d0c769220f5110ba8c4084b0bfa9ab0f9b4fcfa3d2b0fc/regex-2025.11.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:dbe6095001465294f13f1adcd3311e50dd84e5a71525f20a10bd16689c61ce0b", size = 850528, upload-time = "2025-11-03T21:32:13.906Z" }, + { url = "https://files.pythonhosted.org/packages/d6/09/e1cd5bee3841c7f6eb37d95ca91cdee7100b8f88b81e41c2ef426910891a/regex-2025.11.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:454d9b4ae7881afbc25015b8627c16d88a597479b9dea82b8c6e7e2e07240dc7", size = 789866, upload-time = "2025-11-03T21:32:15.748Z" }, + { url = "https://files.pythonhosted.org/packages/eb/51/702f5ea74e2a9c13d855a6a85b7f80c30f9e72a95493260193c07f3f8d74/regex-2025.11.3-cp313-cp313-win32.whl", hash = "sha256:28ba4d69171fc6e9896337d4fc63a43660002b7da53fc15ac992abcf3410917c", size = 266189, upload-time = "2025-11-03T21:32:17.493Z" }, + { url = "https://files.pythonhosted.org/packages/8b/00/6e29bb314e271a743170e53649db0fdb8e8ff0b64b4f425f5602f4eb9014/regex-2025.11.3-cp313-cp313-win_amd64.whl", hash = "sha256:bac4200befe50c670c405dc33af26dad5a3b6b255dd6c000d92fe4629f9ed6a5", size = 277054, upload-time = "2025-11-03T21:32:19.042Z" }, + { url = "https://files.pythonhosted.org/packages/25/f1/b156ff9f2ec9ac441710764dda95e4edaf5f36aca48246d1eea3f1fd96ec/regex-2025.11.3-cp313-cp313-win_arm64.whl", hash = "sha256:2292cd5a90dab247f9abe892ac584cb24f0f54680c73fcb4a7493c66c2bf2467", size = 270325, upload-time = "2025-11-03T21:32:21.338Z" }, + { url = "https://files.pythonhosted.org/packages/20/28/fd0c63357caefe5680b8ea052131acbd7f456893b69cc2a90cc3e0dc90d4/regex-2025.11.3-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:1eb1ebf6822b756c723e09f5186473d93236c06c579d2cc0671a722d2ab14281", size = 491984, upload-time = "2025-11-03T21:32:23.466Z" }, + { url = "https://files.pythonhosted.org/packages/df/ec/7014c15626ab46b902b3bcc4b28a7bae46d8f281fc7ea9c95e22fcaaa917/regex-2025.11.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1e00ec2970aab10dc5db34af535f21fcf32b4a31d99e34963419636e2f85ae39", size = 292673, upload-time = "2025-11-03T21:32:25.034Z" }, + { url = "https://files.pythonhosted.org/packages/23/ab/3b952ff7239f20d05f1f99e9e20188513905f218c81d52fb5e78d2bf7634/regex-2025.11.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a4cb042b615245d5ff9b3794f56be4138b5adc35a4166014d31d1814744148c7", size = 291029, upload-time = "2025-11-03T21:32:26.528Z" }, + { url = "https://files.pythonhosted.org/packages/21/7e/3dc2749fc684f455f162dcafb8a187b559e2614f3826877d3844a131f37b/regex-2025.11.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:44f264d4bf02f3176467d90b294d59bf1db9fe53c141ff772f27a8b456b2a9ed", size = 807437, upload-time = "2025-11-03T21:32:28.363Z" }, + { url = "https://files.pythonhosted.org/packages/1b/0b/d529a85ab349c6a25d1ca783235b6e3eedf187247eab536797021f7126c6/regex-2025.11.3-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7be0277469bf3bd7a34a9c57c1b6a724532a0d235cd0dc4e7f4316f982c28b19", size = 873368, upload-time = "2025-11-03T21:32:30.4Z" }, + { url = "https://files.pythonhosted.org/packages/7d/18/2d868155f8c9e3e9d8f9e10c64e9a9f496bb8f7e037a88a8bed26b435af6/regex-2025.11.3-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0d31e08426ff4b5b650f68839f5af51a92a5b51abd8554a60c2fbc7c71f25d0b", size = 914921, upload-time = "2025-11-03T21:32:32.123Z" }, + { url = "https://files.pythonhosted.org/packages/2d/71/9d72ff0f354fa783fe2ba913c8734c3b433b86406117a8db4ea2bf1c7a2f/regex-2025.11.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e43586ce5bd28f9f285a6e729466841368c4a0353f6fd08d4ce4630843d3648a", size = 812708, upload-time = "2025-11-03T21:32:34.305Z" }, + { url = "https://files.pythonhosted.org/packages/e7/19/ce4bf7f5575c97f82b6e804ffb5c4e940c62609ab2a0d9538d47a7fdf7d4/regex-2025.11.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:0f9397d561a4c16829d4e6ff75202c1c08b68a3bdbfe29dbfcdb31c9830907c6", size = 795472, upload-time = "2025-11-03T21:32:36.364Z" }, + { url = "https://files.pythonhosted.org/packages/03/86/fd1063a176ffb7b2315f9a1b08d17b18118b28d9df163132615b835a26ee/regex-2025.11.3-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:dd16e78eb18ffdb25ee33a0682d17912e8cc8a770e885aeee95020046128f1ce", size = 868341, upload-time = "2025-11-03T21:32:38.042Z" }, + { url = "https://files.pythonhosted.org/packages/12/43/103fb2e9811205e7386366501bc866a164a0430c79dd59eac886a2822950/regex-2025.11.3-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:ffcca5b9efe948ba0661e9df0fa50d2bc4b097c70b9810212d6b62f05d83b2dd", size = 854666, upload-time = "2025-11-03T21:32:40.079Z" }, + { url = "https://files.pythonhosted.org/packages/7d/22/e392e53f3869b75804762c7c848bd2dd2abf2b70fb0e526f58724638bd35/regex-2025.11.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c56b4d162ca2b43318ac671c65bd4d563e841a694ac70e1a976ac38fcf4ca1d2", size = 799473, upload-time = "2025-11-03T21:32:42.148Z" }, + { url = "https://files.pythonhosted.org/packages/4f/f9/8bd6b656592f925b6845fcbb4d57603a3ac2fb2373344ffa1ed70aa6820a/regex-2025.11.3-cp313-cp313t-win32.whl", hash = "sha256:9ddc42e68114e161e51e272f667d640f97e84a2b9ef14b7477c53aac20c2d59a", size = 268792, upload-time = "2025-11-03T21:32:44.13Z" }, + { url = "https://files.pythonhosted.org/packages/e5/87/0e7d603467775ff65cd2aeabf1b5b50cc1c3708556a8b849a2fa4dd1542b/regex-2025.11.3-cp313-cp313t-win_amd64.whl", hash = "sha256:7a7c7fdf755032ffdd72c77e3d8096bdcb0eb92e89e17571a196f03d88b11b3c", size = 280214, upload-time = "2025-11-03T21:32:45.853Z" }, + { url = "https://files.pythonhosted.org/packages/8d/d0/2afc6f8e94e2b64bfb738a7c2b6387ac1699f09f032d363ed9447fd2bb57/regex-2025.11.3-cp313-cp313t-win_arm64.whl", hash = "sha256:df9eb838c44f570283712e7cff14c16329a9f0fb19ca492d21d4b7528ee6821e", size = 271469, upload-time = "2025-11-03T21:32:48.026Z" }, + { url = "https://files.pythonhosted.org/packages/31/e9/f6e13de7e0983837f7b6d238ad9458800a874bf37c264f7923e63409944c/regex-2025.11.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:9697a52e57576c83139d7c6f213d64485d3df5bf84807c35fa409e6c970801c6", size = 489089, upload-time = "2025-11-03T21:32:50.027Z" }, + { url = "https://files.pythonhosted.org/packages/a3/5c/261f4a262f1fa65141c1b74b255988bd2fa020cc599e53b080667d591cfc/regex-2025.11.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:e18bc3f73bd41243c9b38a6d9f2366cd0e0137a9aebe2d8ff76c5b67d4c0a3f4", size = 291059, upload-time = "2025-11-03T21:32:51.682Z" }, + { url = "https://files.pythonhosted.org/packages/8e/57/f14eeb7f072b0e9a5a090d1712741fd8f214ec193dba773cf5410108bb7d/regex-2025.11.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:61a08bcb0ec14ff4e0ed2044aad948d0659604f824cbd50b55e30b0ec6f09c73", size = 288900, upload-time = "2025-11-03T21:32:53.569Z" }, + { url = "https://files.pythonhosted.org/packages/3c/6b/1d650c45e99a9b327586739d926a1cd4e94666b1bd4af90428b36af66dc7/regex-2025.11.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c9c30003b9347c24bcc210958c5d167b9e4f9be786cb380a7d32f14f9b84674f", size = 799010, upload-time = "2025-11-03T21:32:55.222Z" }, + { url = "https://files.pythonhosted.org/packages/99/ee/d66dcbc6b628ce4e3f7f0cbbb84603aa2fc0ffc878babc857726b8aab2e9/regex-2025.11.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4e1e592789704459900728d88d41a46fe3969b82ab62945560a31732ffc19a6d", size = 864893, upload-time = "2025-11-03T21:32:57.239Z" }, + { url = "https://files.pythonhosted.org/packages/bf/2d/f238229f1caba7ac87a6c4153d79947fb0261415827ae0f77c304260c7d3/regex-2025.11.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6538241f45eb5a25aa575dbba1069ad786f68a4f2773a29a2bd3dd1f9de787be", size = 911522, upload-time = "2025-11-03T21:32:59.274Z" }, + { url = "https://files.pythonhosted.org/packages/bd/3d/22a4eaba214a917c80e04f6025d26143690f0419511e0116508e24b11c9b/regex-2025.11.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce22519c989bb72a7e6b36a199384c53db7722fe669ba891da75907fe3587db", size = 803272, upload-time = "2025-11-03T21:33:01.393Z" }, + { url = "https://files.pythonhosted.org/packages/84/b1/03188f634a409353a84b5ef49754b97dbcc0c0f6fd6c8ede505a8960a0a4/regex-2025.11.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:66d559b21d3640203ab9075797a55165d79017520685fb407b9234d72ab63c62", size = 787958, upload-time = "2025-11-03T21:33:03.379Z" }, + { url = "https://files.pythonhosted.org/packages/99/6a/27d072f7fbf6fadd59c64d210305e1ff865cc3b78b526fd147db768c553b/regex-2025.11.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:669dcfb2e38f9e8c69507bace46f4889e3abbfd9b0c29719202883c0a603598f", size = 859289, upload-time = "2025-11-03T21:33:05.374Z" }, + { url = "https://files.pythonhosted.org/packages/9a/70/1b3878f648e0b6abe023172dacb02157e685564853cc363d9961bcccde4e/regex-2025.11.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:32f74f35ff0f25a5021373ac61442edcb150731fbaa28286bbc8bb1582c89d02", size = 850026, upload-time = "2025-11-03T21:33:07.131Z" }, + { url = "https://files.pythonhosted.org/packages/dd/d5/68e25559b526b8baab8e66839304ede68ff6727237a47727d240006bd0ff/regex-2025.11.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e6c7a21dffba883234baefe91bc3388e629779582038f75d2a5be918e250f0ed", size = 789499, upload-time = "2025-11-03T21:33:09.141Z" }, + { url = "https://files.pythonhosted.org/packages/fc/df/43971264857140a350910d4e33df725e8c94dd9dee8d2e4729fa0d63d49e/regex-2025.11.3-cp314-cp314-win32.whl", hash = "sha256:795ea137b1d809eb6836b43748b12634291c0ed55ad50a7d72d21edf1cd565c4", size = 271604, upload-time = "2025-11-03T21:33:10.9Z" }, + { url = "https://files.pythonhosted.org/packages/01/6f/9711b57dc6894a55faf80a4c1b5aa4f8649805cb9c7aef46f7d27e2b9206/regex-2025.11.3-cp314-cp314-win_amd64.whl", hash = "sha256:9f95fbaa0ee1610ec0fc6b26668e9917a582ba80c52cc6d9ada15e30aa9ab9ad", size = 280320, upload-time = "2025-11-03T21:33:12.572Z" }, + { url = "https://files.pythonhosted.org/packages/f1/7e/f6eaa207d4377481f5e1775cdeb5a443b5a59b392d0065f3417d31d80f87/regex-2025.11.3-cp314-cp314-win_arm64.whl", hash = "sha256:dfec44d532be4c07088c3de2876130ff0fbeeacaa89a137decbbb5f665855a0f", size = 273372, upload-time = "2025-11-03T21:33:14.219Z" }, + { url = "https://files.pythonhosted.org/packages/c3/06/49b198550ee0f5e4184271cee87ba4dfd9692c91ec55289e6282f0f86ccf/regex-2025.11.3-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:ba0d8a5d7f04f73ee7d01d974d47c5834f8a1b0224390e4fe7c12a3a92a78ecc", size = 491985, upload-time = "2025-11-03T21:33:16.555Z" }, + { url = "https://files.pythonhosted.org/packages/ce/bf/abdafade008f0b1c9da10d934034cb670432d6cf6cbe38bbb53a1cfd6cf8/regex-2025.11.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:442d86cf1cfe4faabf97db7d901ef58347efd004934da045c745e7b5bd57ac49", size = 292669, upload-time = "2025-11-03T21:33:18.32Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ef/0c357bb8edbd2ad8e273fcb9e1761bc37b8acbc6e1be050bebd6475f19c1/regex-2025.11.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:fd0a5e563c756de210bb964789b5abe4f114dacae9104a47e1a649b910361536", size = 291030, upload-time = "2025-11-03T21:33:20.048Z" }, + { url = "https://files.pythonhosted.org/packages/79/06/edbb67257596649b8fb088d6aeacbcb248ac195714b18a65e018bf4c0b50/regex-2025.11.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bf3490bcbb985a1ae97b2ce9ad1c0f06a852d5b19dde9b07bdf25bf224248c95", size = 807674, upload-time = "2025-11-03T21:33:21.797Z" }, + { url = "https://files.pythonhosted.org/packages/f4/d9/ad4deccfce0ea336296bd087f1a191543bb99ee1c53093dcd4c64d951d00/regex-2025.11.3-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3809988f0a8b8c9dcc0f92478d6501fac7200b9ec56aecf0ec21f4a2ec4b6009", size = 873451, upload-time = "2025-11-03T21:33:23.741Z" }, + { url = "https://files.pythonhosted.org/packages/13/75/a55a4724c56ef13e3e04acaab29df26582f6978c000ac9cd6810ad1f341f/regex-2025.11.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f4ff94e58e84aedb9c9fce66d4ef9f27a190285b451420f297c9a09f2b9abee9", size = 914980, upload-time = "2025-11-03T21:33:25.999Z" }, + { url = "https://files.pythonhosted.org/packages/67/1e/a1657ee15bd9116f70d4a530c736983eed997b361e20ecd8f5ca3759d5c5/regex-2025.11.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7eb542fd347ce61e1321b0a6b945d5701528dca0cd9759c2e3bb8bd57e47964d", size = 812852, upload-time = "2025-11-03T21:33:27.852Z" }, + { url = "https://files.pythonhosted.org/packages/b8/6f/f7516dde5506a588a561d296b2d0044839de06035bb486b326065b4c101e/regex-2025.11.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d6c2d5919075a1f2e413c00b056ea0c2f065b3f5fe83c3d07d325ab92dce51d6", size = 795566, upload-time = "2025-11-03T21:33:32.364Z" }, + { url = "https://files.pythonhosted.org/packages/d9/dd/3d10b9e170cc16fb34cb2cef91513cf3df65f440b3366030631b2984a264/regex-2025.11.3-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:3f8bf11a4827cc7ce5a53d4ef6cddd5ad25595d3c1435ef08f76825851343154", size = 868463, upload-time = "2025-11-03T21:33:34.459Z" }, + { url = "https://files.pythonhosted.org/packages/f5/8e/935e6beff1695aa9085ff83195daccd72acc82c81793df480f34569330de/regex-2025.11.3-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:22c12d837298651e5550ac1d964e4ff57c3f56965fc1812c90c9fb2028eaf267", size = 854694, upload-time = "2025-11-03T21:33:36.793Z" }, + { url = "https://files.pythonhosted.org/packages/92/12/10650181a040978b2f5720a6a74d44f841371a3d984c2083fc1752e4acf6/regex-2025.11.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:62ba394a3dda9ad41c7c780f60f6e4a70988741415ae96f6d1bf6c239cf01379", size = 799691, upload-time = "2025-11-03T21:33:39.079Z" }, + { url = "https://files.pythonhosted.org/packages/67/90/8f37138181c9a7690e7e4cb388debbd389342db3c7381d636d2875940752/regex-2025.11.3-cp314-cp314t-win32.whl", hash = "sha256:4bf146dca15cdd53224a1bf46d628bd7590e4a07fbb69e720d561aea43a32b38", size = 274583, upload-time = "2025-11-03T21:33:41.302Z" }, + { url = "https://files.pythonhosted.org/packages/8f/cd/867f5ec442d56beb56f5f854f40abcfc75e11d10b11fdb1869dd39c63aaf/regex-2025.11.3-cp314-cp314t-win_amd64.whl", hash = "sha256:adad1a1bcf1c9e76346e091d22d23ac54ef28e1365117d99521631078dfec9de", size = 284286, upload-time = "2025-11-03T21:33:43.324Z" }, + { url = "https://files.pythonhosted.org/packages/20/31/32c0c4610cbc070362bf1d2e4ea86d1ea29014d400a6d6c2486fcfd57766/regex-2025.11.3-cp314-cp314t-win_arm64.whl", hash = "sha256:c54f768482cef41e219720013cd05933b6f971d9562544d691c68699bf2b6801", size = 274741, upload-time = "2025-11-03T21:33:45.557Z" }, +] + +[[package]] +name = "requests" +version = "2.32.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, +] + [[package]] name = "ruff" version = "0.9.5" @@ -1332,6 +1931,74 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/97/30/2f9a5243008f76dfc5dee9a53dfb939d9b31e16ce4bd4f2e628bfc5d89d2/scipy-1.16.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d2a4472c231328d4de38d5f1f68fdd6d28a615138f842580a8a321b5845cf779", size = 26448374, upload-time = "2025-09-11T17:45:03.45Z" }, ] +[[package]] +name = "setuptools" +version = "80.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c", size = 1319958, upload-time = "2025-05-27T00:56:51.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486, upload-time = "2025-05-27T00:56:49.664Z" }, +] + +[[package]] +name = "shapely" +version = "2.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4d/bc/0989043118a27cccb4e906a46b7565ce36ca7b57f5a18b78f4f1b0f72d9d/shapely-2.1.2.tar.gz", hash = "sha256:2ed4ecb28320a433db18a5bf029986aa8afcfd740745e78847e330d5d94922a9", size = 315489, upload-time = "2025-09-24T13:51:41.432Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/8d/1ff672dea9ec6a7b5d422eb6d095ed886e2e523733329f75fdcb14ee1149/shapely-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:91121757b0a36c9aac3427a651a7e6567110a4a67c97edf04f8d55d4765f6618", size = 1820038, upload-time = "2025-09-24T13:50:15.628Z" }, + { url = "https://files.pythonhosted.org/packages/4f/ce/28fab8c772ce5db23a0d86bf0adaee0c4c79d5ad1db766055fa3dab442e2/shapely-2.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:16a9c722ba774cf50b5d4541242b4cce05aafd44a015290c82ba8a16931ff63d", size = 1626039, upload-time = "2025-09-24T13:50:16.881Z" }, + { url = "https://files.pythonhosted.org/packages/70/8b/868b7e3f4982f5006e9395c1e12343c66a8155c0374fdc07c0e6a1ab547d/shapely-2.1.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cc4f7397459b12c0b196c9efe1f9d7e92463cbba142632b4cc6d8bbbbd3e2b09", size = 3001519, upload-time = "2025-09-24T13:50:18.606Z" }, + { url = "https://files.pythonhosted.org/packages/13/02/58b0b8d9c17c93ab6340edd8b7308c0c5a5b81f94ce65705819b7416dba5/shapely-2.1.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:136ab87b17e733e22f0961504d05e77e7be8c9b5a8184f685b4a91a84efe3c26", size = 3110842, upload-time = "2025-09-24T13:50:21.77Z" }, + { url = "https://files.pythonhosted.org/packages/af/61/8e389c97994d5f331dcffb25e2fa761aeedfb52b3ad9bcdd7b8671f4810a/shapely-2.1.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:16c5d0fc45d3aa0a69074979f4f1928ca2734fb2e0dde8af9611e134e46774e7", size = 4021316, upload-time = "2025-09-24T13:50:23.626Z" }, + { url = "https://files.pythonhosted.org/packages/d3/d4/9b2a9fe6039f9e42ccf2cb3e84f219fd8364b0c3b8e7bbc857b5fbe9c14c/shapely-2.1.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6ddc759f72b5b2b0f54a7e7cde44acef680a55019eb52ac63a7af2cf17cb9cd2", size = 4178586, upload-time = "2025-09-24T13:50:25.443Z" }, + { url = "https://files.pythonhosted.org/packages/16/f6/9840f6963ed4decf76b08fd6d7fed14f8779fb7a62cb45c5617fa8ac6eab/shapely-2.1.2-cp311-cp311-win32.whl", hash = "sha256:2fa78b49485391224755a856ed3b3bd91c8455f6121fee0db0e71cefb07d0ef6", size = 1543961, upload-time = "2025-09-24T13:50:26.968Z" }, + { url = "https://files.pythonhosted.org/packages/38/1e/3f8ea46353c2a33c1669eb7327f9665103aa3a8dfe7f2e4ef714c210b2c2/shapely-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:c64d5c97b2f47e3cd9b712eaced3b061f2b71234b3fc263e0fcf7d889c6559dc", size = 1722856, upload-time = "2025-09-24T13:50:28.497Z" }, + { url = "https://files.pythonhosted.org/packages/24/c0/f3b6453cf2dfa99adc0ba6675f9aaff9e526d2224cbd7ff9c1a879238693/shapely-2.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fe2533caae6a91a543dec62e8360fe86ffcdc42a7c55f9dfd0128a977a896b94", size = 1833550, upload-time = "2025-09-24T13:50:30.019Z" }, + { url = "https://files.pythonhosted.org/packages/86/07/59dee0bc4b913b7ab59ab1086225baca5b8f19865e6101db9ebb7243e132/shapely-2.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ba4d1333cc0bc94381d6d4308d2e4e008e0bd128bdcff5573199742ee3634359", size = 1643556, upload-time = "2025-09-24T13:50:32.291Z" }, + { url = "https://files.pythonhosted.org/packages/26/29/a5397e75b435b9895cd53e165083faed5d12fd9626eadec15a83a2411f0f/shapely-2.1.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0bd308103340030feef6c111d3eb98d50dc13feea33affc8a6f9fa549e9458a3", size = 2988308, upload-time = "2025-09-24T13:50:33.862Z" }, + { url = "https://files.pythonhosted.org/packages/b9/37/e781683abac55dde9771e086b790e554811a71ed0b2b8a1e789b7430dd44/shapely-2.1.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1e7d4d7ad262a48bb44277ca12c7c78cb1b0f56b32c10734ec9a1d30c0b0c54b", size = 3099844, upload-time = "2025-09-24T13:50:35.459Z" }, + { url = "https://files.pythonhosted.org/packages/d8/f3/9876b64d4a5a321b9dc482c92bb6f061f2fa42131cba643c699f39317cb9/shapely-2.1.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e9eddfe513096a71896441a7c37db72da0687b34752c4e193577a145c71736fc", size = 3988842, upload-time = "2025-09-24T13:50:37.478Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a0/704c7292f7014c7e74ec84eddb7b109e1fbae74a16deae9c1504b1d15565/shapely-2.1.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:980c777c612514c0cf99bc8a9de6d286f5e186dcaf9091252fcd444e5638193d", size = 4152714, upload-time = "2025-09-24T13:50:39.9Z" }, + { url = "https://files.pythonhosted.org/packages/53/46/319c9dc788884ad0785242543cdffac0e6530e4d0deb6c4862bc4143dcf3/shapely-2.1.2-cp312-cp312-win32.whl", hash = "sha256:9111274b88e4d7b54a95218e243282709b330ef52b7b86bc6aaf4f805306f454", size = 1542745, upload-time = "2025-09-24T13:50:41.414Z" }, + { url = "https://files.pythonhosted.org/packages/ec/bf/cb6c1c505cb31e818e900b9312d514f381fbfa5c4363edfce0fcc4f8c1a4/shapely-2.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:743044b4cfb34f9a67205cee9279feaf60ba7d02e69febc2afc609047cb49179", size = 1722861, upload-time = "2025-09-24T13:50:43.35Z" }, + { url = "https://files.pythonhosted.org/packages/c3/90/98ef257c23c46425dc4d1d31005ad7c8d649fe423a38b917db02c30f1f5a/shapely-2.1.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b510dda1a3672d6879beb319bc7c5fd302c6c354584690973c838f46ec3e0fa8", size = 1832644, upload-time = "2025-09-24T13:50:44.886Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ab/0bee5a830d209adcd3a01f2d4b70e587cdd9fd7380d5198c064091005af8/shapely-2.1.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8cff473e81017594d20ec55d86b54bc635544897e13a7cfc12e36909c5309a2a", size = 1642887, upload-time = "2025-09-24T13:50:46.735Z" }, + { url = "https://files.pythonhosted.org/packages/2d/5e/7d7f54ba960c13302584c73704d8c4d15404a51024631adb60b126a4ae88/shapely-2.1.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fe7b77dc63d707c09726b7908f575fc04ff1d1ad0f3fb92aec212396bc6cfe5e", size = 2970931, upload-time = "2025-09-24T13:50:48.374Z" }, + { url = "https://files.pythonhosted.org/packages/f2/a2/83fc37e2a58090e3d2ff79175a95493c664bcd0b653dd75cb9134645a4e5/shapely-2.1.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7ed1a5bbfb386ee8332713bf7508bc24e32d24b74fc9a7b9f8529a55db9f4ee6", size = 3082855, upload-time = "2025-09-24T13:50:50.037Z" }, + { url = "https://files.pythonhosted.org/packages/44/2b/578faf235a5b09f16b5f02833c53822294d7f21b242f8e2d0cf03fb64321/shapely-2.1.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a84e0582858d841d54355246ddfcbd1fce3179f185da7470f41ce39d001ee1af", size = 3979960, upload-time = "2025-09-24T13:50:51.74Z" }, + { url = "https://files.pythonhosted.org/packages/4d/04/167f096386120f692cc4ca02f75a17b961858997a95e67a3cb6a7bbd6b53/shapely-2.1.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dc3487447a43d42adcdf52d7ac73804f2312cbfa5d433a7d2c506dcab0033dfd", size = 4142851, upload-time = "2025-09-24T13:50:53.49Z" }, + { url = "https://files.pythonhosted.org/packages/48/74/fb402c5a6235d1c65a97348b48cdedb75fb19eca2b1d66d04969fc1c6091/shapely-2.1.2-cp313-cp313-win32.whl", hash = "sha256:9c3a3c648aedc9f99c09263b39f2d8252f199cb3ac154fadc173283d7d111350", size = 1541890, upload-time = "2025-09-24T13:50:55.337Z" }, + { url = "https://files.pythonhosted.org/packages/41/47/3647fe7ad990af60ad98b889657a976042c9988c2807cf322a9d6685f462/shapely-2.1.2-cp313-cp313-win_amd64.whl", hash = "sha256:ca2591bff6645c216695bdf1614fca9c82ea1144d4a7591a466fef64f28f0715", size = 1722151, upload-time = "2025-09-24T13:50:57.153Z" }, + { url = "https://files.pythonhosted.org/packages/3c/49/63953754faa51ffe7d8189bfbe9ca34def29f8c0e34c67cbe2a2795f269d/shapely-2.1.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2d93d23bdd2ed9dc157b46bc2f19b7da143ca8714464249bef6771c679d5ff40", size = 1834130, upload-time = "2025-09-24T13:50:58.49Z" }, + { url = "https://files.pythonhosted.org/packages/7f/ee/dce001c1984052970ff60eb4727164892fb2d08052c575042a47f5a9e88f/shapely-2.1.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:01d0d304b25634d60bd7cf291828119ab55a3bab87dc4af1e44b07fb225f188b", size = 1642802, upload-time = "2025-09-24T13:50:59.871Z" }, + { url = "https://files.pythonhosted.org/packages/da/e7/fc4e9a19929522877fa602f705706b96e78376afb7fad09cad5b9af1553c/shapely-2.1.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8d8382dd120d64b03698b7298b89611a6ea6f55ada9d39942838b79c9bc89801", size = 3018460, upload-time = "2025-09-24T13:51:02.08Z" }, + { url = "https://files.pythonhosted.org/packages/a1/18/7519a25db21847b525696883ddc8e6a0ecaa36159ea88e0fef11466384d0/shapely-2.1.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:19efa3611eef966e776183e338b2d7ea43569ae99ab34f8d17c2c054d3205cc0", size = 3095223, upload-time = "2025-09-24T13:51:04.472Z" }, + { url = "https://files.pythonhosted.org/packages/48/de/b59a620b1f3a129c3fecc2737104a0a7e04e79335bd3b0a1f1609744cf17/shapely-2.1.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:346ec0c1a0fcd32f57f00e4134d1200e14bf3f5ae12af87ba83ca275c502498c", size = 4030760, upload-time = "2025-09-24T13:51:06.455Z" }, + { url = "https://files.pythonhosted.org/packages/96/b3/c6655ee7232b417562bae192ae0d3ceaadb1cc0ffc2088a2ddf415456cc2/shapely-2.1.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6305993a35989391bd3476ee538a5c9a845861462327efe00dd11a5c8c709a99", size = 4170078, upload-time = "2025-09-24T13:51:08.584Z" }, + { url = "https://files.pythonhosted.org/packages/a0/8e/605c76808d73503c9333af8f6cbe7e1354d2d238bda5f88eea36bfe0f42a/shapely-2.1.2-cp313-cp313t-win32.whl", hash = "sha256:c8876673449f3401f278c86eb33224c5764582f72b653a415d0e6672fde887bf", size = 1559178, upload-time = "2025-09-24T13:51:10.73Z" }, + { url = "https://files.pythonhosted.org/packages/36/f7/d317eb232352a1f1444d11002d477e54514a4a6045536d49d0c59783c0da/shapely-2.1.2-cp313-cp313t-win_amd64.whl", hash = "sha256:4a44bc62a10d84c11a7a3d7c1c4fe857f7477c3506e24c9062da0db0ae0c449c", size = 1739756, upload-time = "2025-09-24T13:51:12.105Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c4/3ce4c2d9b6aabd27d26ec988f08cb877ba9e6e96086eff81bfea93e688c7/shapely-2.1.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:9a522f460d28e2bf4e12396240a5fc1518788b2fcd73535166d748399ef0c223", size = 1831290, upload-time = "2025-09-24T13:51:13.56Z" }, + { url = "https://files.pythonhosted.org/packages/17/b9/f6ab8918fc15429f79cb04afa9f9913546212d7fb5e5196132a2af46676b/shapely-2.1.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1ff629e00818033b8d71139565527ced7d776c269a49bd78c9df84e8f852190c", size = 1641463, upload-time = "2025-09-24T13:51:14.972Z" }, + { url = "https://files.pythonhosted.org/packages/a5/57/91d59ae525ca641e7ac5551c04c9503aee6f29b92b392f31790fcb1a4358/shapely-2.1.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f67b34271dedc3c653eba4e3d7111aa421d5be9b4c4c7d38d30907f796cb30df", size = 2970145, upload-time = "2025-09-24T13:51:16.961Z" }, + { url = "https://files.pythonhosted.org/packages/8a/cb/4948be52ee1da6927831ab59e10d4c29baa2a714f599f1f0d1bc747f5777/shapely-2.1.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:21952dc00df38a2c28375659b07a3979d22641aeb104751e769c3ee825aadecf", size = 3073806, upload-time = "2025-09-24T13:51:18.712Z" }, + { url = "https://files.pythonhosted.org/packages/03/83/f768a54af775eb41ef2e7bec8a0a0dbe7d2431c3e78c0a8bdba7ab17e446/shapely-2.1.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1f2f33f486777456586948e333a56ae21f35ae273be99255a191f5c1fa302eb4", size = 3980803, upload-time = "2025-09-24T13:51:20.37Z" }, + { url = "https://files.pythonhosted.org/packages/9f/cb/559c7c195807c91c79d38a1f6901384a2878a76fbdf3f1048893a9b7534d/shapely-2.1.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:cf831a13e0d5a7eb519e96f58ec26e049b1fad411fc6fc23b162a7ce04d9cffc", size = 4133301, upload-time = "2025-09-24T13:51:21.887Z" }, + { url = "https://files.pythonhosted.org/packages/80/cd/60d5ae203241c53ef3abd2ef27c6800e21afd6c94e39db5315ea0cbafb4a/shapely-2.1.2-cp314-cp314-win32.whl", hash = "sha256:61edcd8d0d17dd99075d320a1dd39c0cb9616f7572f10ef91b4b5b00c4aeb566", size = 1583247, upload-time = "2025-09-24T13:51:23.401Z" }, + { url = "https://files.pythonhosted.org/packages/74/d4/135684f342e909330e50d31d441ace06bf83c7dc0777e11043f99167b123/shapely-2.1.2-cp314-cp314-win_amd64.whl", hash = "sha256:a444e7afccdb0999e203b976adb37ea633725333e5b119ad40b1ca291ecf311c", size = 1773019, upload-time = "2025-09-24T13:51:24.873Z" }, + { url = "https://files.pythonhosted.org/packages/a3/05/a44f3f9f695fa3ada22786dc9da33c933da1cbc4bfe876fe3a100bafe263/shapely-2.1.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:5ebe3f84c6112ad3d4632b1fd2290665aa75d4cef5f6c5d77c4c95b324527c6a", size = 1834137, upload-time = "2025-09-24T13:51:26.665Z" }, + { url = "https://files.pythonhosted.org/packages/52/7e/4d57db45bf314573427b0a70dfca15d912d108e6023f623947fa69f39b72/shapely-2.1.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5860eb9f00a1d49ebb14e881f5caf6c2cf472c7fd38bd7f253bbd34f934eb076", size = 1642884, upload-time = "2025-09-24T13:51:28.029Z" }, + { url = "https://files.pythonhosted.org/packages/5a/27/4e29c0a55d6d14ad7422bf86995d7ff3f54af0eba59617eb95caf84b9680/shapely-2.1.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b705c99c76695702656327b819c9660768ec33f5ce01fa32b2af62b56ba400a1", size = 3018320, upload-time = "2025-09-24T13:51:29.903Z" }, + { url = "https://files.pythonhosted.org/packages/9f/bb/992e6a3c463f4d29d4cd6ab8963b75b1b1040199edbd72beada4af46bde5/shapely-2.1.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a1fd0ea855b2cf7c9cddaf25543e914dd75af9de08785f20ca3085f2c9ca60b0", size = 3094931, upload-time = "2025-09-24T13:51:32.699Z" }, + { url = "https://files.pythonhosted.org/packages/9c/16/82e65e21070e473f0ed6451224ed9fa0be85033d17e0c6e7213a12f59d12/shapely-2.1.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:df90e2db118c3671a0754f38e36802db75fe0920d211a27481daf50a711fdf26", size = 4030406, upload-time = "2025-09-24T13:51:34.189Z" }, + { url = "https://files.pythonhosted.org/packages/7c/75/c24ed871c576d7e2b64b04b1fe3d075157f6eb54e59670d3f5ffb36e25c7/shapely-2.1.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:361b6d45030b4ac64ddd0a26046906c8202eb60d0f9f53085f5179f1d23021a0", size = 4169511, upload-time = "2025-09-24T13:51:36.297Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f7/b3d1d6d18ebf55236eec1c681ce5e665742aab3c0b7b232720a7d43df7b6/shapely-2.1.2-cp314-cp314t-win32.whl", hash = "sha256:b54df60f1fbdecc8ebc2c5b11870461a6417b3d617f555e5033f1505d36e5735", size = 1602607, upload-time = "2025-09-24T13:51:37.757Z" }, + { url = "https://files.pythonhosted.org/packages/9a/f6/f09272a71976dfc138129b8faf435d064a811ae2f708cb147dccdf7aacdb/shapely-2.1.2-cp314-cp314t-win_amd64.whl", hash = "sha256:0036ac886e0923417932c2e6369b6c52e38e0ff5d9120b90eef5cd9a5fc5cae9", size = 1796682, upload-time = "2025-09-24T13:51:39.233Z" }, +] + [[package]] name = "six" version = "1.17.0" @@ -1355,6 +2022,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, ] +[[package]] +name = "sympy" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpmath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" }, +] + [[package]] name = "toolz" version = "1.0.0" @@ -1440,6 +2119,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0f/dd/84f10e23edd882c6f968c21c2434fe67bd4a528967067515feca9e611e5e/tzdata-2025.1-py2.py3-none-any.whl", hash = "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639", size = 346762, upload-time = "2025-01-21T19:49:37.187Z" }, ] +[[package]] +name = "urllib3" +version = "2.6.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1e/24/a2a2ed9addd907787d7aa0355ba36a6cadf1768b934c652ea78acbd59dcd/urllib3-2.6.2.tar.gz", hash = "sha256:016f9c98bb7e98085cb2b4b17b87d2c702975664e4f060c6532e64d1c1a5e797", size = 432930, upload-time = "2025-12-11T15:56:40.252Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/b9/4095b668ea3678bf6a0af005527f39de12fb026516fb3df17495a733b7f8/urllib3-2.6.2-py3-none-any.whl", hash = "sha256:ec21cddfe7724fc7cb4ba4bea7aa8e2ef36f607a4bab81aa6ce42a13dc3f03dd", size = 131182, upload-time = "2025-12-11T15:56:38.584Z" }, +] + +[[package]] +name = "validators" +version = "0.35.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/66/a435d9ae49850b2f071f7ebd8119dd4e84872b01630d6736761e6e7fd847/validators-0.35.0.tar.gz", hash = "sha256:992d6c48a4e77c81f1b4daba10d16c3a9bb0dbb79b3a19ea847ff0928e70497a", size = 73399, upload-time = "2025-05-01T05:42:06.7Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/6e/3e955517e22cbdd565f2f8b2e73d52528b14b8bcfdb04f62466b071de847/validators-0.35.0-py3-none-any.whl", hash = "sha256:e8c947097eae7892cb3d26868d637f79f47b4a0554bc6b80065dfe5aac3705dd", size = 44712, upload-time = "2025-05-01T05:42:04.203Z" }, +] + [[package]] name = "wcwidth" version = "0.2.13" From 059fc0d8fc0f1cdc6041a121dae3162090105059 Mon Sep 17 00:00:00 2001 From: Jesse Cusack Date: Tue, 27 Jan 2026 10:38:39 -0800 Subject: [PATCH 2/5] fix imports while still fixing backfill method --- src/glide/cli.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/glide/cli.py b/src/glide/cli.py index 86ffb55..ab533b0 100644 --- a/src/glide/cli.py +++ b/src/glide/cli.py @@ -7,9 +7,7 @@ from pathlib import Path import netCDF4 as nc -import numpy as np import typer -import xarray as xr from typing_extensions import Annotated from . import ancillery, config, hotel, process_l1, process_l2, process_l3 From 5b57f286c237f8bcd4316e79feb41edc44060b58 Mon Sep 17 00:00:00 2001 From: Jesse Cusack Date: Tue, 27 Jan 2026 12:52:58 -0800 Subject: [PATCH 3/5] add and test backfill method --- scripts/netcdf2csv.example.py | 31 +- src/glide/cli.py | 196 +++++--- src/glide/process_l1.py | 224 ++++++++- src/glide/qc.py | 3 +- tests/data/osu685-2025-056-0-27.sbd.csv | 4 + tests/data/osu685-2025-056-0-27.tbd.csv | 5 + tests/data/osu685-2025-056-0-28.sbd.csv | 233 +++++++++ tests/data/osu685-2025-056-0-28.tbd.csv | 638 +++++++++++++++++++++++ tests/data/osu685-2025-056-0-29.sbd.csv | 3 + tests/data/osu685-2025-056-0-29.tbd.csv | 4 + tests/data/osu685-2025-056-0-30.sbd.csv | 212 ++++++++ tests/data/osu685-2025-056-0-30.tbd.csv | 641 ++++++++++++++++++++++++ tests/test_cli.py | 81 +++ tests/test_process_l1.py | 178 +++++++ 14 files changed, 2342 insertions(+), 111 deletions(-) create mode 100644 tests/data/osu685-2025-056-0-27.sbd.csv create mode 100644 tests/data/osu685-2025-056-0-27.tbd.csv create mode 100644 tests/data/osu685-2025-056-0-28.sbd.csv create mode 100644 tests/data/osu685-2025-056-0-28.tbd.csv create mode 100644 tests/data/osu685-2025-056-0-29.sbd.csv create mode 100644 tests/data/osu685-2025-056-0-29.tbd.csv create mode 100644 tests/data/osu685-2025-056-0-30.sbd.csv create mode 100644 tests/data/osu685-2025-056-0-30.tbd.csv diff --git a/scripts/netcdf2csv.example.py b/scripts/netcdf2csv.example.py index 10e1b94..ba2489e 100644 --- a/scripts/netcdf2csv.example.py +++ b/scripts/netcdf2csv.example.py @@ -6,9 +6,28 @@ out = Path("../tests/data").resolve() -xr.open_dataset(Path(out, "osu684.sbd.nc")).drop_dims("j").to_pandas().to_csv( - Path(out, "osu684.sbd.csv") -) -xr.open_dataset(Path(out, "osu684.tbd.nc")).drop_dims("j").to_pandas().to_csv( - Path(out, "osu684.tbd.csv") -) +# Commented out because I didn't keep the input files... +# xr.open_dataset(Path(out, "osu684.sbd.nc")).drop_dims("j").to_pandas().to_csv( +# Path(out, "osu684.sbd.csv") +# ) +# xr.open_dataset(Path(out, "osu684.tbd.nc")).drop_dims("j").to_pandas().to_csv( +# Path(out, "osu684.tbd.csv") +# ) + +input_sbd = [ + "osu685-2025-056-0-27.sbd.nc", + "osu685-2025-056-0-28.sbd.nc", + "osu685-2025-056-0-29.sbd.nc", + "osu685-2025-056-0-30.sbd.nc", +] +input_tbd = [ + "osu685-2025-056-0-27.tbd.nc", + "osu685-2025-056-0-28.tbd.nc", + "osu685-2025-056-0-29.tbd.nc", + "osu685-2025-056-0-30.tbd.nc", +] + +for f in input_sbd + input_tbd: + xr.open_dataset(Path("../", f)).drop_dims("j").to_pandas().to_csv( + Path(out, f.replace(".nc", ".csv")) + ) diff --git a/src/glide/cli.py b/src/glide/cli.py index ab533b0..ab8118b 100644 --- a/src/glide/cli.py +++ b/src/glide/cli.py @@ -298,86 +298,122 @@ def concat( ds.to_netcdf(out_file) -# @app.command() -# @log_args -# def backfill( -# flt_file: Annotated[ -# str, typer.Argument(help="Flight file (sbd/dbd) with velocity data.") -# ], -# l2_dir: Annotated[ -# str, typer.Argument(help="Directory containing L2 files to update.") -# ], -# lookback: Annotated[ -# int, typer.Option("-n", help="Number of previous files to check.") -# ] = 3, -# tolerance: Annotated[ -# float, typer.Option("-t", help="Max seconds after dive end.") -# ] = 300.0, -# ) -> None: -# """ -# Backfill depth-averaged velocity to previous L2 files missing this data. -# """ -# l2_path = Path(l2_dir) -# flt = xr.open_dataset(flt_file, decode_timedelta=True).load() - -# # Extract velocity data -# if "m_water_vx" not in flt and "m_water_vy" not in flt: -# typer.echo("No velocity data in flight file.") -# return - -# time_flt = flt.m_present_time.values -# u_flt = ( -# flt.m_water_vx.values if "m_water_vx" in flt else np.full_like(time_flt, np.nan) -# ) -# v_flt = ( -# flt.m_water_vy.values if "m_water_vy" in flt else np.full_like(time_flt, np.nan) -# ) -# vel_valid = np.isfinite(u_flt) | np.isfinite(v_flt) - -# if not vel_valid.any(): -# typer.echo("No valid velocity data in flight file.") -# return - -# vel_times = time_flt[vel_valid] -# vel_u = u_flt[vel_valid] -# vel_v = v_flt[vel_valid] -# flt.close() - -# l2_files = sorted( -# l2_path.glob("*.nc"), key=lambda p: p.stat().st_mtime, reverse=True -# ) -# l2_files = l2_files[:lookback] - -# updated = [] -# for l2_file in l2_files: -# with nc.Dataset(str(l2_file), "r+") as ds: -# if "time_uv" not in ds.variables or "u" not in ds.variables: -# continue - -# time_uv = ds.variables["time_uv"][:] -# u_vals = ds.variables["u"][:] -# v_vals = ds.variables["v"][:] - -# file_updated = False -# for i, t_uv in enumerate(time_uv): -# if np.isnan(u_vals[i]): -# # Find last velocity within tolerance of this dive -# match = (vel_times > t_uv - 3600) & (vel_times < t_uv + tolerance) -# if match.any(): -# last_idx = np.where(match)[0][-1] -# ds.variables["u"][i] = vel_u[last_idx] -# ds.variables["v"][i] = vel_v[last_idx] -# file_updated = True -# _log.info("Updated dive %d in %s", i, l2_file) - -# if file_updated and str(l2_file) not in updated: -# updated.append(str(l2_file)) - -# if updated: -# for f in updated: -# typer.echo(f"Updated: {f}") -# else: -# typer.echo("No files updated.") +@app.command() +@log_args +def backfill( + l2_files: Annotated[ + list[str], typer.Argument(help="L2 files to check for missing velocity.") + ], + raw_dir: Annotated[ + str, + typer.Option("-r", "--raw-dir", help="Directory containing raw sbd/dbd files."), + ], + extra_files: Annotated[ + int, + typer.Option( + "-n", + "--extra", + help="Number of extra raw files to load after last L2 file.", + ), + ] = 3, +) -> None: + """ + Backfill depth-averaged velocity to L2 files. + + Uses the glider state variable in L2 files to identify dive cycles, then + looks up velocity from the corresponding raw flight files. Updates velocity + if missing or if the new estimate differs significantly from the existing one. + + File naming convention: L2 files should be named like 'basename.l2.nc' + where 'basename.sbd.nc' or 'basename.dbd.nc' is the corresponding raw file. + """ + raw_path = Path(raw_dir) + conf = config.load_config() + + # Sort L2 files by name to ensure chronological order + l2_files_sorted = sorted([Path(f) for f in l2_files]) + + # Filter to files that have velocity variables + files_to_update = [] + for l2_file in l2_files_sorted: + try: + with nc.Dataset(str(l2_file), "r") as ds: + if "time_uv" in ds.variables: + files_to_update.append(l2_file) + except Exception as e: + _log.warning("Could not read %s: %s", l2_file, e) + continue + + if not files_to_update: + typer.echo("No L2 files with time_uv variable found.") + return + + typer.echo(f"Processing {len(files_to_update)} L2 files.") + + # Extract base names from L2 files (remove .l2.nc suffix) + def get_base_name(l2_file: Path) -> str: + name = l2_file.name + for suffix in [".l2.nc", ".L2.nc", ".nc"]: + if name.endswith(suffix): + return name[: -len(suffix)] + return name.rsplit(".", 1)[0] + + first_base = get_base_name(files_to_update[0]) + last_base = get_base_name(files_to_update[-1]) + + # Get all sbd/dbd files in raw directory, sorted + # Look for .sbd.nc, .sbd.csv, .dbd.nc, .dbd.csv patterns + raw_files = sorted( + list(raw_path.glob("*.sbd.nc")) + + list(raw_path.glob("*.sbd.csv")) + + list(raw_path.glob("*.dbd.nc")) + + list(raw_path.glob("*.dbd.csv")) + ) + + if not raw_files: + typer.echo(f"No raw flight files found in {raw_dir}") + return + + # Extract base names from raw files (remove .sbd.nc, .sbd.csv, etc.) + def get_raw_base_name(raw_file: Path) -> str: + name = raw_file.name + for suffix in [".sbd.nc", ".sbd.csv", ".dbd.nc", ".dbd.csv", ".tbd.nc", ".tbd.csv"]: + if name.endswith(suffix): + return name[: -len(suffix)] + return name.rsplit(".", 1)[0] + + raw_names = [get_raw_base_name(f) for f in raw_files] + + # Find indices of first and last files to load using exact base name match + try: + first_idx = raw_names.index(first_base) + except ValueError: + typer.echo(f"Could not find raw file matching {first_base}") + return + + try: + last_idx = raw_names.index(last_base) + except ValueError: + last_idx = first_idx + + # Load from first to last + extra_files + end_idx = min(last_idx + extra_files + 1, len(raw_files)) + raw_files_to_load = [str(f) for f in raw_files[first_idx:end_idx]] + + typer.echo(f"Loading {len(raw_files_to_load)} raw flight files...") + + # Update each L2 file + updated = [] + for l2_file in files_to_update: + if process_l1.backfill_velocity(str(l2_file), raw_files_to_load): + updated.append(str(l2_file)) + + if updated: + typer.echo(f"\nUpdated {len(updated)} files:") + for f in updated: + typer.echo(f" {f}") + else: + typer.echo("No files were updated.") @app.command() diff --git a/src/glide/process_l1.py b/src/glide/process_l1.py index a8d16d9..e4e5056 100644 --- a/src/glide/process_l1.py +++ b/src/glide/process_l1.py @@ -86,6 +86,12 @@ def parse_l1(file: str | xr.Dataset) -> xr.Dataset: _log.debug("xarray.open_dataset opened %s", file) except ValueError: ds = pd.read_csv(file).to_xarray() + # Rename index dimension to 'i' for consistency with NC files + # Drop the 'i' variable if it exists + if "i" in ds.data_vars: + ds = ds.drop_vars("i") + if "index" in ds.dims: + ds = ds.rename({"index": "i"}) _log.debug("pandas.read_csv opened %s", file) elif isinstance(file, xr.Dataset): # Primarily for testing ds = file @@ -497,18 +503,8 @@ def _empty_velocity(): _log.debug("Found %d dive cycles from state transitions", n_cycles) - # Get flight data arrays for velocity lookup - if flt is not None and "m_water_vx" in flt and "m_water_vy" in flt: - time_flt = flt.m_present_time.values - u_flt = flt.m_water_vx.values - v_flt = flt.m_water_vy.values - else: - time_flt = None - u_flt = None - v_flt = None - _log.warning( - "No flight data with m_water_vx and m_water_vy, velocity will be NaN" - ) + # Extract velocity data from flight data + vel_times, vel_u, vel_v = _extract_velocity_data(flt) time_l2 = ds.time.values lat_l2 = ds.lat.values @@ -532,21 +528,16 @@ def _empty_velocity(): lon_uv[i] = np.nanmean(cycle_lons) # Find velocity in the following surface period - if surf_start < 0 or time_flt is None: + if surf_start < 0 or vel_times is None: continue - t_surf_start = time_l2[surf_start] - t_surf_end = time_l2[surf_end - 1] if surf_end > surf_start else t_surf_start - - # Look for velocity in flight data during surface period - vel_mask = (time_flt >= t_surf_start) & (time_flt <= t_surf_end + 60) - vel_valid = vel_mask & (np.isfinite(u_flt) | np.isfinite(v_flt)) + t_start = time_l2[surf_start] + t_end = time_l2[surf_end - 1] + 60 if surf_end > surf_start else t_start + 60 - if vel_valid.any(): - # Take the last valid velocity (glider may recalculate multiple times) - last_vel_idx = np.where(vel_valid)[0][-1] - u[i] = u_flt[last_vel_idx] - v[i] = v_flt[last_vel_idx] + u_vel, v_vel = _find_velocity_in_window(vel_times, vel_u, vel_v, t_start, t_end) + if u_vel is not None: + u[i] = u_vel + v[i] = v_vel _log.debug("Cycle %d: assigned u=%.4f, v=%.4f", i, u[i], v[i]) ds["time_uv"] = (("time_uv",), time_uv, specs["time_uv"]["CF"]) @@ -563,6 +554,191 @@ def _empty_velocity(): return ds +def _extract_velocity_data( + flt: xr.Dataset | None, +) -> tuple[np.ndarray | None, np.ndarray | None, np.ndarray | None]: + """Extract valid velocity data from flight dataset. + + Returns + ------- + tuple of (times, u, v) arrays with only valid velocity points, + or (None, None, None) if no valid data. + """ + if flt is None: + _log.warning("No flight data provided, velocity will be NaN") + return None, None, None + + if "m_water_vx" not in flt or "m_water_vy" not in flt: + _log.warning("No m_water_vx/vy in flight data, velocity will be NaN") + return None, None, None + + time_flt = flt.m_present_time.values + u_flt = flt.m_water_vx.values + v_flt = flt.m_water_vy.values + + vel_valid = np.isfinite(u_flt) & np.isfinite(v_flt) + if not vel_valid.any(): + _log.warning("No valid velocity data in flight data") + return None, None, None + + return time_flt[vel_valid], u_flt[vel_valid], v_flt[vel_valid] + + +def _find_velocity_in_window( + vel_times: np.ndarray | None, + vel_u: np.ndarray | None, + vel_v: np.ndarray | None, + t_start: float, + t_end: float, +) -> tuple[float | None, float | None]: + """Find the last valid velocity estimate in a time window. + + Parameters + ---------- + vel_times : array + Times of valid velocity estimates. + vel_u, vel_v : array + Eastward and northward velocity values. + t_start, t_end : float + Time window to search (inclusive start, exclusive end). + + Returns + ------- + tuple of (u, v) or (None, None) if no velocity found. + """ + if vel_times is None or vel_u is None or vel_v is None: + return None, None + + match = (vel_times >= t_start) & (vel_times < t_end) + if match.any(): + last_idx = np.where(match)[0][-1] + return vel_u[last_idx], vel_v[last_idx] + + return None, None + + +def backfill_velocity( + l2_file: str, + raw_files: list[str], + tolerance: float = 0.005, +) -> bool: + """Backfill velocity data in an L2 file using raw flight data. + + For each velocity estimate, searches raw flight data for velocity in a + time window starting at the end of the climb (last point with matching + climb_id after time_uv). Updates the value if it is missing (NaN) or if + the new estimate differs significantly from the existing one. + + Parameters + ---------- + l2_file : str + Path to L2 file to update. + raw_files : list of str + Paths to raw flight files (sbd/dbd) containing velocity data. + tolerance : float + Update existing velocity if difference exceeds this value (m/s). + + Returns + ------- + bool + True if the file was updated, False otherwise. + """ + import netCDF4 as nc + + raw_datasets = [] + for rf in raw_files: + raw_datasets.append(parse_l1(rf)) + + if not raw_datasets: + _log.warning("No raw data could be loaded for backfill") + return False + + flt = xr.concat(raw_datasets, dim="i") + vel_times, vel_u, vel_v = _extract_velocity_data(flt) + + if vel_times is None: + return False + + _log.debug("Found %d velocity estimates in raw data", len(vel_times)) + + # Update the L2 file + file_updated = False + with nc.Dataset(l2_file, "r+") as ds: + if "u" not in ds.variables or "v" not in ds.variables: + _log.warning("No velocity variables in %s", l2_file) + return False + + if "climb_id" not in ds.variables: + _log.warning("No climb_id variable in %s", l2_file) + return False + + time_l2 = ds.variables["time"][:] + time_uv = np.ma.filled(ds.variables["time_uv"][:], np.nan) + climb_id = np.ma.filled(ds.variables["climb_id"][:], -1) + u_vals = np.ma.filled(ds.variables["u"][:], np.nan) + v_vals = np.ma.filled(ds.variables["v"][:], np.nan) + + n_uv = len(time_uv) + if n_uv == 0: + _log.debug("No time_uv values in %s", l2_file) + return False + + for i in range(n_uv): + t_uv = time_uv[i] + if np.isnan(t_uv): + continue # No valid time_uv for this cycle + + # Find the last point with this climb_id after time_uv + climb_mask = (climb_id == i) & (time_l2 >= t_uv) + if not climb_mask.any(): + _log.debug("No climb points after time_uv for cycle %d", i) + continue + + # Search window starts at end of climb + t_start = time_l2[climb_mask][-1] + + # Search window ends at next valid time_uv (or +10 min) + if i + 1 < n_uv and np.isfinite(time_uv[i + 1]): + t_end = time_uv[i + 1] + else: + t_end = t_start + 600 # 10 minutes max + + u_vel, v_vel = _find_velocity_in_window( + vel_times, vel_u, vel_v, t_start, t_end + ) + if u_vel is None: + continue + + # Check if update is needed (missing or significantly different) + if u_vel is None or v_vel is None: + continue + + u_old, v_old = u_vals[i], v_vals[i] + is_missing = np.isnan(u_old) or np.isnan(v_old) + is_different = ( + not is_missing + and (abs(u_vel - u_old) > tolerance or abs(v_vel - v_old) > tolerance) + ) + + if is_missing or is_different: + ds.variables["u"][i] = u_vel + ds.variables["v"][i] = v_vel + file_updated = True + if is_missing: + _log.info("Backfilled cycle %d: u=%.4f, v=%.4f", i, u_vel, v_vel) + else: + _log.info( + "Updated cycle %d: u=%.4f->%.4f, v=%.4f->%.4f", + i, + u_old, + u_vel, + v_old, + v_vel, + ) + + return file_updated + + def enforce_types(ds: xr.Dataset, config: dict) -> xr.Dataset: """Enforce data types on variables based on the configuration file.""" variable_specs = { diff --git a/src/glide/qc.py b/src/glide/qc.py index 4cf22e3..2bd637b 100644 --- a/src/glide/qc.py +++ b/src/glide/qc.py @@ -378,7 +378,8 @@ def gps(ds: xr.Dataset, dt: float = 600) -> xr.Dataset: lat[in_gap] = la + dla changed = np.full(lon.shape, False) - changed[np.hstack(idx_changed)] = True + if idx_changed: + changed[np.hstack(idx_changed)] = True ds["lon"] = (ds.lon.dims, lon, ds.lon.attrs) ds["lat"] = (ds.lat.dims, lat, ds.lat.attrs) diff --git a/tests/data/osu685-2025-056-0-27.sbd.csv b/tests/data/osu685-2025-056-0-27.sbd.csv new file mode 100644 index 0000000..2469cb8 --- /dev/null +++ b/tests/data/osu685-2025-056-0-27.sbd.csv @@ -0,0 +1,4 @@ +i,c_battpos,c_de_oil_vol,c_fin,c_heading,c_pitch,c_wpt_lat,c_wpt_lon,m_altitude,m_argos_is_xmitting,m_argos_on,m_battery,m_battpos,m_climb_tot_time,m_coulomb_amphr_total,m_depth,m_de_oil_vol,m_digifin_leakdetect_reading,m_dive_tot_time,m_fin,m_gps_lat,m_gps_lon,m_heading,m_iridium_on,m_iridium_status,m_lat,m_leakdetect_voltage,m_leakdetect_voltage_forward,m_leakdetect_voltage_science,m_lon,m_pitch,m_present_secs_into_mission,m_present_time,m_raw_altitude,m_roll,m_speed,m_thruster_power,m_vacuum,m_vehicle_temp,m_veh_temp,m_water_depth,m_water_vx,m_water_vy +0,0.9,430.0,0.0,3.0606797,0.4538,2018.2,12958.76,0.0,0,1,14.908403,0.8591612,3898.204,135.06215,1.3276043,429.95184,1023.0,3663.848,-0.0347381,2134.4584,12945.2767,3.1817353,1,9,2134.4583999657807,2.4990537,2.4957876,2.4966424,12945.27669999983,0.31241393,155499.58,1740751502.379,110.0,0.2268928,0.5245935,0.0,8.813977,0.0,19.982222,-1.0,0.07166861,0.088767305 +1,,,,,,,,,0,1,14.884638,,,135.06337,,,1023.0,,,,,,1,9,,2.4979243,2.4941392,2.495238,,,155499.58,1740751502.379,,,,,8.887289,,20.060366,,, +2,0.9,430.0,0.0,3.0606797,,,,,-127,-127,,0.8577094,,,2.5631375,429.9268,,,0.1013194,,,3.1817353,-127,-127,2134.4583999657807,,,,12945.27669999983,0.31241393,155572.4,1740751575.25,,0.2268928,0.5245935,,,,,,0.07166861,0.088767305 diff --git a/tests/data/osu685-2025-056-0-27.tbd.csv b/tests/data/osu685-2025-056-0-27.tbd.csv new file mode 100644 index 0000000..d24fc94 --- /dev/null +++ b/tests/data/osu685-2025-056-0-27.tbd.csv @@ -0,0 +1,5 @@ +i,sci_m_present_secs_into_mission,sci_m_present_time,sci_microrider_isdp_file_state,sci_water_cond,sci_water_pressure,sci_water_temp +0,155589.05,1740751501.317,0,0.0,0.0,0.0 +1,155593.23,1740751505.5,0,,, +2,155615.23,1740751527.5,0,,, +3,155667.23,1740751579.5,-127,0.0,0.0,0.0 diff --git a/tests/data/osu685-2025-056-0-28.sbd.csv b/tests/data/osu685-2025-056-0-28.sbd.csv new file mode 100644 index 0000000..e714d6a --- /dev/null +++ b/tests/data/osu685-2025-056-0-28.sbd.csv @@ -0,0 +1,233 @@ +i,c_battpos,c_de_oil_vol,c_fin,c_heading,c_pitch,c_wpt_lat,c_wpt_lon,m_altitude,m_argos_is_xmitting,m_argos_on,m_battery,m_battpos,m_climb_tot_time,m_coulomb_amphr_total,m_depth,m_de_oil_vol,m_digifin_leakdetect_reading,m_dive_tot_time,m_fin,m_gps_lat,m_gps_lon,m_heading,m_iridium_on,m_iridium_status,m_lat,m_leakdetect_voltage,m_leakdetect_voltage_forward,m_leakdetect_voltage_science,m_lon,m_pitch,m_present_secs_into_mission,m_present_time,m_raw_altitude,m_roll,m_speed,m_thruster_power,m_vacuum,m_vehicle_temp,m_veh_temp,m_water_depth,m_water_vx,m_water_vy +0,0.9,430.0,0.0,3.0606797,0.4538,2018.2,12958.76,0.0,0,1,14.890477,0.8591612,3898.204,135.07584,2.5631375,429.90176,1023.0,3663.848,-0.002894842,2134.4584,12945.2767,3.1817353,1,9,2134.4583999657807,2.5,2.4944139,2.4955127,12945.27669999983,0.31241393,155609.66,1740751612.533,110.0,0.2268928,0.5245935,0.0,8.887289,0.0,20.521416,-1.0,0.07166861,0.088767305 +1,,,,,,,,,-127,-127,,,,,,,,,,2134.4052,12945.3097,,-127,-127,,,,,,,155670.77,1740751673.667,,,,,,,,,, +2,,,,,,,,,-127,-127,,,,,,,,,,2134.4046,12945.3097,,-127,-127,,,,,,,155674.77,1740751677.675,,,,,,,,,, +3,,,,,,,,,-127,-127,,,,,,,,,,2134.4039000000002,12945.31,,-127,-127,,,,,,,155679.03,1740751681.263,,,,,,,,,, +4,,,,,,,,,-127,-127,,,,,,,,,,2134.4036,12945.310099999999,,-127,-127,,,,,,,155687.03,1740751689.267,,,,,,,,,, +5,,,,,,,,,-127,-127,,,,,,,,,,2134.4032,12945.3112,,-127,-127,,,,,,,155691.03,1740751693.269,,,,,,,,,, +6,,,,,,,,,-127,-127,,,,,,,,,,2134.4031000000004,12945.3131,,-127,-127,,,,,,,155695.03,1740751697.272,,,,,,,,,, +7,,,,,,,,,-127,-127,,,,,,,,,,2134.4027,12945.313,,-127,-127,,,,,,,155699.03,1740751701.274,,,,,,,,,, +8,,,,,,,,,-127,-127,,,,,,,,,,2134.4022,12945.3148,,-127,-127,,,,,,,155703.03,1740751705.278,,,,,,,,,, +9,,,,,,,,,-127,-127,,,,,,,,,,2134.4016,12945.3167,,-127,-127,,,,,,,155711.03,1740751713.282,,,,,,,,,, +10,,,,,,,,,-127,-127,,,,,,,,,,2134.4010000000003,12945.3187,,-127,-127,,,,,,,155715.03,1740751717.29,,,,,,,,,, +11,,,,,,,,,-127,-127,,,,,,,,,,2134.4004,12945.3207,,-127,-127,,,,,,,155719.05,1740751721.293,,,,,,,,,, +12,,,,,,,,,-127,-127,,,,,,,,,,2134.3983000000003,12945.313,,-127,-127,,,,,,,155727.05,1740751729.299,,,,,,,,,, +13,,,,,,,,,-127,-127,,,,,,,,,,2134.3988,12945.3143,,-127,-127,,,,,,,155731.05,1740751733.306,,,,,,,,,, +14,,,,,,,,,-127,-127,,,,,,,,,,2134.3978,12945.3147,,-127,-127,,,,,,,155735.05,1740751737.31,,,,,,,,,, +15,,,,,,,,,-127,-127,,,,,,,,,,2134.3964,12945.315499999999,,-127,-127,,,,,,,155739.05,1740751741.313,,,,,,,,,, +16,,,,,,,,,-127,-127,,,,,,,,,,2134.3952000000004,12945.315999999999,,-127,-127,,,,,,,155743.05,1740751745.316,,,,,,,,,, +17,,,,,,,,,-127,-127,,,,,,,,,,2134.3939000000005,12945.316799999999,,-127,-127,,,,,,,155751.05,1740751753.323,,,,,,,,,, +18,,,,,,,,,-127,-127,,,,,,,,,,2134.3925000000004,12945.3175,,-127,-127,,,,,,,155755.06,1740751757.332,,,,,,,,,, +19,,,,,,,,,-127,-127,,,,,,,,,,2134.3912000000005,12945.318299999999,,-127,-127,,,,,,,155759.06,1740751761.335,,,,,,,,,, +20,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,155763.06,1740751765.339,,0.31939524,,0.0,,,,,, +21,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,155767.06,1740751769.341,,,,,,,,,, +22,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,155776.72,1740751779.013,110.0,,,,,,,,, +23,,,,,,,,,0,0,14.881745,,,135.08974,,,1023.0,,,,,,0,99,,,,,,,155808.72,1740751811.031,,,,,6.790903,,21.486496,,, +24,-0.08493678,-380.0,0.45,3.261926,,,,,-127,-127,,-0.030774115,,,27.01244,-369.77264,,,0.4526829,,,1.8535397,-127,-127,2134.3987412360148,,,,12945.346961916208,-0.46774822,155872.78,1740751875.128,,,0.39837405,,,,,,, +25,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,155916.8,1740751919.159,,0.22514747,,,,,,,, +26,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,156070.52,1740752072.971,,0.23387411,,,,,,,, +27,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,156078.52,1740752080.98,110.0,,,,,,,,, +28,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,2.4961233,2.49185,2.4928877,,,156106.53,1740752109.001,,,,,,,,,, +29,,,,,,,,,0,-127,15.146111,,,135.09584,,,1023.0,,,,,,0,-127,,,,,,,156110.53,1740752113.009,,,,,6.764244,,22.111649,,, +30,-0.08493678,-380.0,0.45,3.2576363,,,,,-127,-127,,-0.032225884,,,90.26224,-369.82272,,,0.4515159,,,1.1431906,-127,-127,2134.4317752971338,,,,12945.414685242566,-0.47472957,156174.58,1740752177.093,,,0.41188338,,,,,,, +31,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,156222.64,1740752225.18,,0.24260077,,,,,,,, +32,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,156372.5,1740752375.13,,,,,,,,,, +33,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,156376.5,1740752379.137,,0.23387411,,,,,,,, +34,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,156380.5,1740752383.142,110.0,,,,,,,,, +35,,,,,,,,,0,-127,15.191877,,,135.10219,,,1023.0,,,,,,0,-127,,,,,,,156412.55,1740752415.201,,,,,6.746916,,22.22105,,, +36,-0.08493678,-380.0,0.45,3.2540498,,,,,-127,-127,,-0.032225884,,,150.87465,-369.94797,,,0.4515159,,,2.6389377,-127,-127,2134.422072271226,,,,12945.477032191971,-0.4712389,156476.6,1740752479.278,,,0.2975062,,,,,,, +37,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,156528.6,1740752531.314,,0.2443461,,,,,,,, +38,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,156674.31,1740752677.11,,,,,,,,,, +39,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,156682.31,1740752685.12,110.0,0.24260077,,,,,,,, +40,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,2.4960012,2.491972,2.4929793,,,156710.31,1740752713.143,,,,,,,,,, +41,,,,,,,,,0,-127,15.211659,,,135.10854,,,1023.0,,,,,,0,-127,,,,,,,156714.33,1740752717.15,,,,,6.759912,,22.10774,,, +42,-0.08493678,-380.0,0.37628922,3.2517593,,,,,-127,-127,,-0.032225884,,,205.52324,-370.14835,,,0.3628216,,,3.1031954,-127,-127,2134.3887718300266,,,,12945.507350207949,-0.45553094,156778.36,1740752781.23,,,0.28207287,,,,,,, +43,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,156834.42,1740752837.32,,0.24958208,,,,,,,, +44,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,156976.22,1740752979.192,,,,,,,,,, +45,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,156984.22,1740752987.201,110.0,,,,,,,,, +46,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,156988.27,1740752991.244,,0.2443461,,,,,,,, +47,,,,,,,,,0,-127,15.221225,,,135.11586,,,1023.0,,,,,,0,-127,,,,,,,157016.27,1740753019.26,,,,,6.848886,,21.427887,,, +48,-0.08493678,-380.0,0.3212593,3.2503958,,,,,-127,-127,,-0.032225884,,,255.99002,-370.3487,,,0.2927998,,,2.7000244,-127,-127,2134.357789317808,,,,12945.541306821202,-0.4223697,157080.3,1740753083.342,,,0.30790186,,,,,,, +49,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,157140.3,1740753143.377,,0.2443461,,,,,,,, +50,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,157278.19,1740753281.345,,,,,,,,,, +51,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,157286.2,1740753289.354,110.0,,,,,,,,, +52,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,157294.2,1740753297.365,,0.24783675,,,,,,,, +53,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,2.4959402,2.491636,2.4926128,,,157314.2,1740753317.381,,,,,,,,,, +54,,,,,,,,,0,-127,15.225336,,,135.12221,,,1023.0,,,,,,0,-127,,,,,,,157318.22,1740753321.389,,,,,6.901204,,20.466715,,, +55,-0.08493678,-380.0,0.3855243,3.2490551,,,,,-127,-127,,-0.032225884,,,306.36176,-370.499,,,0.4095028,,,2.7227137,-127,-127,2134.33315872564,,,,12945.588577922654,-0.43633232,157382.25,1740753385.464,,,0.3894955,,,,,,, +56,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,157446.3,1740753449.547,,0.24609143,,,,,,,, +57,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,157579.95,1740753583.287,,,,,,,,,, +58,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,157587.97,1740753591.296,110.0,,,,,,,,, +59,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,157600.2,1740753603.535,,0.24958208,,,,,,,, +60,,,,,,,,,0,-127,15.225,,,135.12831,,,1023.0,,,,,,0,-127,,,,,,,157620.2,1740753623.547,,,,,6.9571877,,19.50945,,, +61,-0.08493678,-380.0,0.45,3.248786,,,,,-127,-127,,-0.033677656,,,352.38538,-370.59918,,,0.4573511,,,2.4626596,-127,-127,2134.308101634467,,,,12945.630778659617,-0.40840703,157684.23,1740753687.625,,,0.36858392,,,,,,, +62,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,157752.23,1740753755.666,,0.24783675,,,,,,,, +63,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,157881.94,1740753885.444,,,,,,,,,, +64,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,157889.95,1740753893.455,110.0,,,,,,,,, +65,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,157905.95,1740753909.469,,0.24609143,,,,,,,, +66,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,2.4974053,2.4912088,2.4925213,,,157917.95,1740753921.482,,,,,,,,,, +67,,,,,,,,,0,-127,15.214666,,,135.13588,,,1023.0,,,,,,0,-127,,,,,,,157921.97,1740753925.49,,,,,6.9991755,,18.606886,,, +68,-0.08493678,-380.0,0.4089892,3.2495058,,,,,-127,-127,,-0.032225884,,,394.91623,-370.79953,,,0.4585181,,,2.6738443,-127,-127,2134.2943694856867,,,,12945.680341706073,-0.40840703,157986.02,1740753989.57,,,0.25787237,,,,,,, +69,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,158058.05,1740754061.653,,0.24609143,,,,,,,, +70,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,158182.11,1740754185.788,,,,,,,,,, +71,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,158210.16,1740754213.844,,0.24783675,,,,,,,, +72,,,,,,,,,0,-127,15.225506,,,135.14223,,,1023.0,,,,,,0,-127,,,,,,,158222.16,1740754225.856,,,,,7.0741534,,17.727766,,, +73,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,158259.06,1740754262.788,110.0,,,,,,,,, +74,-0.052290488,-380.0,0.45,3.2500558,,,,,-127,-127,,-0.032225884,,,437.162,-370.69934,,,0.4526829,,,2.4312437,-127,-127,2134.2722393687613,,,,12945.721832526307,-0.40317106,158287.08,1740754290.809,,,0.3347591,,,,,,, +75,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,158363.12,1740754366.899,,0.24958208,,,,,,,, +76,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,158483.22,1740754487.067,,,,,,,,,, +77,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,158515.22,1740754519.09,,0.24260077,,,,,,,, +78,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,2.4954822,2.4910562,2.492216,,,158519.23,1740754523.097,,,,,,,,,, +79,,,,,,,,,0,-127,15.214552,,,135.14833,,,1023.0,,,,,,0,-127,,,,,,,158531.23,1740754535.107,,,,,7.120806,,16.653284,,, +80,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,158559.28,1740754563.166,110.0,,,,,,,,, +81,0.08204715,-380.0,0.45,3.250351,,,,,-127,-127,,0.110047616,,,481.64117,-370.84964,,,0.4480148,,,2.5150194,-127,-127,2134.250938772701,,,,12945.765528048994,-0.4660029,158587.28,1740754591.182,,,0.25228044,,,,,,, +82,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,158668.94,1740754672.891,,0.24783675,,,,,,,, +83,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,158785.0,1740754789.016,,,,,,,,,, +84,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,158821.0,1740754825.041,,0.24958208,,,,,,,, +85,,,,,,,,,0,-127,15.21603,,,135.1559,,,1023.0,,,,,,0,-127,,,,,,,158833.05,1740754837.094,,,,,7.191119,,15.676483,,, +86,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,158861.05,1740754865.115,110.0,,,,,,,,, +87,0.08204715,-380.0,0.45,3.2517476,,,,,-127,-127,,0.110047616,,,525.59766,-370.44888,,,0.4515159,,,2.5254915,-127,-127,2134.232913098478,,,,12945.806339692397,-0.47822022,158889.06,1740754893.137,,,0.23687772,,,,,,, +88,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,158973.1,1740754977.228,,0.24958208,,,,,,,, +89,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,159086.8,1740755090.995,,,,,,,,,, +90,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,2.4951465,2.4910562,2.4917583,,,159122.8,1740755127.015,,,,,,,,,, +91,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,159126.8,1740755131.023,,0.24958208,,,,,,,, +92,,,,,,,,,0,-127,15.209336,,,135.16225,,,1023.0,,,,,,0,-127,,,,,,,159134.81,1740755139.028,,,,,7.2397714,,14.7621975,,, +93,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,159162.81,1740755167.05,110.0,,,,,,,,, +94,0.08204715,-380.0,0.30152386,3.2531803,,,,,-127,-127,,0.110047616,,,568.41364,-369.77264,,,0.3091382,,,2.8082347,-127,-127,2134.2106305854363,,,,12945.838254930559,-0.4537856,159190.86,1740755195.11,,,0.24813189,,,,,,, +95,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,159278.89,1740755283.202,,0.25307274,,,,,,,, +96,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,159388.58,1740755392.943,,,,,,,,,, +97,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,159432.61,1740755437.009,,0.25307274,,,,,,,, +98,,,,,,,,,0,-127,15.199598,,,135.16957,,,1023.0,,,,,,0,-127,,,,,,,159436.61,1740755441.011,,,,,7.294089,,13.765861,,, +99,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,159464.61,1740755469.028,110.0,,,,,,,,, +100,0.08204715,-380.0,0.41434863,3.2545476,,,,,-127,-127,,0.110047616,,,610.8732,-369.0463,,,0.4363445,,,2.661627,-127,-127,2134.189587768644,,,,12945.873605009596,-0.45029494,159492.62,1740755497.049,,,0.268592,,,,,,, +101,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,159584.67,1740755589.149,,0.24958208,,,,,,,, +102,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,159688.7,1740755693.251,,,,,,,,,, +103,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,2.4948108,2.490415,2.491453,,,159724.77,1740755729.334,,,,,,,,,, +104,,,,,,,,,0,-127,15.193243,,,135.17714,,,1023.0,,,,,,0,-127,,,,,,,159736.78,1740755741.347,,0.24958208,,,7.365068,,12.8437605,,, +105,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,159766.39,1740755770.984,110.0,,,,,,,,, +106,0.08204715,-380.0,0.45,3.2561977,,,,,-127,-127,,0.110047616,,,651.6221,-368.3951,,,0.4503489,,,2.5638888,-127,-127,2134.1695459660996,,,,12945.90774986753,-0.44854963,159794.44,1740755799.042,,,0.2509945,,,,,,, +107,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,159890.48,1740755895.145,,0.24958208,,,,,,,, +108,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,159990.55,1740755995.26,,,,,,,,,, +109,,,,,,,,,0,-127,15.18877,,,135.18349,,,1023.0,,,,,,0,-127,,,,,,,160038.6,1740756043.333,,,,,7.4083886,,11.929475,,, +110,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,160042.6,1740756047.335,,0.24783675,,,,,,,, +111,0.08204715,-380.0,0.45,3.2575123,,,,,-127,-127,,0.11149939,,,692.8223,-367.76895,,,0.455017,,,2.4155357,-127,-127,2134.1493237071168,,,,12945.943450313194,-0.44331363,160094.6,1740756099.366,,,0.30506325,,,,,,, +112,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,160128.25,1740756133.041,110.0,,,,,,,,, +113,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,160196.25,1740756201.081,,0.25307274,,,,,,,, +114,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,160292.3,1740756297.186,,,,,,,,,, +115,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,2.494597,2.49011,2.491392,,,160328.36,1740756333.265,,,,,,,,,, +116,,,,,,,,,0,-127,15.179077,,,135.19081,,,1023.0,,,,,,0,-127,,,,,,,160340.36,1740756345.277,,,,,7.4617066,,11.108962,,, +117,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,160348.36,1740756353.287,,0.2565634,,,,,,,, +118,0.08204715,-380.0,0.45,3.258666,,,,,-127,-127,,0.11149939,,,734.30774,-367.06766,,,0.4340105,,,2.258456,-127,-127,2134.1356183074413,,,,12945.98795403256,-0.43284166,160396.4,1740756401.361,,,0.19263777,,,,,,, +119,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,160428.42,1740756433.384,110.0,,,,,,,,, +120,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,160500.45,1740756505.467,,0.24783675,,,,,,,, +121,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,160594.31,1740756599.372,,,,,,,,,, +122,,,,,,,,,0,-127,15.168678,,,135.19838,,,1023.0,,,,,,0,-127,,,,,,,160642.31,1740756647.405,,,,,7.4930305,,10.397851,,, +123,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,160654.34,1740756659.449,,0.24958208,,,,,,,, +124,0.08204715,-380.0,0.45,3.260161,,,,,-127,-127,,0.11149939,,,774.5101,-366.41644,,,0.4328434,,,1.7749999,-127,-127,2134.130337585417,,,,12946.037849393215,-0.43633232,160698.34,1740756703.474,,,0.22745617,,,,,,, +125,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,160730.36,1740756735.499,110.0,,,,,,,,, +126,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,160806.39,1740756811.584,,0.24958208,,,,,,,, +127,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,160894.44,1740756899.672,,,,,,,,,, +128,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,2.4943833,2.4899879,2.4909647,,,160932.11,1740756937.365,,,,,,,,,, +129,,,,,,,,,0,-127,15.140389,,,135.20595,,,1023.0,,,,,,0,-127,,,,,,,160944.11,1740756949.378,,,,,7.534685,,9.717998,,, +130,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,160960.12,1740756965.394,,0.25307274,,,,,,,, +131,0.08204715,-380.0,0.45,3.2625244,,,,,-127,-127,,0.11149939,,,811.386,-365.7903,,,0.4328434,,,1.5952309,-127,-127,2134.1507570482418,,,,12946.089809414294,-0.43458697,161000.12,1740757005.422,,,0.25065917,,,,,,, +132,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,161032.16,1740757037.475,110.0,,,,,,,,, +133,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,161112.2,1740757117.563,,0.24958208,,,,,,,, +134,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,161196.23,1740757201.649,,,,,,,,,, +135,,,,,,,,,0,-127,15.151657,,,135.21205,,,1023.0,,,,,,0,-127,,,,,,,161244.25,1740757249.682,,,,,7.5596776,,9.139731,,, +136,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,161264.25,1740757269.7,,0.25132743,,,,,,,, +137,0.08204715,-380.0,0.45,3.2649283,,,,,-127,-127,,0.11295116,,,847.1927,-365.26434,,,0.4328434,,,1.1309733,-127,-127,2134.1811128760037,,,,12946.137773128978,-0.429351,161300.31,1740757305.777,,,0.31087017,,,,,,, +138,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,161361.95,1740757367.456,110.0,,,,,,,,, +139,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,161417.95,1740757423.488,,0.25132743,,,,,,,, +140,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,161497.98,1740757503.576,,,,,,,,,, +141,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,2.4943833,2.4899573,2.4908426,,,161534.0,1740757539.601,,,,,,,,,, +142,,,,,,,,,0,-127,15.140996,,,135.21962,,,1023.0,,,,,,0,-127,,,,,,,161546.03,1740757551.646,,,,,7.592668,,8.643517,,, +143,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,161570.03,1740757575.666,,0.25132743,,,,,,,, +144,0.08204715,-380.0,0.45,3.2668242,,,,,-127,-127,,0.11295116,,,883.8548,-364.71332,,,0.4328434,,,0.56897736,-127,-127,2134.224096577572,,,,12946.177280352736,-0.42760566,161602.05,1740757607.689,,,0.23077579,,,,,,, +145,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,161662.11,1740757667.784,110.0,,,,,,,,, +146,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,161722.14,1740757727.856,,0.25481808,,,,,,,, +147,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,161799.77,1740757805.52,,,,,,,,,, +148,,,,,,,,,0,-127,15.12159,,,135.22719,,,1023.0,,,,,,0,-127,,,,,,,161847.8,1740757853.59,,,,,7.6103296,,8.155116,,, +149,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,161875.81,1740757881.613,,0.25307274,,,,,,,, +150,0.08204715,-380.0,0.45,3.2679975,,,,,-127,-127,,0.11295116,,,922.2751,-364.1122,,,0.4328434,,,0.37873644,-127,-127,2134.2760055086965,,,,12946.208042283146,-0.42760566,161903.84,1740757909.667,,,0.24393289,,,,,,, +151,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,161963.86,1740757969.708,110.0,,,,,,,,, +152,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,162028.1,1740758033.979,,0.25481808,,,,,,,, +153,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,162100.12,1740758106.059,,,,,,,,,, +154,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,2.4943528,2.4896824,2.4908426,,,162136.12,1740758142.084,,,,,,,,,, +155,,,,,,,,,0,-127,15.120876,,,135.23477,,,1023.0,,,,,,0,-127,,,,,,,162148.14,1740758154.097,,,,,7.6256585,,7.7643957,,, +156,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,162181.78,1740758187.76,,0.25132743,,,,,,,, +157,0.25401,-380.0,0.37100053,3.268871,,,,,-127,-127,,0.24651404,,,962.97644,-363.68643,,,0.3663227,,,2.7157323,-127,-127,2134.288225407327,,,,12946.212535611035,-0.47822022,162205.78,1740758211.781,,,0.30215338,,,,,,, +158,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,162265.84,1740758271.871,110.0,,,,,,,,, +159,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,162333.89,1740758339.952,,0.25481808,,,,,,,, +160,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,162401.89,1740758407.992,,,,,,,,,, +161,,,,,,,,,0,-127,15.103284,,,135.24208,,,1023.0,,,,,,0,-127,,,,,,,162449.92,1740758456.058,,,,,7.6529837,,7.3736753,,, +162,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,162485.95,1740758492.11,,0.25132743,,,,,,,, +163,-0.33,220.0,0.26552644,3.270372,,,,,-127,-127,,-0.32403174,,,1002.70355,-227.00943,,,0.262457,,,2.8658307,-127,-127,2134.270147853587,,,,12946.244156820107,0.0017453292,162506.0,1740758512.164,,,0.0,,,,,,, +164,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,162636.62,1740758642.865,,0.18849556,,,,,,,, +165,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,162704.67,1740758710.948,,,,,,,,,, +166,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,2.4949024,2.490354,2.4911172,,,162736.67,1740758742.971,,,,,,,,,, +167,,,,,,,,,0,-127,14.651585,,,135.48721,,,1023.0,,,,,,0,-127,,,,,,,162752.67,1740758758.986,,,,,7.9775553,,7.256459,,, +168,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,162788.72,1740758795.041,,0.23736478,,,,,,,, +169,-0.33,220.0,-0.21699117,3.2699206,,,,,-127,-127,,-0.32257998,,,910.0623,220.4656,,,-0.2344822,,,3.4016466,-127,-127,2134.2456240793076,,,,12946.23911394119,0.8656833,162808.72,1740758815.058,,,0.37606922,,,,,,, +170,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,162940.81,1740758947.226,,0.28274333,,,,,,,, +171,,,,,,,,,0,-127,14.899917,,,135.50331,,,1023.0,,,,,,0,-127,,,,,,,163052.84,1740759059.333,,,,,8.013545,,7.080635,,, +172,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,163092.86,1740759099.361,,0.25481808,,,,,,,, +173,-0.33,220.0,-0.14012665,3.266819,,,,,-127,-127,,-0.32257998,,,789.978,220.66599,,,-0.1331627,,,3.223623,-127,-127,2134.207237154494,,,,12946.24468457022,0.8517207,163108.89,1740759115.409,,,0.33175156,,,,,,, +174,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,163244.94,1740759251.525,,0.30892327,,,,,,,, +175,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,2.4942002,2.4898353,2.4904761,,,163336.98,1740759343.631,,,,,,,,,, +176,,,,,,,,,0,-127,14.938733,,,135.51967,,,1023.0,,,,,,0,-127,,,,,,,163353.0,1740759359.647,,,,,8.022876,,6.982955,,, +177,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,163397.03,1740759403.714,,0.27925268,,,,,,,, +178,-0.33,220.0,-0.3677195,3.2646852,,,,,-127,-127,,-0.32257998,,,678.25726,220.94148,,,-0.3919973,,,3.3178709,-127,-127,2134.1713287919374,,,,12946.251360880664,0.86044735,163409.05,1740759415.726,,,0.27671623,,,,,,, +179,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,163549.11,1740759555.881,,0.30717796,,,,,,,, +180,,,,,,,,,0,-127,14.943002,,,135.53604,,,1023.0,,,,,,0,-127,,,,,,,163653.17,1740759659.997,,,,,8.002548,,7.0923567,,, +181,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,163701.17,1740759708.031,,0.27227136,,,,,,,, +182,-0.33,220.0,-0.100994304,3.2634666,,,,,-127,-127,,-0.32257998,,,573.78345,221.1168,,,-0.08395043,,,3.234095,-127,-127,2134.1379777465227,,,,12946.260318176435,0.82030475,163709.22,1740759716.074,,,0.29373962,,,,,,, +183,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,163853.25,1740759860.19,,0.2617994,,,,,,,, +184,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,2.5,2.4997864,2.5,,,163937.3,1740759944.282,,,,,,,,,, +185,,,,,,,,,0,-127,14.937658,,,135.55215,,,1023.0,,,,,,0,-127,,,,,,,163953.3,1740759960.297,,,,,7.9555616,,7.5690355,,, +186,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,164005.34,1740760012.379,,0.26529005,,,,,,,, +187,-0.33,220.0,-0.20108904,3.261945,,,,,-127,-127,,-0.32257998,,,469.76105,221.46745,,,-0.220008,,,3.5639622,-127,-127,2134.1051348566884,,,,12946.261963167335,0.8220501,164009.36,1740760016.386,,,0.29216322,,,,,,, +188,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,164157.42,1740760164.543,,0.29496065,,,,,,,, +189,,,,,,,,,0,-127,14.938155,,,135.56729,,,1023.0,,,,,,0,-127,,,,,,,164253.66,1740760260.834,,,,,7.890914,,8.448156,,, +190,-0.33,220.0,-0.25885534,3.2607207,,,,,-127,-127,,-0.32257998,,,370.08676,221.56764,,,-0.2547461,,,3.6459928,-127,-127,2134.073531750981,,,,12946.258562612169,0.79063416,164309.7,1740760316.905,,0.27227136,0.27351993,,,,,,, +191,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,164461.73,1740760469.03,,0.28797933,,,,,,,, +192,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,2.4942613,2.490232,2.4910562,,,164537.78,1740760545.113,,,,,,,,,, +193,,,,,,,,,0,-127,14.937714,,,135.5834,,,1023.0,,,,,,0,-127,,,,,,,164553.78,1740760561.127,,,,,7.7676167,,9.698462,,, +194,-0.33,220.0,-0.45,3.2606685,,,,,-127,-127,,-0.32257998,,,281.03333,221.56764,,,-0.4398456,,,3.6826446,-127,-127,2134.046663568448,,,,12946.254013867207,0.80110615,164609.84,1740760617.219,,,0.2862976,,,,,,, +195,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,164613.84,1740760621.227,,0.286234,,,,,,,, +196,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,164765.92,1740760773.389,,0.28274333,,,,,,,, +197,,,,,,,,,0,-127,14.945042,,,135.59854,,,1023.0,,,,,,0,-127,,,,,,,164853.95,1740760861.479,,,,,7.682975,,11.183199,,, +198,-0.33,220.0,-0.32569352,3.2610862,,,,,-127,-127,,-0.32112822,,,197.72987,221.69287,,,-0.2881316,,,3.8205256,-127,-127,2134.0216090629933,,,,12946.252286246287,0.7574729,164910.02,1740760917.571,,,0.18225744,,,,,,, +199,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,164918.02,1740760925.576,,0.286234,,,,,,,, +200,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,165070.06,1740761077.699,,0.3228859,,,,,,,, +201,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,2.494933,2.490415,2.491453,,,165138.1,1740761145.78,,,,,,,,,, +202,,,,,,,,,0,-127,14.953334,,,135.61464,,,1023.0,,,,,,0,-127,,,,,,,165154.11,1740761161.794,,,,,7.5196896,,12.8632965,,, +203,-0.33,220.0,-0.20694537,3.2632322,,,,,-127,-127,,-0.32257998,,,129.49042,221.66783,,,-0.220008,,,3.5499997,-127,-127,2134.007123584381,,,,12946.243876921237,0.7452556,165210.14,1740761217.866,,,0.28047043,,,,,,, +204,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,165222.14,1740761229.877,,0.27227136,,,,,,,, +205,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,165374.23,1740761382.059,,0.2617994,,,,,,,, +206,,,,,,,,,0,-127,14.967279,,,135.62978,,,1023.0,,,,,,0,-127,,,,,,,165454.28,1740761462.149,,,,,7.4317155,,14.777826,,, +207,-0.33,220.0,-0.2754555,3.2660248,,,,,-127,-127,,-0.32257998,,,68.188965,221.8181,,,-0.2752943,,,3.1520646,-127,-127,2133.989234831151,,,,12946.247709169063,0.7452556,165510.3,1740761518.187,,,0.18062764,,,,,,, +208,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,165526.33,1740761534.235,,0.27052602,,,,,,,, +209,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,165678.39,1740761686.382,,0.2687807,,,,,,,, +210,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,2.4954517,2.4909341,2.4919415,,,165738.42,1740761746.451,,,,,,,,,, +211,,,,,,,,,0,-127,14.980621,,,135.64468,,,1023.0,,,,,,0,-127,,,,,,,165754.42,1740761762.465,,,,,7.3753986,,16.262564,,, +212,-0.33,220.0,-0.45,3.269206,,,,,-127,-127,,-0.32257998,,,11.592034,221.99342,,,-0.4351775,,,4.0090213,-127,-127,2133.974294069765,,,,12946.249907648202,0.7452556,165810.47,1740761818.541,,,0.1965284,,,,,,, +213,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,165830.47,1740761838.558,,0.26703537,,,,,,,, +214,,,,,0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,165858.53,1740761866.629,,,,,,,,,, +215,,,,,,,,,-127,0,,,,,,,,,,,,,-127,-127,,,,,,,165875.17,1740761883.272,,,,,,,,,, +216,,,,,,,,,-127,-127,,,,,,,,,,2133.7411,12946.269400000001,,-127,-127,,,,,,,165923.33,1740761931.47,,,,,,,,,, +217,,,,,,,,,-127,-127,,,,,,,,,,2133.7399,12946.2682,,-127,-127,,,,,,,165927.34,1740761935.479,,,,,,,,,, +218,,,,,,,,,-127,-127,,,,,,,,,,2133.7387999999996,12946.2675,,-127,-127,,,,,,,165935.34,1740761943.485,,,,,,,,,, +219,,,,,,,,,-127,-127,,,,,,,,,,2133.7375,12946.266599999999,,-127,-127,,,,,,,165939.34,1740761947.493,,,,,,,,,, +220,,,,,,,,,-127,-127,,,,,,,,,,2133.7363,12946.2653,,-127,-127,,,,,,,165943.34,1740761951.497,,,,,,,,,, +221,,,,,,,,,-127,-127,,,,,,,,,,2133.7354,12946.2643,,-127,-127,,,,,,,165947.34,1740761955.5,,,,,,,,,, +222,,,,,,,,,-127,-127,,,,,,,,,,2133.7343,12946.2633,,-127,-127,,,,,,,165955.36,1740761963.505,,,,,,,,,, +223,,,,,,,,,-127,-127,,,,,,,,,,2133.7335000000003,12946.2619,,-127,-127,,,,,,,165959.36,1740761967.514,,,,,,,,,, +224,,,,,,,,,-127,-127,,,,,,,,,,2133.7322,12946.2611,,-127,-127,,,,,,,165963.36,1740761971.518,,,,,,,,,, +225,,,,,,,,,-127,-127,,,,,,,,,,2133.7305,12946.2613,,-127,-127,,,,,,,165967.42,1740761975.575,,,,,,,,,, +226,,,,,,,,,-127,-127,,,,,,,,,,2133.7293999999997,12946.2602,,-127,-127,,,,,,,165975.42,1740761983.58,,,,,,,,,, +227,,,,,,,,,-127,-127,,,,,,,,,,2133.7284999999997,12946.2596,,-127,-127,,,,,,,165979.42,1740761987.585,,,,,,,,,, +228,,,,,,,,,-127,-127,,,,,,,,,,2133.7279,12946.2594,,-127,-127,,,,,,,165983.42,1740761991.588,,,,,,,,,, +229,,,,,,,,,-127,-127,,,,,,,,,,2133.7264999999998,12946.2582,,-127,-127,,,,,,,165987.42,1740761995.593,,,,,,,,,, +230,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,10,,,,,,,165995.42,1740762003.597,,,,,,,,,, +231,,,,,,,,,1,-127,14.879884,,,135.68837,,,1023.0,,,,,,1,-127,,,,,,,166051.44,1740762059.641,,,,,8.470744,,17.614456,,, diff --git a/tests/data/osu685-2025-056-0-28.tbd.csv b/tests/data/osu685-2025-056-0-28.tbd.csv new file mode 100644 index 0000000..82c5e5b --- /dev/null +++ b/tests/data/osu685-2025-056-0-28.tbd.csv @@ -0,0 +1,638 @@ +i,sci_m_present_secs_into_mission,sci_m_present_time,sci_microrider_isdp_file_state,sci_water_cond,sci_water_pressure,sci_water_temp +0,155692.23,1740751604.5,0,0.0,0.0,0.0 +1,155857.16,1740751769.429,-127,5.2773,0.384,25.106 +2,155873.16,1740751785.429,-127,5.27843,0.742,25.1171 +3,155889.16,1740751801.429,-127,5.27881,1.18,25.1187 +4,155905.16,1740751817.429,-127,5.27958,1.53,25.1247 +5,155921.16,1740751833.429,-127,5.27981,1.876,25.126 +6,155937.16,1740751849.429,-127,5.27978,2.24,25.123 +7,155953.16,1740751865.429,-127,5.27993,2.591,25.1231 +8,155969.16,1740751881.429,-127,5.28011,2.925,25.1231 +9,155985.16,1740751897.429,-127,5.27816,3.246,25.0985 +10,156001.16,1740751913.429,-127,5.27859,3.594,25.1051 +11,156017.16,1740751929.429,-127,5.27152,3.933,25.0262 +12,156033.16,1740751945.429,-127,5.26327,4.268,24.9366 +13,156049.16,1740751961.429,-127,5.2539,4.622,24.8384 +14,156065.16,1740751977.429,-127,5.252,4.983,24.818 +15,156081.16,1740751993.429,-127,5.24812,5.344,24.773 +16,156097.16,1740752009.429,-127,5.23022,5.687,24.5723 +17,156113.16,1740752025.429,-127,5.22085,6.017,24.4678 +18,156129.16,1740752041.429,-127,5.21638,6.362,24.4179 +19,156145.16,1740752057.429,-127,5.21176,6.701,24.3571 +20,156161.16,1740752073.429,-127,5.20861,7.045,24.303 +21,156177.16,1740752089.429,-127,5.20675,7.368,24.2726 +22,156193.16,1740752105.429,-127,5.20562,7.694,24.2601 +23,156209.16,1740752121.429,-127,5.20387,8.023,24.2381 +24,156225.16,1740752137.429,-127,5.20385,8.352,24.2358 +25,156241.16,1740752153.429,-127,5.20337,8.681,24.2304 +26,156257.16,1740752169.429,-127,5.20246,9.014,24.2199 +27,156273.16,1740752185.429,-127,5.20199,9.348,24.2146 +28,156289.16,1740752201.429,-127,5.19977,9.677,24.1917 +29,156305.16,1740752217.429,-127,5.19643,9.997,24.148 +30,156321.16,1740752233.429,-127,5.1959,10.318,24.1407 +31,156337.16,1740752249.429,-127,5.1952,10.64,24.1322 +32,156353.16,1740752265.429,-127,5.19412,10.967,24.1112 +33,156369.16,1740752281.429,-127,5.19286,11.299,24.0943 +34,156385.16,1740752297.429,-127,5.1917,11.633,24.0815 +35,156401.16,1740752313.429,-127,5.19014,11.962,24.0651 +36,156417.16,1740752329.429,-127,5.1848,12.289,24.0095 +37,156433.16,1740752345.429,-127,5.18343,12.622,23.9894 +38,156449.16,1740752361.429,-127,5.18382,12.95,23.9908 +39,156465.16,1740752377.429,-127,5.17558,13.273,23.8976 +40,156481.16,1740752393.429,-127,5.17457,13.609,23.8872 +41,156497.16,1740752409.429,-127,5.17467,13.934,23.8879 +42,156513.16,1740752425.429,-127,5.17431,14.257,23.8853 +43,156529.16,1740752441.429,-127,5.16816,14.572,23.8255 +44,156545.16,1740752457.429,-127,5.15334,14.864,23.6732 +45,156561.16,1740752473.429,-127,5.13111,15.175,23.4367 +46,156577.16,1740752489.429,-127,5.12505,15.497,23.3773 +47,156593.16,1740752505.429,-127,5.12027,15.808,23.3307 +48,156609.16,1740752521.429,-127,5.07895,16.133,22.9104 +49,156625.16,1740752537.429,-127,5.06072,16.416,22.7404 +50,156641.16,1740752553.429,-127,5.03149,16.724,22.4464 +51,156657.16,1740752569.429,-127,4.99236,17.03,22.0628 +52,156673.16,1740752585.429,-127,4.96239,17.321,21.7672 +53,156689.16,1740752601.429,-127,4.95456,17.611,21.6928 +54,156705.16,1740752617.429,-127,4.92466,17.911,21.3945 +55,156721.16,1740752633.429,-127,4.90524,18.206,21.2216 +56,156737.16,1740752649.429,-127,4.89215,18.483,21.0977 +57,156753.16,1740752665.429,-127,4.87967,18.773,20.9741 +58,156769.16,1740752681.429,-127,4.86643,19.058,20.8463 +59,156785.16,1740752697.429,-127,4.85894,19.359,20.783 +60,156801.16,1740752713.429,-127,4.84568,19.659,20.6109 +61,156817.16,1740752729.429,-127,4.8278,19.946,20.4544 +62,156833.16,1740752745.429,-127,4.80203,20.215,20.2181 +63,156849.16,1740752761.429,-127,4.78903,20.481,20.1033 +64,156865.16,1740752777.429,-127,4.77627,20.755,19.9824 +65,156881.16,1740752793.429,-127,4.76639,21.03,19.8789 +66,156897.16,1740752809.429,-127,4.74666,21.314,19.6633 +67,156913.16,1740752825.429,-127,4.73522,21.589,19.5544 +68,156929.16,1740752841.429,-127,4.72602,21.867,19.4625 +69,156945.16,1740752857.429,-127,4.71622,22.152,19.3701 +70,156961.16,1740752873.429,-127,4.70463,22.423,19.257 +71,156977.16,1740752889.429,-127,4.68078,22.702,19.0185 +72,156993.16,1740752905.429,-127,4.67239,22.966,18.9389 +73,157009.16,1740752921.429,-127,4.66253,23.234,18.8444 +74,157025.16,1740752937.429,-127,4.64221,23.507,18.6427 +75,157041.16,1740752953.429,-127,4.62193,23.772,18.4499 +76,157057.16,1740752969.429,-127,4.60706,24.039,18.3067 +77,157073.16,1740752985.429,-127,4.58581,24.314,18.1029 +78,157089.16,1740753001.429,-127,4.57654,24.58,18.0181 +79,157105.16,1740753017.429,-127,4.57163,24.842,17.9741 +80,157121.16,1740753033.429,-127,4.5624,25.113,17.8859 +81,157137.16,1740753049.429,-127,4.55244,25.377,17.791 +82,157153.16,1740753065.429,-127,4.53935,25.637,17.6656 +83,157169.16,1740753081.429,-127,4.53394,25.892,17.6168 +84,157185.16,1740753097.429,-127,4.51383,26.154,17.4218 +85,157201.16,1740753113.429,-127,4.51174,26.425,17.4069 +86,157217.16,1740753129.429,-127,4.50635,26.694,17.3578 +87,157233.16,1740753145.429,-127,4.50304,26.96,17.3259 +88,157249.16,1740753161.429,-127,4.49854,27.226,17.2847 +89,157265.16,1740753177.429,-127,4.49567,27.491,17.2595 +90,157281.16,1740753193.429,-127,4.48522,27.764,17.1581 +91,157297.16,1740753209.429,-127,4.48121,28.043,17.1223 +92,157313.16,1740753225.429,-127,4.47862,28.312,17.0966 +93,157329.16,1740753241.429,-127,4.47346,28.584,17.0459 +94,157345.16,1740753257.429,-127,4.46474,28.86,16.9591 +95,157361.16,1740753273.429,-127,4.46198,29.139,16.9335 +96,157377.16,1740753289.429,-127,4.46125,29.419,16.928 +97,157393.16,1740753305.429,-127,4.44093,29.701,16.7267 +98,157409.16,1740753321.429,-127,4.43329,29.982,16.6531 +99,157425.16,1740753337.429,-127,4.43292,30.248,16.6529 +100,157441.16,1740753353.429,-127,4.43274,30.507,16.652 +101,157457.16,1740753369.429,-127,4.43239,30.773,16.6467 +102,157473.16,1740753385.429,-127,4.42129,31.024,16.5399 +103,157489.16,1740753401.429,-127,4.41209,31.279,16.4518 +104,157505.16,1740753417.429,-127,4.40198,31.528,16.3521 +105,157521.16,1740753433.429,-127,4.39744,31.784,16.3083 +106,157537.16,1740753449.429,-127,4.39328,32.04,16.2684 +107,157553.16,1740753465.429,-127,4.3876,32.293,16.2142 +108,157569.16,1740753481.429,-127,4.385,32.551,16.1898 +109,157585.16,1740753497.429,-127,4.38097,32.804,16.1515 +110,157601.16,1740753513.429,-127,4.3744,33.051,16.0876 +111,157617.16,1740753529.429,-127,4.36962,33.298,16.0439 +112,157633.16,1740753545.429,-127,4.3547,33.545,15.9014 +113,157649.16,1740753561.429,-127,4.34858,33.793,15.8446 +114,157665.16,1740753577.429,-127,4.34612,34.038,15.8234 +115,157681.16,1740753593.429,-127,4.34084,34.281,15.7741 +116,157697.16,1740753609.429,-127,4.33201,34.524,15.6873 +117,157713.16,1740753625.429,-127,4.32338,34.765,15.6048 +118,157729.16,1740753641.429,-127,4.31546,35.008,15.533 +119,157745.16,1740753657.429,-127,4.30571,35.247,15.4354 +120,157761.16,1740753673.429,-127,4.30403,35.49,15.4229 +121,157777.16,1740753689.429,-127,4.28841,35.734,15.27 +122,157793.16,1740753705.429,-127,4.2842,35.97,15.231 +123,157809.16,1740753721.429,-127,4.27884,36.211,15.1828 +124,157825.16,1740753737.429,-127,4.26871,36.45,15.0843 +125,157841.16,1740753753.429,-127,4.25527,36.669,14.9531 +126,157857.16,1740753769.429,-127,4.24101,36.906,14.818 +127,157873.16,1740753785.429,-127,4.2286,37.13,14.6971 +128,157889.16,1740753801.429,-127,4.22024,37.352,14.6179 +129,157905.16,1740753817.429,-127,4.21507,37.584,14.5682 +130,157921.16,1740753833.429,-127,4.20848,37.805,14.5053 +131,157937.16,1740753849.429,-127,4.20214,38.039,14.4459 +132,157953.16,1740753865.429,-127,4.19547,38.272,14.3801 +133,157969.16,1740753881.429,-127,4.1871,38.501,14.2994 +134,157985.16,1740753897.429,-127,4.17796,38.724,14.2089 +135,158001.16,1740753913.429,-127,4.17365,38.954,14.1693 +136,158017.16,1740753929.429,-127,4.16793,39.174,14.1135 +137,158033.16,1740753945.429,-127,4.14957,39.398,13.9295 +138,158049.16,1740753961.429,-127,4.14498,39.623,13.8881 +139,158065.16,1740753977.429,-127,4.14144,39.846,13.854 +140,158081.16,1740753993.429,-127,4.13662,40.081,13.8067 +141,158097.16,1740754009.429,-127,4.12852,40.306,13.7269 +142,158113.16,1740754025.429,-127,4.11858,40.536,13.6261 +143,158129.16,1740754041.429,-127,4.11659,40.762,13.6096 +144,158145.16,1740754057.429,-127,4.11204,40.993,13.5643 +145,158161.16,1740754073.429,-127,4.10823,41.224,13.5277 +146,158177.16,1740754089.429,-127,4.10022,41.443,13.4483 +147,158193.16,1740754105.429,-127,4.08657,41.661,13.313 +148,158209.16,1740754121.429,-127,4.06964,41.886,13.153 +149,158225.16,1740754137.429,-127,4.05484,42.112,13.0156 +150,158241.16,1740754153.429,-127,4.04374,42.342,12.9042 +151,158257.16,1740754169.429,-127,4.03434,42.568,12.8113 +152,158273.16,1740754185.429,-127,4.02518,42.795,12.7233 +153,158289.16,1740754201.429,-127,4.02207,43.017,12.6951 +154,158305.16,1740754217.429,-127,4.00649,43.233,12.5397 +155,158321.16,1740754233.429,-127,4.00251,43.462,12.5024 +156,158337.16,1740754249.429,-127,3.99793,43.693,12.4579 +157,158353.16,1740754265.429,-127,3.99303,43.922,12.4103 +158,158369.16,1740754281.429,-127,3.9909,44.161,12.3894 +159,158385.16,1740754297.429,-127,3.98152,44.389,12.2998 +160,158401.16,1740754313.429,-127,3.97726,44.632,12.2533 +161,158417.16,1740754329.429,-127,3.97164,44.861,12.1969 +162,158433.16,1740754345.429,-127,3.96327,45.086,12.1144 +163,158449.16,1740754361.429,-127,3.95802,45.309,12.0606 +164,158465.16,1740754377.429,-127,3.95255,45.546,12.0096 +165,158481.16,1740754393.429,-127,3.94288,45.782,11.9092 +166,158497.16,1740754409.429,-127,3.93314,46.008,11.8101 +167,158513.16,1740754425.429,-127,3.93012,46.247,11.7825 +168,158529.16,1740754441.429,-127,3.92619,46.477,11.7427 +169,158545.16,1740754457.429,-127,3.92359,46.707,11.7172 +170,158561.16,1740754473.429,-127,3.92285,46.936,11.7094 +171,158577.16,1740754489.429,-127,3.90976,47.188,11.5764 +172,158593.16,1740754505.429,-127,3.90525,47.444,11.5302 +173,158609.16,1740754521.429,-127,3.89074,47.706,11.381 +174,158625.16,1740754537.429,-127,3.88548,47.968,11.3299 +175,158641.16,1740754553.429,-127,3.87677,48.227,11.2409 +176,158657.16,1740754569.429,-127,3.87066,48.483,11.1794 +177,158673.16,1740754585.429,-127,3.8609,48.73,11.0786 +178,158689.16,1740754601.429,-127,3.85835,48.988,11.0548 +179,158705.16,1740754617.429,-127,3.8572,49.238,11.0446 +180,158721.16,1740754633.429,-127,3.85258,49.484,10.9983 +181,158737.16,1740754649.429,-127,3.84642,49.728,10.933 +182,158753.16,1740754665.429,-127,3.84198,49.964,10.8912 +183,158769.16,1740754681.429,-127,3.82853,50.198,10.748 +184,158785.16,1740754697.429,-127,3.82231,50.439,10.6845 +185,158801.16,1740754713.429,-127,3.81801,50.682,10.6422 +186,158817.16,1740754729.429,-127,3.81229,50.933,10.5827 +187,158833.16,1740754745.429,-127,3.80739,51.173,10.5334 +188,158849.16,1740754761.429,-127,3.80388,51.409,10.4967 +189,158865.16,1740754777.429,-127,3.79823,51.648,10.4383 +190,158881.16,1740754793.429,-127,3.79533,51.886,10.4111 +191,158897.16,1740754809.429,-127,3.79071,52.118,10.3612 +192,158913.16,1740754825.429,-127,3.78144,52.347,10.2653 +193,158929.16,1740754841.429,-127,3.77207,52.574,10.1681 +194,158945.16,1740754857.429,-127,3.76887,52.798,10.1349 +195,158961.16,1740754873.429,-127,3.76631,53.016,10.1109 +196,158977.16,1740754889.429,-127,3.75301,53.242,9.9676 +197,158993.16,1740754905.429,-127,3.74999,53.467,9.9363 +198,159009.16,1740754921.429,-127,3.74606,53.701,9.8953 +199,159025.16,1740754937.429,-127,3.74331,53.943,9.8667 +200,159041.16,1740754953.429,-127,3.73596,54.174,9.7887 +201,159057.16,1740754969.429,-127,3.72975,54.419,9.7218 +202,159073.16,1740754985.429,-127,3.72577,54.651,9.6787 +203,159089.16,1740755001.429,-127,3.71708,54.886,9.5843 +204,159105.16,1740755017.429,-127,3.71258,55.107,9.5377 +205,159121.16,1740755033.429,-127,3.70487,55.336,9.4555 +206,159137.16,1740755049.429,-127,3.69164,55.56,9.3158 +207,159153.16,1740755065.429,-127,3.67869,55.787,9.1771 +208,159169.16,1740755081.429,-127,3.67336,56.016,9.1219 +209,159185.16,1740755097.429,-127,3.66378,56.241,9.0205 +210,159201.16,1740755113.429,-127,3.65949,56.471,8.9754 +211,159217.16,1740755129.429,-127,3.64711,56.696,8.8449 +212,159233.16,1740755145.429,-127,3.63927,56.929,8.7615 +213,159249.16,1740755161.429,-127,3.63689,57.161,8.7367 +214,159265.16,1740755177.429,-127,3.63535,57.393,8.7215 +215,159281.16,1740755193.429,-127,3.63139,57.623,8.6794 +216,159297.16,1740755209.429,-127,3.62071,57.856,8.5625 +217,159313.16,1740755225.429,-127,3.6054,58.084,8.3958 +218,159329.16,1740755241.429,-127,3.60316,58.314,8.3757 +219,159345.16,1740755257.429,-127,3.59844,58.549,8.326 +220,159361.16,1740755273.429,-127,3.5967,58.781,8.3074 +221,159377.16,1740755289.429,-127,3.59122,59.012,8.2472 +222,159393.16,1740755305.429,-127,3.57863,59.238,8.1091 +223,159409.16,1740755321.429,-127,3.575,59.469,8.0709 +224,159425.16,1740755337.429,-127,3.57047,59.687,8.0234 +225,159441.16,1740755353.429,-127,3.55893,59.92,7.8931 +226,159457.16,1740755369.429,-127,3.5555,60.147,7.8588 +227,159473.16,1740755385.429,-127,3.55146,60.372,7.8139 +228,159489.16,1740755401.429,-127,3.55099,60.602,7.8097 +229,159505.16,1740755417.429,-127,3.54937,60.824,7.791 +230,159521.16,1740755433.429,-127,3.54515,61.045,7.7437 +231,159537.16,1740755449.429,-127,3.53913,61.267,7.6763 +232,159553.16,1740755465.429,-127,3.53603,61.499,7.6411 +233,159569.16,1740755481.429,-127,3.53385,61.739,7.617 +234,159585.16,1740755497.429,-127,3.52892,61.961,7.562 +235,159601.16,1740755513.429,-127,3.52413,62.196,7.5077 +236,159617.16,1740755529.429,-127,3.51683,62.419,7.426 +237,159633.16,1740755545.429,-127,3.5131,62.643,7.3843 +238,159649.16,1740755561.429,-127,3.50769,62.862,7.3219 +239,159665.16,1740755577.429,-127,3.50604,63.078,7.3045 +240,159681.16,1740755593.429,-127,3.50137,63.295,7.2516 +241,159697.16,1740755609.429,-127,3.49235,63.522,7.1482 +242,159713.16,1740755625.429,-127,3.48972,63.741,7.1186 +243,159729.16,1740755641.429,-127,3.48605,63.954,7.0772 +244,159745.16,1740755657.429,-127,3.48439,64.173,7.0588 +245,159761.16,1740755673.429,-127,3.47622,64.395,6.965 +246,159777.16,1740755689.429,-127,3.47361,64.613,6.9361 +247,159793.16,1740755705.429,-127,3.46901,64.829,6.882 +248,159809.16,1740755721.429,-127,3.46435,65.047,6.8279 +249,159825.16,1740755737.429,-127,3.4621,65.263,6.8027 +250,159841.16,1740755753.429,-127,3.46152,65.489,6.7968 +251,159857.16,1740755769.429,-127,3.45906,65.702,6.7681 +252,159873.16,1740755785.429,-127,3.45159,65.919,6.6778 +253,159889.16,1740755801.429,-127,3.44823,66.136,6.6382 +254,159905.16,1740755817.429,-127,3.44693,66.36,6.6244 +255,159921.16,1740755833.429,-127,3.44569,66.587,6.6076 +256,159937.16,1740755849.429,-127,3.44341,66.813,6.5814 +257,159953.16,1740755865.429,-127,3.44077,67.027,6.5465 +258,159969.16,1740755881.429,-127,3.43963,67.255,6.5326 +259,159985.16,1740755897.429,-127,3.43426,67.471,6.4676 +260,160001.16,1740755913.429,-127,3.43053,67.689,6.4232 +261,160017.16,1740755929.429,-127,3.42585,67.909,6.3672 +262,160033.16,1740755945.429,-127,3.42324,68.131,6.3327 +263,160049.16,1740755961.429,-127,3.42181,68.355,6.3148 +264,160065.16,1740755977.429,-127,3.42011,68.582,6.2932 +265,160081.16,1740755993.429,-127,3.4191,68.804,6.2802 +266,160097.16,1740756009.429,-127,3.4165,69.029,6.2467 +267,160113.16,1740756025.429,-127,3.41614,69.255,6.2424 +268,160129.16,1740756041.429,-127,3.41582,69.473,6.2372 +269,160145.16,1740756057.429,-127,3.41501,69.701,6.2242 +270,160161.16,1740756073.429,-127,3.41362,69.924,6.207 +271,160177.16,1740756089.429,-127,3.41137,70.156,6.1782 +272,160193.16,1740756105.429,-127,3.40859,70.378,6.1432 +273,160209.16,1740756121.429,-127,3.40708,70.591,6.1252 +274,160225.16,1740756137.429,-127,3.40529,70.811,6.1032 +275,160241.16,1740756153.429,-127,3.40378,71.035,6.0848 +276,160257.16,1740756169.429,-127,3.4015,71.251,6.0563 +277,160273.16,1740756185.429,-127,3.40033,71.474,6.0413 +278,160289.16,1740756201.429,-127,3.39868,71.693,6.0216 +279,160305.16,1740756217.429,-127,3.39075,71.917,5.9272 +280,160321.16,1740756233.429,-127,3.38929,72.141,5.9128 +281,160337.16,1740756249.429,-127,3.38333,72.366,5.8385 +282,160353.16,1740756265.429,-127,3.38256,72.597,5.8303 +283,160369.16,1740756281.429,-127,3.3821,72.826,5.8224 +284,160385.16,1740756297.429,-127,3.37866,73.053,5.774 +285,160401.16,1740756313.429,-127,3.376,73.285,5.743 +286,160417.16,1740756329.429,-127,3.3706,73.5,5.6809 +287,160433.16,1740756345.429,-127,3.36952,73.733,5.6678 +288,160449.16,1740756361.429,-127,3.36469,73.949,5.6107 +289,160465.16,1740756377.429,-127,3.36295,74.179,5.5917 +290,160481.16,1740756393.429,-127,3.35889,74.403,5.5435 +291,160497.16,1740756409.429,-127,3.35581,74.629,5.507 +292,160513.16,1740756425.429,-127,3.35461,74.85,5.4927 +293,160529.16,1740756441.429,-127,3.35262,75.072,5.4691 +294,160545.16,1740756457.429,-127,3.35172,75.296,5.4577 +295,160561.16,1740756473.429,-127,3.35087,75.517,5.449 +296,160577.16,1740756489.429,-127,3.34826,75.73,5.4138 +297,160593.16,1740756505.429,-127,3.34707,75.951,5.3991 +298,160609.16,1740756521.429,-127,3.34574,76.168,5.3823 +299,160625.16,1740756537.429,-127,3.34276,76.382,5.3429 +300,160641.16,1740756553.429,-127,3.34,76.604,5.3101 +301,160657.16,1740756569.429,-127,3.33921,76.824,5.2983 +302,160673.16,1740756585.429,-127,3.33772,77.036,5.2787 +303,160689.16,1740756601.429,-127,3.33451,77.245,5.2363 +304,160705.16,1740756617.429,-127,3.33351,77.456,5.2239 +305,160721.16,1740756633.429,-127,3.33295,77.667,5.2163 +306,160737.16,1740756649.429,-127,3.33281,77.876,5.2142 +307,160753.16,1740756665.429,-127,3.33236,78.086,5.208 +308,160769.16,1740756681.429,-127,3.33241,78.297,5.2072 +309,160785.16,1740756697.429,-127,3.33227,78.492,5.2051 +310,160801.16,1740756713.429,-127,3.33211,78.699,5.2018 +311,160817.16,1740756729.429,-127,3.33148,78.906,5.1922 +312,160833.16,1740756745.429,-127,3.33109,79.106,5.1863 +313,160849.16,1740756761.429,-127,3.32971,79.306,5.1674 +314,160865.16,1740756777.429,-127,3.32775,79.517,5.141 +315,160881.16,1740756793.429,-127,3.325,79.717,5.1046 +316,160897.16,1740756809.429,-127,3.32222,79.92,5.0696 +317,160913.16,1740756825.429,-127,3.32067,80.115,5.0494 +318,160929.16,1740756841.429,-127,3.31964,80.313,5.0372 +319,160945.16,1740756857.429,-127,3.31871,80.508,5.0244 +320,160961.16,1740756873.429,-127,3.31708,80.704,5.0021 +321,160977.16,1740756889.429,-127,3.31685,80.896,4.9988 +322,160993.16,1740756905.429,-127,3.31647,81.102,4.9925 +323,161009.16,1740756921.429,-127,3.31581,81.295,4.9829 +324,161025.16,1740756937.429,-127,3.3152,81.496,4.9734 +325,161041.16,1740756953.429,-127,3.31308,81.695,4.9446 +326,161057.16,1740756969.429,-127,3.31263,81.886,4.9363 +327,161073.16,1740756985.429,-127,3.31285,82.085,4.9373 +328,161089.16,1740757001.429,-127,3.31122,82.275,4.913 +329,161105.16,1740757017.429,-127,3.30902,82.474,4.8856 +330,161120.16,1740757032.429,-127,3.30718,82.654,4.8609 +331,161136.16,1740757048.429,-127,3.30583,82.856,4.8433 +332,161152.16,1740757064.429,-127,3.30494,83.041,4.8324 +333,161168.16,1740757080.429,-127,3.30487,83.243,4.8307 +334,161184.16,1740757096.429,-127,3.30486,83.438,4.8298 +335,161200.16,1740757112.429,-127,3.30265,83.634,4.7963 +336,161216.16,1740757128.429,-127,3.30103,83.824,4.7712 +337,161232.16,1740757144.429,-127,3.30002,84.018,4.7573 +338,161248.16,1740757160.429,-127,3.29903,84.219,4.7443 +339,161264.16,1740757176.429,-127,3.29731,84.402,4.7208 +340,161280.16,1740757192.429,-127,3.29573,84.591,4.6984 +341,161296.16,1740757208.429,-127,3.29562,84.786,4.6972 +342,161312.16,1740757224.429,-127,3.29521,84.969,4.6916 +343,161328.16,1740757240.429,-127,3.29465,85.161,4.6837 +344,161344.16,1740757256.429,-127,3.29394,85.36,4.6736 +345,161360.16,1740757272.429,-127,3.29362,85.544,4.6687 +346,161376.16,1740757288.429,-127,3.2933,85.747,4.664 +347,161392.16,1740757304.429,-127,3.29071,85.934,4.6271 +348,161408.16,1740757320.429,-127,3.28947,86.129,4.6108 +349,161424.16,1740757336.429,-127,3.28872,86.329,4.6014 +350,161440.16,1740757352.429,-127,3.28751,86.521,4.5862 +351,161456.16,1740757368.429,-127,3.28642,86.71,4.5724 +352,161472.16,1740757384.429,-127,3.28551,86.909,4.5593 +353,161488.16,1740757400.429,-127,3.28453,87.103,4.5456 +354,161504.16,1740757416.429,-127,3.28325,87.295,4.5277 +355,161520.16,1740757432.429,-127,3.28312,87.491,4.5258 +356,161536.16,1740757448.429,-127,3.28299,87.688,4.5235 +357,161552.16,1740757464.429,-127,3.28207,87.886,4.5103 +358,161568.16,1740757480.429,-127,3.28143,88.091,4.4993 +359,161584.16,1740757496.429,-127,3.28042,88.284,4.4846 +360,161600.16,1740757512.429,-127,3.27976,88.488,4.4744 +361,161616.16,1740757528.429,-127,3.27965,88.687,4.4713 +362,161632.16,1740757544.429,-127,3.27944,88.885,4.4681 +363,161648.16,1740757560.429,-127,3.27908,89.082,4.4608 +364,161664.16,1740757576.429,-127,3.27826,89.292,4.4482 +365,161680.16,1740757592.429,-127,3.2775,89.486,4.4368 +366,161696.16,1740757608.429,-127,3.27563,89.697,4.4149 +367,161712.16,1740757624.429,-127,3.27513,89.891,4.4081 +368,161728.16,1740757640.429,-127,3.27432,90.093,4.3979 +369,161744.16,1740757656.429,-127,3.27466,90.3,4.3977 +370,161760.16,1740757672.429,-127,3.27258,90.502,4.372 +371,161776.16,1740757688.429,-127,3.27102,90.701,4.3508 +372,161792.16,1740757704.429,-127,3.2704,90.909,4.3426 +373,161808.16,1740757720.429,-127,3.26908,91.118,4.3212 +374,161824.16,1740757736.429,-127,3.2673,91.327,4.2997 +375,161840.16,1740757752.429,-127,3.26665,91.535,4.2899 +376,161856.16,1740757768.429,-127,3.26612,91.743,4.281 +377,161872.16,1740757784.429,-127,3.26552,91.951,4.272 +378,161888.16,1740757800.429,-127,3.26502,92.162,4.2634 +379,161904.16,1740757816.429,-127,3.26582,92.37,4.2686 +380,161920.16,1740757832.429,-127,3.26707,92.572,4.2784 +381,161936.16,1740757848.429,-127,3.26738,92.777,4.278 +382,161952.16,1740757864.429,-127,3.26703,92.986,4.2704 +383,161968.16,1740757880.429,-127,3.26555,93.2,4.2506 +384,161984.16,1740757896.429,-127,3.26463,93.408,4.2318 +385,162000.16,1740757912.429,-127,3.26393,93.617,4.222 +386,162016.16,1740757928.429,-127,3.26321,93.824,4.2103 +387,162032.16,1740757944.429,-127,3.2631,94.028,4.2075 +388,162048.16,1740757960.429,-127,3.26317,94.227,4.2048 +389,162064.16,1740757976.429,-127,3.26313,94.44,4.2005 +390,162080.16,1740757992.429,-127,3.26289,94.627,4.1961 +391,162096.16,1740758008.429,-127,3.26266,94.842,4.1911 +392,162112.16,1740758024.429,-127,3.26241,95.065,4.1855 +393,162128.16,1740758040.429,-127,3.26195,95.286,4.1762 +394,162144.16,1740758056.429,-127,3.26159,95.512,4.1696 +395,162160.16,1740758072.429,-127,3.26079,95.728,4.1577 +396,162176.16,1740758088.429,-127,3.26065,95.954,4.1549 +397,162192.16,1740758104.429,-127,3.25952,96.173,4.1396 +398,162208.16,1740758120.429,-127,3.25772,96.395,4.1161 +399,162224.16,1740758136.429,-127,3.25605,96.617,4.0942 +400,162240.16,1740758152.429,-127,3.25541,96.843,4.086 +401,162256.16,1740758168.429,-127,3.25518,97.073,4.0822 +402,162272.16,1740758184.429,-127,3.25438,97.294,4.0711 +403,162288.16,1740758200.429,-127,3.25369,97.534,4.0602 +404,162304.16,1740758216.429,-127,3.25256,97.762,4.0446 +405,162320.16,1740758232.429,-127,3.25234,97.992,4.0412 +406,162336.16,1740758248.429,-127,3.25178,98.224,4.0333 +407,162352.16,1740758264.429,-127,3.25025,98.452,4.0124 +408,162368.16,1740758280.429,-127,3.24993,98.679,4.0081 +409,162384.16,1740758296.429,-127,3.24879,98.906,3.9933 +410,162400.16,1740758312.429,-127,3.24791,99.126,3.9807 +411,162416.16,1740758328.429,-127,3.24687,99.351,3.9665 +412,162432.16,1740758344.429,-127,3.24593,99.58,3.9541 +413,162448.16,1740758360.429,-127,3.24501,99.809,3.9421 +414,162464.16,1740758376.429,-127,3.24497,100.036,3.9406 +415,162480.16,1740758392.429,-127,3.24444,100.257,3.9333 +416,162496.16,1740758408.429,-127,3.24403,100.482,3.9274 +417,162512.16,1740758424.429,-127,3.24341,100.713,3.9181 +418,162528.16,1740758440.429,-127,3.24287,100.933,3.9106 +419,162544.16,1740758456.429,-127,3.24233,101.152,3.9032 +420,162560.16,1740758472.429,-127,3.24142,101.371,3.8901 +421,162575.98,1740758488.263,-127,3.24097,101.58,3.8844 +422,162591.98,1740758504.263,-127,3.24093,101.701,3.8828 +423,162607.98,1740758520.263,-127,3.24084,101.727,3.882 +424,162623.98,1740758536.263,-127,3.24086,101.701,3.8825 +425,162639.98,1740758552.263,-127,3.24083,101.633,3.8825 +426,162655.98,1740758568.263,-127,3.24127,101.506,3.8886 +427,162671.98,1740758584.263,-127,3.24188,101.298,3.8966 +428,162687.98,1740758600.263,-127,3.24264,100.991,3.9094 +429,162703.98,1740758616.263,-127,3.24369,100.547,3.9246 +430,162719.98,1740758632.263,-127,3.24462,99.979,3.9391 +431,162735.98,1740758648.263,-127,3.24727,99.338,3.9766 +432,162751.98,1740758664.263,-127,3.24976,98.687,4.0106 +433,162767.98,1740758680.263,-127,3.25199,98.033,4.0414 +434,162783.19,1740758695.458,-127,3.25353,97.373,4.0638 +435,162799.19,1740758711.458,-127,3.25546,96.702,4.0916 +436,162815.19,1740758727.458,-127,3.26016,96.019,4.1544 +437,162831.19,1740758743.458,-127,3.26192,95.345,4.1832 +438,162847.19,1740758759.458,-127,3.26265,94.68,4.1967 +439,162863.19,1740758775.458,-127,3.263,94.004,4.2068 +440,162879.19,1740758791.458,-127,3.26399,93.34,4.2281 +441,162895.19,1740758807.458,-127,3.26761,92.672,4.2878 +442,162911.19,1740758823.458,-127,3.26553,92.011,4.2744 +443,162927.19,1740758839.458,-127,3.26689,91.344,4.2993 +444,162943.19,1740758855.458,-127,3.27141,90.686,4.3624 +445,162959.19,1740758871.458,-127,3.27476,90.034,4.4094 +446,162975.19,1740758887.458,-127,3.27847,89.376,4.4588 +447,162991.19,1740758903.458,-127,3.27941,88.714,4.4734 +448,163007.19,1740758919.458,-127,3.28053,88.055,4.4938 +449,163023.19,1740758935.458,-127,3.28252,87.411,4.5231 +450,163039.19,1740758951.458,-127,3.28561,86.763,4.5665 +451,163055.19,1740758967.458,-127,3.28809,86.118,4.5995 +452,163071.19,1740758983.458,-127,3.29258,85.471,4.6626 +453,163087.19,1740758999.458,-127,3.29506,84.818,4.696 +454,163103.19,1740759015.458,-127,3.29784,84.174,4.737 +455,163119.19,1740759031.458,-127,3.30231,83.519,4.8006 +456,163135.19,1740759047.458,-127,3.30405,82.879,4.8282 +457,163151.19,1740759063.458,-127,3.30631,82.238,4.859 +458,163167.19,1740759079.458,-127,3.31084,81.615,4.9195 +459,163183.19,1740759095.458,-127,3.31175,80.978,4.937 +460,163199.19,1740759111.458,-127,3.31537,80.33,4.9898 +461,163215.19,1740759127.458,-127,3.31811,79.687,5.0276 +462,163231.19,1740759143.458,-127,3.3254,79.056,5.1249 +463,163247.19,1740759159.458,-127,3.32861,78.432,5.1665 +464,163263.19,1740759175.458,-127,3.33112,77.814,5.2003 +465,163279.19,1740759191.458,-127,3.33308,77.201,5.2263 +466,163295.19,1740759207.458,-127,3.33681,76.603,5.2764 +467,163311.19,1740759223.458,-127,3.34125,75.994,5.3354 +468,163327.19,1740759239.458,-127,3.3473,75.375,5.4133 +469,163343.19,1740759255.458,-127,3.35114,74.758,5.4605 +470,163359.19,1740759271.458,-127,3.35346,74.153,5.4892 +471,163375.19,1740759287.458,-127,3.3647,73.539,5.6219 +472,163391.19,1740759303.458,-127,3.37232,72.941,5.7134 +473,163407.19,1740759319.458,-127,3.3787,72.345,5.7924 +474,163423.19,1740759335.458,-127,3.38363,71.761,5.8568 +475,163439.19,1740759351.458,-127,3.39412,71.181,5.9846 +476,163455.19,1740759367.458,-127,3.40224,70.579,6.0817 +477,163471.19,1740759383.458,-127,3.40526,69.987,6.1171 +478,163487.19,1740759399.458,-127,3.40942,69.414,6.1684 +479,163503.19,1740759415.458,-127,3.4154,68.847,6.2433 +480,163519.19,1740759431.458,-127,3.42078,68.274,6.3138 +481,163535.19,1740759447.458,-127,3.42726,67.709,6.397 +482,163551.19,1740759463.458,-127,3.43857,67.159,6.5354 +483,163567.19,1740759479.458,-127,3.44396,66.592,6.5998 +484,163583.19,1740759495.458,-127,3.45262,66.032,6.7047 +485,163599.19,1740759511.458,-127,3.46346,65.467,6.8324 +486,163615.19,1740759527.458,-127,3.46956,64.897,6.903 +487,163631.19,1740759543.458,-127,3.47665,64.317,6.9844 +488,163647.19,1740759559.458,-127,3.48053,63.749,7.0282 +489,163663.19,1740759575.458,-127,3.49118,63.199,7.1519 +490,163679.19,1740759591.458,-127,3.50623,62.626,7.3244 +491,163695.19,1740759607.458,-127,3.5234,62.044,7.517 +492,163711.19,1740759623.458,-127,3.53415,61.487,7.6378 +493,163727.19,1740759639.458,-127,3.54604,60.956,7.7705 +494,163743.19,1740759655.458,-127,3.55802,60.395,7.9021 +495,163759.19,1740759671.458,-127,3.5678,59.822,8.0097 +496,163775.19,1740759687.458,-127,3.59064,59.251,8.2635 +497,163791.19,1740759703.458,-127,3.6036,58.691,8.4025 +498,163807.19,1740759719.458,-127,3.61694,58.131,8.542 +499,163823.19,1740759735.458,-127,3.63043,57.595,8.686 +500,163839.19,1740759751.458,-127,3.63376,57.045,8.7197 +501,163855.19,1740759767.458,-127,3.66033,56.491,9.0109 +502,163871.19,1740759783.458,-127,3.67087,55.919,9.1194 +503,163887.19,1740759799.458,-127,3.69266,55.336,9.356 +504,163903.19,1740759815.458,-127,3.70469,54.763,9.4774 +505,163919.19,1740759831.458,-127,3.71916,54.204,9.6329 +506,163935.19,1740759847.458,-127,3.73244,53.643,9.7718 +507,163951.19,1740759863.458,-127,3.7455,53.089,9.9103 +508,163967.19,1740759879.458,-127,3.75598,52.532,10.0209 +509,163983.19,1740759895.458,-127,3.77423,51.959,10.2117 +510,163999.19,1740759911.458,-127,3.78786,51.396,10.3542 +511,164015.19,1740759927.458,-127,3.80338,50.854,10.5132 +512,164031.19,1740759943.458,-127,3.80567,50.295,10.5334 +513,164047.19,1740759959.458,-127,3.8235,49.735,10.7167 +514,164063.19,1740759975.458,-127,3.8323,49.167,10.8081 +515,164079.19,1740759991.458,-127,3.84792,48.575,10.9691 +516,164095.19,1740760007.458,-127,3.86539,48.003,11.1484 +517,164111.19,1740760023.458,-127,3.88975,47.43,11.3891 +518,164127.19,1740760039.458,-127,3.92709,46.873,11.7796 +519,164143.19,1740760055.458,-127,3.95203,46.316,12.0275 +520,164159.19,1740760071.458,-127,3.95836,45.77,12.0837 +521,164175.19,1740760087.458,-127,3.9642,45.225,12.1391 +522,164191.19,1740760103.458,-127,3.97224,44.657,12.2192 +523,164207.19,1740760119.458,-127,3.99079,44.107,12.4024 +524,164223.19,1740760135.458,-127,4.00165,43.566,12.5125 +525,164239.19,1740760151.458,-127,4.01295,43.031,12.6236 +526,164255.19,1740760167.458,-127,4.02532,42.485,12.7423 +527,164271.19,1740760183.458,-127,4.03903,41.948,12.8795 +528,164287.19,1740760199.458,-127,4.06244,41.427,13.1133 +529,164303.19,1740760215.458,-127,4.10032,40.888,13.4813 +530,164319.19,1740760231.458,-127,4.11982,40.351,13.6582 +531,164335.19,1740760247.458,-127,4.13659,39.829,13.8266 +532,164351.19,1740760263.458,-127,4.14651,39.301,13.9211 +533,164367.19,1740760279.458,-127,4.16534,38.777,14.111 +534,164383.19,1740760295.458,-127,4.18956,38.255,14.3477 +535,164399.19,1740760311.458,-127,4.20222,37.745,14.4658 +536,164415.19,1740760327.458,-127,4.22728,37.25,14.7119 +537,164431.19,1740760343.458,-127,4.24679,36.733,14.8994 +538,164447.19,1740760359.458,-127,4.26494,36.216,15.0708 +539,164463.19,1740760375.458,-127,4.29686,35.713,15.38 +540,164479.19,1740760391.458,-127,4.32623,35.213,15.6597 +541,164495.19,1740760407.458,-127,4.34071,34.733,15.7923 +542,164511.19,1740760423.458,-127,4.35293,34.241,15.9023 +543,164527.19,1740760439.458,-127,4.36796,33.753,16.0462 +544,164543.19,1740760455.458,-127,4.39664,33.263,16.3195 +545,164559.19,1740760471.458,-127,4.41509,32.807,16.4941 +546,164575.19,1740760487.458,-127,4.41871,32.321,16.5255 +547,164591.19,1740760503.458,-127,4.42963,31.836,16.6304 +548,164607.19,1740760519.458,-127,4.44518,31.369,16.7748 +549,164623.19,1740760535.458,-127,4.4678,30.907,17.0017 +550,164639.19,1740760551.458,-127,4.47616,30.448,17.08 +551,164655.19,1740760567.458,-127,4.48887,29.98,17.2043 +552,164670.19,1740760582.458,-127,4.50386,29.547,17.3434 +553,164686.19,1740760598.458,-127,4.50855,29.092,17.3828 +554,164702.19,1740760614.458,-127,4.52526,28.642,17.5419 +555,164718.19,1740760630.458,-127,4.54468,28.169,17.732 +556,164734.19,1740760646.458,-127,4.55808,27.68,17.8574 +557,164750.19,1740760662.458,-127,4.56683,27.188,17.939 +558,164766.19,1740760678.458,-127,4.57541,26.693,18.0206 +559,164782.19,1740760694.458,-127,4.61227,26.209,18.3822 +560,164798.19,1740760710.458,-127,4.61532,25.728,18.4019 +561,164814.19,1740760726.458,-127,4.61854,25.254,18.4295 +562,164830.19,1740760742.458,-127,4.67058,24.766,18.9543 +563,164846.19,1740760758.458,-127,4.69427,24.289,19.1873 +564,164862.19,1740760774.458,-127,4.72817,23.82,19.5158 +565,164878.19,1740760790.458,-127,4.73421,23.39,19.5685 +566,164894.19,1740760806.458,-127,4.74265,22.978,19.6601 +567,164910.19,1740760822.458,-127,4.77251,22.536,19.9459 +568,164926.19,1740760838.458,-127,4.78848,22.092,20.0957 +569,164942.19,1740760854.458,-127,4.80252,21.669,20.2304 +570,164958.19,1740760870.458,-127,4.82634,21.239,20.4426 +571,164974.19,1740760886.458,-127,4.85187,20.829,20.6891 +572,164990.19,1740760902.458,-127,4.86079,20.439,20.801 +573,165006.19,1740760918.458,-127,4.86522,20.073,20.8523 +574,165022.19,1740760934.458,-127,4.8772,19.685,20.9688 +575,165038.19,1740760950.458,-127,4.88684,19.288,21.06 +576,165054.19,1740760966.458,-127,4.90199,18.888,21.2027 +577,165070.19,1740760982.458,-127,4.90466,18.484,21.2232 +578,165086.19,1740760998.458,-127,4.92566,18.064,21.4309 +579,165102.19,1740761014.458,-127,4.95831,17.663,21.7721 +580,165118.19,1740761030.458,-127,4.96794,17.273,21.8658 +581,165134.19,1740761046.458,-127,4.98984,16.864,22.0814 +582,165150.19,1740761062.458,-127,5.01845,16.486,22.3453 +583,165166.19,1740761078.458,-127,5.0682,16.122,22.8425 +584,165182.19,1740761094.458,-127,5.11822,15.824,23.3628 +585,165198.19,1740761110.458,-127,5.13451,15.504,23.5185 +586,165214.19,1740761126.458,-127,5.14028,15.163,23.5637 +587,165230.19,1740761142.458,-127,5.15594,14.796,23.7157 +588,165246.19,1740761158.458,-127,5.1628,14.452,23.7725 +589,165262.19,1740761174.458,-127,5.16827,14.118,23.8254 +590,165278.19,1740761190.458,-127,5.16921,13.78,23.8332 +591,165294.19,1740761206.458,-127,5.1704,13.435,23.8432 +592,165310.19,1740761222.458,-127,5.17189,13.089,23.8574 +593,165326.19,1740761238.458,-127,5.17521,12.758,23.8964 +594,165342.19,1740761254.458,-127,5.17689,12.424,23.916 +595,165358.19,1740761270.458,-127,5.17818,12.083,23.9339 +596,165374.19,1740761286.458,-127,5.17811,11.735,23.9349 +597,165390.19,1740761302.458,-127,5.1811,11.395,23.9674 +598,165406.19,1740761318.458,-127,5.18393,11.071,24.002 +599,165422.19,1740761334.458,-127,5.1863,10.749,24.0321 +600,165438.19,1740761350.458,-127,5.19001,10.433,24.0794 +601,165454.19,1740761366.458,-127,5.1914,10.112,24.0938 +602,165470.19,1740761382.458,-127,5.19198,9.782,24.1007 +603,165486.19,1740761398.458,-127,5.19332,9.455,24.1163 +604,165502.19,1740761414.458,-127,5.19612,9.134,24.1561 +605,165518.19,1740761430.458,-127,5.19804,8.812,24.1781 +606,165534.19,1740761446.458,-127,5.19815,8.483,24.1805 +607,165550.19,1740761462.458,-127,5.19954,8.143,24.1962 +608,165566.19,1740761478.458,-127,5.20028,7.805,24.2059 +609,165582.19,1740761494.458,-127,5.20116,7.467,24.2151 +610,165598.19,1740761510.458,-127,5.20172,7.133,24.2219 +611,165614.19,1740761526.458,-127,5.20177,6.8,24.2247 +612,165630.19,1740761542.458,-127,5.20172,6.469,24.2252 +613,165646.19,1740761558.458,-127,5.20205,6.137,24.2304 +614,165662.19,1740761574.458,-127,5.20289,5.805,24.2415 +615,165678.19,1740761590.458,-127,5.20587,5.487,24.2796 +616,165694.19,1740761606.458,-127,5.2095,5.178,24.3399 +617,165710.19,1740761622.458,-127,5.21065,4.868,24.3667 +618,165726.19,1740761638.458,-127,5.21958,4.565,24.4782 +619,165742.19,1740761654.458,-127,5.23172,4.279,24.6185 +620,165758.19,1740761670.458,-127,5.24468,4.017,24.7596 +621,165774.19,1740761686.458,-127,5.2514,3.755,24.8333 +622,165790.19,1740761702.458,-127,5.26477,3.487,24.9797 +623,165806.19,1740761718.458,-127,5.26891,3.222,25.017 +624,165822.19,1740761734.458,-127,5.2735,2.927,25.0634 +625,165838.19,1740761750.458,-127,5.27471,2.619,25.0768 +626,165854.19,1740761766.458,-127,5.27614,2.311,25.0911 +627,165870.19,1740761782.458,-127,5.27569,1.972,25.0864 +628,165886.19,1740761798.458,-127,5.27563,1.632,25.0863 +629,165902.19,1740761814.458,-127,5.27545,1.318,25.0853 +630,165918.19,1740761830.458,-127,5.2758,0.999,25.0917 +631,165934.19,1740761846.458,-127,5.27599,0.672,25.095 +632,165950.19,1740761862.458,-127,5.2759,0.317,25.0948 +633,165967.19,1740761879.458,0,,, +634,165971.19,1740761883.458,1,,, +635,165975.48,1740761887.763,2,,, +636,166143.48,1740762055.763,0,,, diff --git a/tests/data/osu685-2025-056-0-29.sbd.csv b/tests/data/osu685-2025-056-0-29.sbd.csv new file mode 100644 index 0000000..1c2f5b9 --- /dev/null +++ b/tests/data/osu685-2025-056-0-29.sbd.csv @@ -0,0 +1,3 @@ +i,c_battpos,c_de_oil_vol,c_fin,c_heading,c_pitch,c_wpt_lat,c_wpt_lon,m_altitude,m_argos_is_xmitting,m_argos_on,m_battery,m_battpos,m_climb_tot_time,m_coulomb_amphr_total,m_depth,m_de_oil_vol,m_digifin_leakdetect_reading,m_dive_tot_time,m_fin,m_gps_lat,m_gps_lon,m_heading,m_iridium_on,m_iridium_status,m_lat,m_leakdetect_voltage,m_leakdetect_voltage_forward,m_leakdetect_voltage_science,m_lon,m_pitch,m_present_secs_into_mission,m_present_time,m_raw_altitude,m_roll,m_speed,m_thruster_power,m_vacuum,m_vehicle_temp,m_veh_temp,m_water_depth,m_water_vx,m_water_vy +0,0.9,430.0,0.0,3.2696242,0.4538,2018.2,12958.76,0.0,0,1,14.882781,0.8533541,3898.204,135.74844,0.0,429.6012,1023.0,3663.848,-0.06658136,2133.7264999999998,12946.2582,4.040437,1,9,2133.7264999656923,2.4995115,2.4946275,2.4956656,12946.258199999827,0.60562927,166630.52,1740762639.053,110.0,0.5305801,0.31648806,0.0,8.470744,0.0,20.560488,-1.0,0.07487223,0.048579656 +1,,,,,,,,,0,1,14.879866,,,135.74965,,,1023.0,,,,,,1,9,,2.4996643,2.4940171,2.4953601,,,166630.52,1740762639.053,,,,,8.864295,,20.607374,,, diff --git a/tests/data/osu685-2025-056-0-29.tbd.csv b/tests/data/osu685-2025-056-0-29.tbd.csv new file mode 100644 index 0000000..fc1d591 --- /dev/null +++ b/tests/data/osu685-2025-056-0-29.tbd.csv @@ -0,0 +1,4 @@ +i,sci_m_present_secs_into_mission,sci_m_present_time,sci_microrider_isdp_file_state,sci_water_cond,sci_water_pressure,sci_water_temp +0,166725.45,1740762637.723,0,0.0,0.0,0.0 +1,166730.27,1740762642.538,0,,, +2,166754.27,1740762666.538,0,,, diff --git a/tests/data/osu685-2025-056-0-30.sbd.csv b/tests/data/osu685-2025-056-0-30.sbd.csv new file mode 100644 index 0000000..157f065 --- /dev/null +++ b/tests/data/osu685-2025-056-0-30.sbd.csv @@ -0,0 +1,212 @@ +i,c_battpos,c_de_oil_vol,c_fin,c_heading,c_pitch,c_wpt_lat,c_wpt_lon,m_altitude,m_argos_is_xmitting,m_argos_on,m_battery,m_battpos,m_climb_tot_time,m_coulomb_amphr_total,m_depth,m_de_oil_vol,m_digifin_leakdetect_reading,m_dive_tot_time,m_fin,m_gps_lat,m_gps_lon,m_heading,m_iridium_on,m_iridium_status,m_lat,m_leakdetect_voltage,m_leakdetect_voltage_forward,m_leakdetect_voltage_science,m_lon,m_pitch,m_present_secs_into_mission,m_present_time,m_raw_altitude,m_roll,m_speed,m_thruster_power,m_vacuum,m_vehicle_temp,m_veh_temp,m_water_depth,m_water_vx,m_water_vy +0,0.9,430.0,0.0,3.2696242,0.4538,2018.2,12958.76,0.0,0,1,14.873372,0.8519023,3898.204,135.766,1.5889671,429.62625,1023.0,3663.848,-0.06658136,2133.7264999999998,12946.2582,4.040437,1,9,2133.7264999656923,2.498657,2.4948719,2.4959707,12946.258199999827,0.60562927,166801.27,1740762809.911,110.0,0.5305801,0.31648806,0.0,8.847633,0.0,21.248156,-1.0,0.07487223,0.048579656 +1,,,,,,,,,-127,-127,,,,,,,,,,2133.5651000000003,12946.0865,,-127,-127,,,,,,,166838.92,1740762847.587,,,,,,,,,, +2,,,,,,,,,-127,-127,,,,,,,,,,2133.5642,12946.085,,-127,-127,,,,,,,166842.94,1740762851.597,,,,,,,,,, +3,,,,,,,,,-127,-127,,,,,,,,,,2133.5631000000003,12946.084200000001,,-127,-127,,,,,,,166850.94,1740762860.004,,,,,,,,,, +4,,,,,,,,,-127,-127,,,,,,,,,,2133.5617,12946.083,,-127,-127,,,,,,,166854.94,1740762864.011,,,,,,,,,, +5,,,,,,,,,-127,-127,,,,,,,,,,2133.5609,12946.0822,,-127,-127,,,,,,,166858.94,1740762868.015,,,,,,,,,, +6,,,,,,,,,-127,-127,,,,,,,,,,2133.5596,12946.081,,-127,-127,,,,,,,166862.94,1740762872.018,,,,,,,,,, +7,,,,,,,,,-127,-127,,,,,,,,,,2133.5587,12946.0802,,-127,-127,,,,,,,166866.94,1740762876.022,,,,,,,,,, +8,,,,,,,,,-127,-127,,,,,,,,,,2133.5575000000003,12946.0796,,-127,-127,,,,,,,166874.98,1740762884.075,,,,,,,,,, +9,,,,,,,,,-127,-127,,,,,,,,,,2133.5568,12946.078599999999,,-127,-127,,,,,,,166878.98,1740762888.077,,,,,,,,,, +10,,,,,,,,,-127,-127,,,,,,,,,,2133.5563,12946.0778,,-127,-127,,,,,,,166882.98,1740762892.08,,,,,,,,,, +11,,,,,,,,,-127,-127,,,,,,,,,,2133.5558,12946.077,,-127,-127,,,,,,,166890.98,1740762900.083,,,,,,,,,, +12,,,,,,,,,-127,-127,,,,,,,,,,2133.5552000000002,12946.0762,,-127,-127,,,,,,,166895.0,1740762904.091,,,,,,,,,, +13,,,,,,,,,-127,-127,,,,,,,,,,2133.5547,12946.0754,,-127,-127,,,,,,,166899.0,1740762908.096,,,,,,,,,, +14,,,,,,,,,-127,-127,,,,,,,,,,2133.5542,12946.0745,,-127,-127,,,,,,,166903.0,1740762912.099,,,,,,,,,, +15,,,,,,,,,-127,-127,,,,,,,,,,2133.5537000000004,12946.0737,,-127,-127,,,,,,,166907.0,1740762916.102,,,,,,,,,, +16,0.0,-380.0,0.0,3.293537,,,,,-127,-127,,-0.032225884,,,2.3492954,-364.98883,,,0.01447421,,,4.040437,-127,-127,2133.553699965671,,,,12946.073699999826,0.60562927,166911.0,1740762920.106,,0.5305801,0.31648806,,,,,,0.07487223,0.048579656 +17,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,166915.0,1740762924.108,,,,,,,,,, +18,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,166924.75,1740762933.856,110.0,,,,,,,,, +19,,,,,,,,,0,0,14.893059,,,135.77455,,,1023.0,,,,,,0,99,,,,,,,166936.75,1740762945.867,,,,,6.9285293,,21.928009,,, +20,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,167064.88,1740763074.062,,0.21991149,,,,,,,, +21,-0.10023007,-380.0,0.45,3.2896676,,,,,-127,-127,,-0.032225884,,,61.749935,-365.18918,,,0.4526829,,,0.92327917,-127,-127,2133.5958202821207,,,,12946.133593294875,-0.47298422,167214.53,1740763223.816,,,0.44811773,,,,,,, +22,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,167218.55,1740763227.824,,0.23038346,,,,,,,, +23,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,167226.55,1740763235.83,110.0,,,,,,,,, +24,,,,,,,,,0,-127,15.133948,,,135.78212,,,1023.0,,,,,,0,-127,,2.4960012,2.4919415,2.493254,,,167238.6,1740763247.894,,,,,6.75758,,22.471111,,, +25,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,167370.66,1740763380.024,,0.2268928,,,,,,,, +26,-0.10023007,-380.0,0.45,3.2851393,,,,,-127,-127,,-0.032225884,,,121.74458,-365.21423,,,0.4526829,,,2.300344,-127,-127,2133.593867056469,,,,12946.203168162918,-0.4537856,167516.58,1740763526.034,,,0.33005664,,,,,,, +27,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,167520.6,1740763530.042,,,,,,,,,, +28,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,167524.6,1740763534.046,,0.23387411,,,,,,,, +29,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,167528.6,1740763538.049,110.0,,,,,,,,, +30,,,,,,,,,0,-127,15.187734,,,135.78847,,,1023.0,,,,,,0,-127,,,,,,,167540.6,1740763550.056,,,,,6.742917,,22.525812,,, +31,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,167676.67,1740763686.216,,0.23736478,,,,,,,, +32,-0.10023007,-380.0,0.45,3.2825768,,,,,-127,-127,,-0.033677656,,,175.58531,-365.33948,,,0.456184,,,2.6843164,-127,-127,2133.558898346811,,,,12946.248520390718,-0.44680429,167818.33,1740763827.958,,,0.30250746,,,,,,, +33,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,167822.34,1740763831.967,,,,,,,,,, +34,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,167830.34,1740763839.972,110.0,0.23911011,,,,,,,, +35,,,,,,,,,0,-127,15.208841,,,135.79459,,,1023.0,,,,,,0,-127,,2.4960623,2.491911,2.4930403,,,167842.39,1740763852.037,,,,,6.7419176,,22.424225,,, +36,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,167982.44,1740763992.158,,0.2268928,,,,,,,, +37,-0.10023007,-380.0,0.1556515,3.281438,,,,,-127,-127,,-0.033677656,,,224.03249,-365.4647,,,0.1534266,,,2.9635692,-127,-127,2133.524280344455,,,,12946.283643333603,-0.429351,168120.14,1740764129.949,,,0.30126515,,,,,,, +38,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,168124.16,1740764133.957,,,,,,,,,, +39,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,168132.16,1740764141.962,110.0,,,,,,,,, +40,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,168136.16,1740764145.969,,0.23561946,,,,,,,, +41,,,,,,,,,0,-127,15.2155,,,135.80092,,,1023.0,,,,,,0,-127,,,,,,,168144.16,1740764153.975,,,,,6.8065653,,21.88503,,, +42,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,168288.23,1740764298.14,,0.23387411,,,,,,,, +43,-0.10023007,-380.0,0.4116749,3.2808115,,,,,-127,-127,,-0.033677656,,,270.31744,-365.64,,,0.4235072,,,2.7227137,-127,-127,2133.4925195390083,,,,12946.325140353796,-0.43284166,168420.28,1740764430.259,,,0.28609085,,,,,,, +44,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,168424.3,1740764434.267,,,,,,,,,, +45,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,168438.03,1740764448.017,110.0,,,,,,,,, +46,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,168442.03,1740764452.025,,0.24085544,,,,,,,, +47,,,,,,,,,0,-127,15.213542,,,135.80849,,,1023.0,,,,,,0,-127,,2.4972832,2.492155,2.4929488,,,168446.05,1740764456.03,,,,,6.849886,,21.127033,,, +48,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,168594.31,1740764604.386,,0.23561946,,,,,,,, +49,-0.10023007,-380.0,0.45,3.2796693,,,,,-127,-127,,-0.033677656,,,317.7667,-365.81534,,,0.4491818,,,2.2183135,-127,-127,2133.4648854519583,,,,12946.37423466776,-0.42760566,168722.4,1740764732.559,,,0.27848336,,,,,,, +50,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,168726.42,1740764736.568,,,,,,,,,, +51,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,168738.42,1740764748.576,110.0,,,,,,,,, +52,,,,,,,,,0,-127,15.231893,,,135.81459,,,1023.0,,,,,,0,-127,,,,,,,168746.42,1740764756.585,,0.24085544,,,6.912201,,20.26354,,, +53,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,168900.11,1740764910.364,,0.23736478,,,,,,,, +54,-0.10023007,-380.0,0.42759436,3.2794085,,,,,-127,-127,,-0.033677656,,,362.34094,-365.86545,,,0.4316764,,,2.6703537,-127,-127,2133.434345240023,,,,12946.417546753326,-0.4171337,169024.16,1740765034.482,,,0.29927126,,,,,,, +55,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,169028.17,1740765038.49,,,,,,,,,, +56,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,169040.17,1740765050.499,110.0,,,,,,,,, +57,,,,,,,,,0,-127,15.2320385,,,135.82094,,,1023.0,,,,,,0,-127,,2.4958792,2.491453,2.4925823,,,169048.17,1740765058.509,,,,,6.951856,,19.34144,,, +58,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,169052.17,1740765062.517,,0.24085544,,,,,,,, +59,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,169205.88,1740765216.305,,0.23911011,,,,,,,, +60,0.0455382,-380.0,0.37105176,3.2793908,,,,,-127,-127,,-0.033677656,,,405.53708,-365.94058,,,0.3686567,,,2.7157323,-127,-127,2133.4019239020827,,,,12946.45682046229,-0.40491638,169325.97,1740765336.472,,,0.2646446,,,,,,, +61,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,169329.98,1740765340.478,,,,,,,,,, +62,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,169341.98,1740765352.486,110.0,,,,,,,,, +63,,,,,,,,,0,-127,15.228854,,,135.82729,,,1023.0,,,,,,0,-127,,,,,,,169349.98,1740765360.496,,,,,7.028167,,18.403711,,, +64,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,169357.98,1740765368.505,,0.24260077,,,,,,,, +65,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,169511.81,1740765522.41,,0.23212878,,,,,,,, +66,0.110481724,-380.0,0.3903378,3.2794466,,,,,-127,-127,,0.10714408,,,453.1764,-366.04077,,,0.377993,,,2.7209682,-127,-127,2133.3687321030598,,,,12946.49407685557,-0.45727625,169627.84,1740765638.518,,,0.27315998,,,,,,, +67,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,169631.86,1740765642.526,,,,,,,,,, +68,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,169643.86,1740765654.535,110.0,,,,,,,,, +69,,,,,,,,,0,-127,15.224354,,,135.83461,,,1023.0,,,,,,0,-127,,2.4955127,2.4911783,2.4923077,,,169651.86,1740765662.544,,,,,7.075486,,17.434725,,, +70,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,169663.92,1740765674.615,,0.24260077,,,,,,,, +71,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,169815.95,1740765826.737,,0.23911011,,,,,,,, +72,0.110481724,-380.0,0.33567283,3.280496,,,,,-127,-127,,0.10714408,,,498.34464,-366.01572,,,0.3628216,,,2.851868,-127,-127,2133.340174785565,,,,12946.532918047575,-0.4590216,169929.86,1740765940.704,,,0.24850182,,,,,,, +73,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,169933.86,1740765944.706,,,,,,,,,, +74,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,169945.86,1740765956.712,110.0,,,,,,,,, +75,,,,,,,,,0,-127,15.2191925,,,135.84096,,,1023.0,,,,,,0,-127,,,,,,,169953.86,1740765964.722,,,,,7.1181407,,16.446203,,, +76,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,169969.88,1740765980.738,,0.2443461,,,,,,,, +77,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,170121.95,1740766132.908,,0.24260077,,,,,,,, +78,0.110481724,-380.0,0.31206346,3.281606,,,,,-127,-127,,0.10714408,,,542.82385,-365.71515,,,0.3056371,,,2.8134708,-127,-127,2133.3126055481257,,,,12946.571946510476,-0.44331363,170231.61,1740766242.629,,,0.29346505,,,,,,, +79,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,170235.61,1740766246.638,,,,,,,,,, +80,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,170247.62,1740766258.646,110.0,,,,,,,,, +81,,,,,,,,,0,-127,15.211214,,,135.84853,,,1023.0,,,,,,0,-127,,2.4953907,2.4910867,2.491911,,,170255.62,1740766266.656,,,,,7.195118,,15.465494,,, +82,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,170275.69,1740766286.726,,0.2443461,,,,,,,, +83,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,170427.72,1740766438.855,,0.24609143,,,,,,,, +84,0.110481724,-380.0,0.41800666,3.282504,,,,,-127,-127,,0.10714408,,,586.85156,-365.01385,,,0.3896633,,,2.6249752,-127,-127,2133.281741132943,,,,12946.606661370004,-0.43982297,170531.8,1740766542.996,,,0.37145045,,,,,,, +85,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,170535.8,1740766546.998,,,,,,,,,, +86,,,,,,,,,0,-127,15.206928,,,135.85463,,,1023.0,,,,,,0,-127,,,,,,,170555.8,1740766567.009,,,,,7.2424374,,14.504322,,, +87,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,170561.42,1740766572.632,110.0,,,,,,,,, +88,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,170581.42,1740766592.646,,0.24260077,,,,,,,, +89,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,170733.53,1740766744.833,,0.24085544,,,,,,,, +90,0.110481724,-380.0,0.45,3.283834,,,,,-127,-127,,0.10714408,,,629.31116,-364.28754,,,0.4480148,,,2.591814,-127,-127,2133.2547460799883,,,,12946.6452329321,-0.44156832,170833.56,1740766844.932,,,0.28298464,,,,,,, +91,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,170837.58,1740766848.94,,,,,,,,,, +92,,,,,,,,,0,-127,15.203476,,,135.8622,,,1023.0,,,,,,0,-127,,2.4949634,2.4906287,2.491575,,,170857.58,1740766868.953,,,,,7.3177485,,13.531428,,, +93,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,170861.58,1740766872.96,110.0,,,,,,,,, +94,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,170885.64,1740766897.033,,0.24609143,,,,,,,, +95,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,171039.4,1740767050.89,,0.24609143,,,,,,,, +96,0.110481724,-380.0,0.44351026,3.284957,,,,,-127,-127,,0.10859585,,,672.05585,-363.78662,,,0.4270083,,,2.630211,-127,-127,2133.2247167073547,,,,12946.67939785127,-0.43982297,171134.36,1740767145.9,,,0.29619843,,,,,,, +97,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,171138.36,1740767149.908,,,,,,,,,, +98,,,,,,,,,0,-127,15.194892,,,135.86977,,,1023.0,,,,,,0,-127,,,,,,,171158.4,1740767169.952,,,,,7.3657346,,12.640586,,, +99,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,171162.4,1740767173.958,110.0,,,,,,,,, +100,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,171190.4,1740767201.976,,0.24085544,,,,,,,, +101,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,171344.28,1740767355.938,,0.23736478,,,,,,,, +102,0.110481724,-380.0,0.45,3.2866387,,,,,-127,-127,,0.10859585,,,712.40076,-363.01016,,,0.4526829,,,2.3492131,-127,-127,2133.2006224935285,,,,12946.719211327962,-0.43807763,171436.31,1740767448.033,,,0.22649774,,,,,,, +103,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,171440.33,1740767452.041,,,,,,,,,, +104,,,,,,,,,0,-127,15.185296,,,135.87587,,,1023.0,,,,,,0,-127,,2.4948413,2.490354,2.491453,,,171460.33,1740767472.054,,,,,7.42705,,11.753651,,, +105,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,171464.33,1740767476.062,110.0,,,,,,,,, +106,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,171496.33,1740767508.082,,0.24609143,,,,,,,, +107,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,171648.42,1740767660.261,,0.24260077,,,,,,,, +108,0.110481724,-380.0,0.45,3.2898712,,,,,-127,-127,,0.10859585,,,747.92236,-362.5343,,,0.4526829,,,2.3945918,-127,-127,2133.1852969298425,,,,12946.7614169368,-0.43109632,171736.47,1740767748.35,,,0.2644651,,,,,,, +109,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,171740.47,1740767752.358,,,,,,,,,, +110,,,,,,,,,0,-127,15.147425,,,135.88344,,,1023.0,,,,,,0,-127,,,,,,,171762.08,1740767773.981,,,,,7.467038,,10.917509,,, +111,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,171766.12,1740767778.026,110.0,,,,,,,,, +112,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,171802.12,1740767814.047,,0.24260077,,,,,,,, +113,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,171954.22,1740767966.226,,0.24958208,,,,,,,, +114,0.110481724,-380.0,0.45,3.2926939,,,,,-127,-127,,0.10859585,,,784.0617,-361.75787,,,0.4515159,,,1.8936822,-127,-127,2133.1787772439966,,,,12946.810403960228,-0.42586035,172038.25,1740768050.311,,,0.26919135,,,,,,, +115,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,172042.25,1740768054.314,,,,,,,,,, +116,,,,,,,,,0,-127,15.169051,,,135.891,,,1023.0,,,,,,0,-127,,2.494597,2.49011,2.4911172,,,172062.25,1740768074.326,,,,,7.5170236,,10.206398,,, +117,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,172106.27,1740768118.357,,0.24609143,,,,,,,, +118,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,172175.9,1740768188.053,110.0,,,,,,,,, +119,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,172259.97,1740768272.158,,0.24609143,,,,,,,, +120,0.110481724,-380.0,0.45,3.2944741,,,,,-127,-127,,0.10859585,,,822.6484,-361.15677,,,0.4515159,,,1.8954276,-127,-127,2133.1782163550624,,,,12946.865770102968,-0.4171337,172340.02,1740768352.247,,,0.24868368,,,,,,, +121,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,172344.02,1740768356.255,,,,,,,,,, +122,,,,,,,,,0,-127,15.157714,,,135.89833,,,1023.0,,,,,,0,-127,,,,,,,172364.02,1740768376.268,,,,,7.545682,,9.51873,,, +123,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,172412.06,1740768424.334,,0.24958208,,,,,,,, +124,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,172476.11,1740768488.414,110.0,,,,,,,,, +125,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,172564.16,1740768576.514,,0.24783675,,,,,,,, +126,0.110481724,-380.0,0.45,3.2962272,,,,,-127,-127,,0.110047616,,,860.92615,-360.4805,,,0.4515159,,,1.7296213,-127,-127,2133.1780475092496,,,,12946.92110656755,-0.41887903,172641.77,1740768654.173,,,0.26130244,,,,,,, +127,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,172645.77,1740768658.182,,,,,,,,,, +128,,,,,,,,,0,-127,15.141552,,,135.90468,,,1023.0,,,,,,0,-127,,2.4943223,2.489713,2.4909036,,,172665.81,1740768678.232,,,,,7.570341,,8.936557,,, +129,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,172717.81,1740768730.267,,0.24783675,,,,,,,, +130,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,172777.86,1740768790.339,110.0,,,,,,,,, +131,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,172869.89,1740768882.434,,0.24085544,,,,,,,, +132,0.110481724,-380.0,0.45,3.2982438,,,,,-127,-127,,0.110047616,,,898.08716,-377.33658,,,0.4515159,,,1.813397,-127,-127,2133.1810288526867,,,,12946.975720694072,-0.44331363,172941.95,1740768954.532,,,0.2688127,,,,,,, +133,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,172945.95,1740768958.54,,,,,,,,,, +134,,,,,,,,,0,-127,15.138047,,,135.91225,,,1023.0,,,,,,0,-127,,,,,,,172965.95,1740768978.552,,,,,7.5903354,,8.409084,,, +135,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,173023.61,1740769036.234,,0.24609143,,,,,,,, +136,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,173079.61,1740769092.272,110.0,,,,,,,,, +137,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,173175.66,1740769188.366,,0.2443461,,,,,,,, +138,0.110481724,-380.0,0.42260367,3.2993433,,,,,-127,-127,,0.110047616,,,939.2875,-377.31155,,,0.4526829,,,2.7471483,-127,-127,2133.1656458294765,,,,12947.024513617389,-0.44331363,173243.69,1740769256.448,,,0.31780297,,,,,,, +139,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,173247.7,1740769260.456,,,,,,,,,, +140,,,,,,,,,0,-127,15.127493,,,135.91957,,,1023.0,,,,,,0,-127,,2.4941087,2.4896214,2.490751,,,173267.75,1740769280.519,,,,,7.6086636,,7.959756,,, +141,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,173327.75,1740769340.553,,0.2443461,,,,,,,, +142,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,173397.4,1740769410.25,110.0,,,,,,,,, +143,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,173481.44,1740769494.336,,0.24260077,,,,,,,, +144,0.110481724,-380.0,0.4409797,3.3003697,,,,,-127,-127,,0.110047616,,,979.46606,-377.31155,,,0.4363445,,,2.6371925,-127,-127,2133.1380179639336,,,,12947.058895625043,-0.43633232,173545.5,1740769558.433,,,0.26131925,,,,,,, +145,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,173549.52,1740769562.441,,,,,,,,,, +146,,,,,,,,,0,-127,15.111673,,,135.92714,,,1023.0,,,,,,0,-127,,,,,,,173569.52,1740769582.455,,,,,7.633656,,7.5690355,,, +147,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,173633.55,1740769646.531,,0.24958208,,,,,,,, +148,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,173697.56,1740769710.574,110.0,,,,,,,,, +149,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,173785.6,1740769798.667,,0.2635447,,,,,,,, +150,-0.33,220.0,-0.45,3.3045237,,,,,-127,-127,,-0.32112822,,,991.67883,209.42024,,,-0.3558194,,,4.1119957,-127,-127,2133.118422642226,,,,12947.083652352636,0.7853982,173845.64,1740769858.743,,,0.3145316,,,,,,, +151,,,,,-0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,173849.64,1740769862.751,,,,,,,,,, +152,,,,,,,,,0,-127,13.836632,,,136.17226,,,1023.0,,,,,,0,-127,,2.4954212,2.4908426,2.4916666,,,173869.66,1740769882.764,,,,,7.8139367,,7.2759953,,, +153,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,173937.7,1740769950.863,,0.24958208,,,,,,,, +154,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,174089.78,1740770103.026,,0.28274333,,,,,,,, +155,-0.33,220.0,-0.3079111,3.300117,,,,,-127,-127,,-0.32112822,,,869.5749,220.29028,,,-0.3569864,,,3.3213615,-127,-127,2133.0767457754723,,,,12947.0751897913,0.863938,174145.81,1740770159.094,,,0.3067389,,,,,,, +156,,,,,,,,,0,-127,14.860179,,,136.18837,,,1023.0,,,,,,0,-127,,,,,,,174169.83,1740770183.115,,,,,8.002214,,7.178315,,, +157,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,174241.89,1740770255.216,,0.28448868,,,,,,,, +158,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,174393.97,1740770407.38,,0.27750736,,,,,,,, +159,-0.33,220.0,-0.3946684,3.296332,,,,,-127,-127,,-0.32112822,,,750.1083,220.5658,,,-0.3593205,,,3.4749506,-127,-127,2133.0314671036176,,,,12947.07962339214,0.8342674,174445.97,1740770459.411,,,0.3122927,,,,,,, +160,,,,,,,,,0,-127,14.935614,,,136.20473,,,1023.0,,,,,,0,-127,,2.4942307,2.4898658,2.4907203,,,174469.97,1740770483.431,,,,,8.021209,,6.982955,,, +161,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,174546.0,1740770559.509,,0.29496065,,,,,,,, +162,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,174698.1,1740770711.688,,0.28797933,,,,,,,, +163,-0.33,220.0,-0.2212162,3.2936704,,,,,-127,-127,,-0.31967643,,,638.6727,220.84131,,,-0.237377,,,3.3702307,-127,-127,2132.9911956088454,,,,12947.075977930142,0.83077675,174746.14,1740770759.758,,,0.3543511,,,,,,, +164,,,,,,,,,0,-127,14.948003,,,136.22084,,,1023.0,,,,,,0,-127,,,,,,,174770.14,1740770783.779,,,,,8.017877,,7.006398,,, +165,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,174850.19,1740770863.864,,0.25307274,,,,,,,, +166,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,175002.28,1740771016.042,,0.2565634,,,,,,,, +167,-0.33,220.0,-0.055578753,3.2918887,,,,,-127,-127,,-0.31967643,,,533.91376,221.01662,,,-0.04342263,,,3.1363566,-127,-127,2132.9502462359183,,,,12947.082500547616,0.80808747,175046.28,1740771060.069,,,0.30645958,,,,,,, +168,,,,,,,,,0,-127,14.947319,,,136.23598,,,1023.0,,,,,,0,-127,,2.4940782,2.4897435,2.4905982,,,175070.28,1740771084.088,,,,,7.96156,,7.4127474,,, +169,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,175154.33,1740771168.18,,0.2617994,,,,,,,, +170,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,175306.42,1740771320.36,,0.25830874,,,,,,,, +171,-0.33,220.0,-0.2828984,3.2902577,,,,,-127,-127,,-0.31967643,,,432.4812,221.31718,,,-0.2659581,,,3.7542033,-127,-127,2132.913049589415,,,,12947.075298372638,0.7941248,175346.45,1740771360.421,,,0.2963949,,,,,,, +172,,,,,,,,,0,-127,14.944168,,,136.25209,,,1023.0,,,,,,0,-127,,,,,,,175370.45,1740771384.441,,,,,7.900578,,8.225446,,, +173,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,175457.5,1740771471.535,,0.26005405,,,,,,,, +174,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,175609.78,1740771623.892,,0.28797933,,,,,,,, +175,-0.33,220.0,-0.24730836,3.2894926,,,,,-127,-127,,-0.31967643,,,336.18088,221.31718,,,-0.2916327,,,3.2375858,-127,-127,2132.87602759632,,,,12947.074468826497,0.7958701,175649.78,1740771663.916,,,0.25663698,,,,,,, +176,,,,,,,,,0,-127,14.94662,,,136.26845,,,1023.0,,,,,,0,-127,,2.4942307,2.49011,2.4907815,,,175673.78,1740771687.935,,,,,7.788944,,9.409328,,, +177,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,175761.81,1740771776.025,,0.2565634,,,,,,,, +178,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,175914.1,1740771928.382,,0.31939524,,,,,,,, +179,-0.33,220.0,-0.45,3.2896385,,,,,-127,-127,,-0.31967643,,,249.07579,221.39232,,,-0.4515159,,,4.0456734,-127,-127,2132.842890813049,,,,12947.07401628593,0.7819075,175950.12,1740771964.446,,,0.24455298,,,,,,, +180,,,,,,,,,0,-127,14.949271,,,136.28336,,,1023.0,,,,,,0,-127,,,,,,,175974.12,1740771988.459,,,,,7.7076344,,10.792479,,, +181,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,176066.17,1740772080.551,,0.25481808,,,,,,,, +182,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,176218.27,1740772232.73,,0.28797933,,,,,,,, +183,-0.33,220.0,-0.28438854,3.2910302,,,,,-127,-127,,-0.31967643,,,171.64111,221.46745,,,-0.2974679,,,3.7175512,-127,-127,2132.8158907524753,,,,12947.068657709895,0.7696902,176250.27,1740772264.755,,,0.26359758,,,,,,, +184,,,,,,,,,0,-127,14.957407,,,136.2985,,,1023.0,,,,,,0,-127,,2.4946582,2.4903846,2.4913309,,,176274.28,1740772288.776,,,,,7.570341,,12.324102,,, +185,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,176370.31,1740772384.875,,0.27925268,,,,,,,, +186,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,176522.39,1740772537.039,,0.26703537,,,,,,,, +187,-0.33,220.0,-0.2412019,3.2934804,,,,,-127,-127,,-0.31967643,,,103.472946,221.56764,,,-0.2142183,,,3.6215582,-127,-127,2132.7955845656643,,,,12947.05816804182,0.7417649,176550.4,1740772565.06,,,0.25252578,,,,,,, +188,,,,,,,,,0,-127,14.967777,,,136.31459,,,1023.0,,,,,,0,-127,,,,,,,176574.45,1740772589.129,,,,,7.467038,,14.054994,,, +189,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,176674.5,1740772689.231,,0.2565634,,,,,,,, +190,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,176826.6,1740772841.41,,0.25830874,,,,,,,, +191,-0.33,220.0,-0.21341847,3.2966523,,,,,-127,-127,,-0.31967643,,,41.55372,221.64278,,,-0.2171131,,,3.6180675,-127,-127,2132.773150197436,,,,12947.055585394748,0.7400196,176850.6,1740772865.43,,,0.17153472,,,,,,, +192,,,,,,,,,0,-127,14.978351,,,136.32973,,,1023.0,,,,,,0,-127,,2.495177,2.4909036,2.491972,,,176874.61,1740772889.45,,,,,7.403057,,15.676483,,, +193,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,176978.64,1740772993.548,,0.25481808,,,,,,,, +194,,,,,0.4538,,,,-127,-127,,,,,,,,,,,,,-127,-127,,,,,,,177058.69,1740773073.634,,,,,,,,,, +195,,,,,,,,,-127,0,,,,,,,,,,,,,-127,-127,,,,,,,177075.22,1740773090.18,,,,,,,,,, +196,,,,,,,,,-127,-127,,,,,,,,,,2132.3997000000004,12946.4684,,-127,-127,,,,,,,177123.39,1740773138.385,,,,,,,,,, +197,,,,,,,,,-127,-127,,,,,,,,,,2132.3989,12946.466499999999,,-127,-127,,,,,,,177127.4,1740773142.396,,,,,,,,,, +198,,,,,,,,,-127,-127,,,,,,,,,,2132.3974000000003,12946.4648,,-127,-127,,,,,,,177131.4,1740773146.399,,,,,,,,,, +199,,,,,,,,,-127,-127,,,,,,,,,,2132.3969,12946.462,,-127,-127,,,,,,,177139.4,1740773154.405,,,,,,,,,, +200,,,,,,,,,-127,-127,,,,,,,,,,2132.3959000000004,12946.459799999999,,-127,-127,,,,,,,177143.4,1740773158.414,,,,,,,,,, +201,,,,,,,,,-127,-127,,,,,,,,,,2132.3946,12946.457999999999,,-127,-127,,,,,,,177147.4,1740773162.417,,,,,,,,,, +202,,,,,,,,,-127,-127,,,,,,,,,,2132.3936000000003,12946.456099999998,,-127,-127,,,,,,,177151.4,1740773166.42,,,,,,,,,, +203,,,,,,,,,-127,-127,,,,,,,,,,2132.3926,12946.4547,,-127,-127,,,,,,,177155.42,1740773170.424,,,,,,,,,, +204,,,,,,,,,-127,-127,,,,,,,,,,2132.3913000000007,12946.4533,,-127,-127,,,,,,,177163.42,1740773178.429,,,,,,,,,, +205,,,,,,,,,-127,-127,,,,,,,,,,2132.3904,12946.4515,,-127,-127,,,,,,,177167.42,1740773182.438,,,,,,,,,, +206,,,,,,,,,-127,-127,,,,,,,,,,2132.3893000000003,12946.449700000001,,-127,-127,,,,,,,177171.42,1740773186.442,,,,,,,,,, +207,,,,,,,,,0,-127,14.916313,,,136.371,,,1023.0,,,2132.3884,12946.4476,,0,-127,,,,,,,177175.42,1740773190.446,,,,,8.013545,,17.016655,,, +208,,,,,,,,,-127,-127,,,,,,,,,,2132.3874,12946.4457,,-127,-127,,,,,,,177183.42,1740773198.451,,,,,,,,,, +209,,,,,,,,,-127,-127,,,,,,,,,,2132.3861,12946.4439,,-127,-127,,,,,,,177187.48,1740773202.513,,,,,,,,,, +210,,,,,,,,,-127,-127,,,,,,,,,,,,,-127,10,,,,,,,177195.48,1740773210.518,,,,,,,,,, diff --git a/tests/data/osu685-2025-056-0-30.tbd.csv b/tests/data/osu685-2025-056-0-30.tbd.csv new file mode 100644 index 0000000..c4c9234 --- /dev/null +++ b/tests/data/osu685-2025-056-0-30.tbd.csv @@ -0,0 +1,641 @@ +i,sci_m_present_secs_into_mission,sci_m_present_time,sci_microrider_isdp_file_state,sci_water_cond,sci_water_pressure,sci_water_temp +0,166896.27,1740762808.538,0,0.0,0.0,0.0 +1,167011.78,1740762924.054,-127,5.27522,0.322,25.0864 +2,167027.78,1740762940.054,-127,5.27561,0.569,25.0895 +3,167043.78,1740762956.054,-127,5.27605,0.884,25.0926 +4,167059.78,1740762972.054,-127,5.27616,1.213,25.0927 +5,167075.78,1740762988.054,-127,5.27634,1.536,25.0929 +6,167091.78,1740763004.054,-127,5.2764,1.864,25.0914 +7,167107.78,1740763020.054,-127,5.27615,2.165,25.0892 +8,167123.78,1740763036.054,-127,5.2765,2.521,25.0879 +9,167139.78,1740763052.054,-127,5.26834,2.833,25.0001 +10,167155.78,1740763068.054,-127,5.26756,3.133,24.9926 +11,167171.78,1740763084.054,-127,5.25181,3.444,24.8192 +12,167187.78,1740763100.054,-127,5.24505,3.771,24.7504 +13,167203.78,1740763116.054,-127,5.22525,4.102,24.5238 +14,167219.78,1740763132.054,-127,5.21255,4.423,24.374 +15,167235.78,1740763148.054,-127,5.21103,4.75,24.3523 +16,167251.78,1740763164.054,-127,5.2077,5.077,24.2955 +17,167267.78,1740763180.054,-127,5.20572,5.4,24.2695 +18,167283.78,1740763196.054,-127,5.20394,5.723,24.2489 +19,167299.78,1740763212.054,-127,5.20322,6.047,24.2405 +20,167315.78,1740763228.054,-127,5.20257,6.376,24.2318 +21,167331.78,1740763244.054,-127,5.20178,6.713,24.2228 +22,167347.78,1740763260.054,-127,5.20134,7.042,24.2165 +23,167363.78,1740763276.054,-127,5.20108,7.366,24.2137 +24,167379.78,1740763292.054,-127,5.2004,7.687,24.2026 +25,167395.78,1740763308.054,-127,5.19982,8.007,24.1946 +26,167411.78,1740763324.054,-127,5.19832,8.33,24.1783 +27,167427.78,1740763340.054,-127,5.19804,8.655,24.1736 +28,167443.78,1740763356.054,-127,5.19696,8.98,24.1612 +29,167459.78,1740763372.054,-127,5.19633,9.297,24.1516 +30,167475.78,1740763388.054,-127,5.19409,9.619,24.121 +31,167491.78,1740763404.054,-127,5.1924,9.94,24.1003 +32,167507.78,1740763420.054,-127,5.19206,10.263,24.0948 +33,167523.78,1740763436.054,-127,5.18957,10.587,24.0646 +34,167539.78,1740763452.054,-127,5.18621,10.901,24.0206 +35,167555.78,1740763468.054,-127,5.18446,11.218,23.9985 +36,167571.78,1740763484.054,-127,5.1796,11.537,23.9449 +37,167587.78,1740763500.054,-127,5.17831,11.848,23.9311 +38,167603.78,1740763516.054,-127,5.17838,12.158,23.9288 +39,167619.78,1740763532.054,-127,5.17766,12.466,23.9172 +40,167635.78,1740763548.054,-127,5.17679,12.777,23.9059 +41,167651.78,1740763564.054,-127,5.17356,13.095,23.8651 +42,167667.78,1740763580.054,-127,5.17223,13.402,23.8533 +43,167683.78,1740763596.054,-127,5.17202,13.712,23.8521 +44,167699.78,1740763612.054,-127,5.17002,14.022,23.8284 +45,167715.78,1740763628.054,-127,5.16605,14.33,23.7888 +46,167731.78,1740763644.054,-127,5.16248,14.632,23.7536 +47,167747.78,1740763660.054,-127,5.15279,14.93,23.6624 +48,167763.78,1740763676.054,-127,5.1411,15.226,23.5409 +49,167779.78,1740763692.054,-127,5.12937,15.527,23.4214 +50,167795.78,1740763708.054,-127,5.09811,15.8,23.0938 +51,167811.78,1740763724.054,-127,5.05426,16.057,22.6371 +52,167827.78,1740763740.054,-127,5.01881,16.329,22.3025 +53,167843.78,1740763756.054,-127,4.9951,16.583,22.0939 +54,167859.78,1740763772.054,-127,4.97942,16.845,21.9466 +55,167875.78,1740763788.054,-127,4.95325,17.114,21.7235 +56,167891.78,1740763804.054,-127,4.92672,17.376,21.4106 +57,167907.78,1740763820.054,-127,4.92205,17.645,21.376 +58,167923.78,1740763836.054,-127,4.91541,17.921,21.3176 +59,167939.78,1740763852.054,-127,4.90345,18.177,21.2063 +60,167955.78,1740763868.054,-127,4.8877,18.431,21.061 +61,167971.78,1740763884.054,-127,4.8849,18.688,21.0316 +62,167987.78,1740763900.054,-127,4.87597,18.94,20.9408 +63,168003.78,1740763916.054,-127,4.87109,19.195,20.8944 +64,168019.78,1740763932.054,-127,4.86444,19.461,20.8305 +65,168035.78,1740763948.054,-127,4.86113,19.716,20.7991 +66,168051.78,1740763964.054,-127,4.8561,19.978,20.7495 +67,168067.78,1740763980.054,-127,4.85165,20.244,20.7029 +68,168083.78,1740763996.054,-127,4.83257,20.508,20.5014 +69,168099.78,1740764012.054,-127,4.81738,20.769,20.3739 +70,168115.78,1740764028.054,-127,4.80989,21.036,20.2823 +71,168131.78,1740764044.054,-127,4.80949,21.304,20.2797 +72,168147.78,1740764060.054,-127,4.79796,21.574,20.1646 +73,168163.78,1740764076.054,-127,4.78775,21.838,20.0641 +74,168179.78,1740764092.054,-127,4.78173,22.095,20.0021 +75,168195.78,1740764108.054,-127,4.76967,22.357,19.8847 +76,168211.78,1740764124.054,-127,4.75758,22.614,19.7755 +77,168227.78,1740764140.054,-127,4.74377,22.856,19.6328 +78,168243.78,1740764156.054,-127,4.73955,23.1,19.5933 +79,168259.78,1740764172.054,-127,4.73608,23.352,19.5592 +80,168275.78,1740764188.054,-127,4.73283,23.61,19.5285 +81,168291.78,1740764204.054,-127,4.71321,23.847,19.3324 +82,168307.78,1740764220.054,-127,4.69509,24.108,19.1572 +83,168323.78,1740764236.054,-127,4.67065,24.362,18.9081 +84,168339.78,1740764252.054,-127,4.66348,24.618,18.843 +85,168355.78,1740764268.054,-127,4.65745,24.868,18.7885 +86,168371.78,1740764284.054,-127,4.64493,25.102,18.6648 +87,168387.78,1740764300.054,-127,4.63501,25.347,18.5703 +88,168403.78,1740764316.054,-127,4.62602,25.601,18.4855 +89,168419.78,1740764332.054,-127,4.62408,25.852,18.468 +90,168435.78,1740764348.054,-127,4.62181,26.097,18.4464 +91,168451.78,1740764364.054,-127,4.61838,26.35,18.4148 +92,168467.78,1740764380.054,-127,4.6175,26.595,18.4059 +93,168483.78,1740764396.054,-127,4.60063,26.855,18.2457 +94,168499.78,1740764412.054,-127,4.58522,27.103,18.0937 +95,168515.78,1740764428.054,-127,4.57721,27.351,18.0193 +96,168531.78,1740764444.054,-127,4.57244,27.608,17.9725 +97,168547.78,1740764460.054,-127,4.56413,27.872,17.892 +98,168563.78,1740764476.054,-127,4.55953,28.121,17.85 +99,168579.78,1740764492.054,-127,4.55008,28.381,17.7582 +100,168595.78,1740764508.054,-127,4.54309,28.642,17.6933 +101,168611.78,1740764524.054,-127,4.53535,28.889,17.6186 +102,168627.78,1740764540.054,-127,4.51947,29.145,17.466 +103,168643.78,1740764556.054,-127,4.50681,29.406,17.3474 +104,168659.78,1740764572.054,-127,4.49964,29.654,17.2817 +105,168675.78,1740764588.054,-127,4.49463,29.909,17.235 +106,168691.78,1740764604.054,-127,4.48562,30.168,17.1512 +107,168707.78,1740764620.054,-127,4.47996,30.427,17.0982 +108,168723.78,1740764636.054,-127,4.47046,30.678,17.0045 +109,168739.78,1740764652.054,-127,4.46655,30.944,16.9691 +110,168755.78,1740764668.054,-127,4.45555,31.193,16.861 +111,168771.78,1740764684.054,-127,4.44177,31.448,16.7265 +112,168787.78,1740764700.054,-127,4.43514,31.702,16.6655 +113,168803.78,1740764716.054,-127,4.4296,31.944,16.6133 +114,168819.78,1740764732.054,-127,4.4191,32.186,16.5126 +115,168835.78,1740764748.054,-127,4.4149,32.42,16.473 +116,168851.78,1740764764.054,-127,4.41307,32.655,16.4558 +117,168867.78,1740764780.054,-127,4.40741,32.899,16.4014 +118,168883.78,1740764796.054,-127,4.39505,33.141,16.2897 +119,168899.78,1740764812.054,-127,4.38837,33.382,16.2213 +120,168915.78,1740764828.054,-127,4.38554,33.619,16.195 +121,168931.78,1740764844.054,-127,4.37632,33.855,16.1059 +122,168947.78,1740764860.054,-127,4.36965,34.105,16.0423 +123,168963.78,1740764876.054,-127,4.36218,34.354,15.9732 +124,168979.78,1740764892.054,-127,4.355,34.592,15.9037 +125,168995.78,1740764908.054,-127,4.34394,34.832,15.7967 +126,169011.78,1740764924.054,-127,4.33978,35.072,15.7592 +127,169027.78,1740764940.054,-127,4.33407,35.313,15.7053 +128,169043.78,1740764956.054,-127,4.32611,35.552,15.6289 +129,169059.78,1740764972.054,-127,4.32052,35.794,15.575 +130,169075.78,1740764988.054,-127,4.30553,36.034,15.4325 +131,169091.78,1740765004.054,-127,4.29505,36.279,15.3363 +132,169107.78,1740765020.054,-127,4.27658,36.514,15.1567 +133,169123.78,1740765036.054,-127,4.26913,36.741,15.0825 +134,169139.78,1740765052.054,-127,4.26212,36.971,15.0181 +135,169155.78,1740765068.054,-127,4.25238,37.206,14.926 +136,169171.78,1740765084.054,-127,4.24163,37.437,14.8207 +137,169187.78,1740765100.054,-127,4.23124,37.662,14.7217 +138,169203.78,1740765116.054,-127,4.22758,37.895,14.6865 +139,169219.78,1740765132.054,-127,4.21452,38.128,14.5598 +140,169235.78,1740765148.054,-127,4.20755,38.362,14.4935 +141,169251.78,1740765164.054,-127,4.19503,38.59,14.3719 +142,169267.78,1740765180.054,-127,4.19167,38.833,14.3418 +143,169283.78,1740765196.054,-127,4.18868,39.06,14.3156 +144,169299.78,1740765212.054,-127,4.17581,39.294,14.1856 +145,169315.78,1740765228.054,-127,4.16312,39.525,14.0645 +146,169331.78,1740765244.054,-127,4.15335,39.75,13.9633 +147,169347.78,1740765260.054,-127,4.14561,39.981,13.887 +148,169363.78,1740765276.054,-127,4.14424,40.212,13.8758 +149,169379.78,1740765292.054,-127,4.14295,40.454,13.8638 +150,169395.78,1740765308.054,-127,4.13911,40.68,13.8253 +151,169411.78,1740765324.054,-127,4.13453,40.918,13.7806 +152,169427.78,1740765340.054,-127,4.13173,41.147,13.7521 +153,169443.78,1740765356.054,-127,4.12786,41.382,13.7136 +154,169459.78,1740765372.054,-127,4.11925,41.609,13.6286 +155,169475.78,1740765388.054,-127,4.1125,41.868,13.5652 +156,169491.78,1740765404.054,-127,4.10499,42.114,13.4927 +157,169507.78,1740765420.054,-127,4.0921,42.381,13.3634 +158,169523.78,1740765436.054,-127,4.08587,42.639,13.3043 +159,169539.78,1740765452.054,-127,4.0607,42.909,13.06 +160,169555.78,1740765468.054,-127,4.05238,43.176,12.9849 +161,169571.78,1740765484.054,-127,4.03946,43.43,12.8572 +162,169587.78,1740765500.054,-127,4.03669,43.692,12.8335 +163,169603.78,1740765516.054,-127,4.03186,43.949,12.7855 +164,169619.78,1740765532.054,-127,4.02251,44.197,12.6943 +165,169635.78,1740765548.054,-127,4.01119,44.446,12.5806 +166,169651.78,1740765564.054,-127,4.01026,44.699,12.5739 +167,169667.78,1740765580.054,-127,4.00828,44.962,12.5559 +168,169683.78,1740765596.054,-127,4.00716,45.227,12.5454 +169,169699.78,1740765612.054,-127,4.00224,45.483,12.4943 +170,169715.78,1740765628.054,-127,3.99902,45.751,12.4623 +171,169731.78,1740765644.054,-127,3.99438,46.007,12.4167 +172,169747.78,1740765660.054,-127,3.97953,46.279,12.2663 +173,169763.78,1740765676.054,-127,3.97748,46.53,12.2475 +174,169779.78,1740765692.054,-127,3.97546,46.791,12.2282 +175,169795.78,1740765708.054,-127,3.9712,47.034,12.1869 +176,169811.78,1740765724.054,-127,3.96655,47.284,12.1404 +177,169827.78,1740765740.054,-127,3.95409,47.527,12.0112 +178,169843.78,1740765756.054,-127,3.95207,47.764,11.9929 +179,169859.78,1740765772.054,-127,3.94929,48.013,11.9652 +180,169875.78,1740765788.054,-127,3.9337,48.253,11.8056 +181,169891.78,1740765804.054,-127,3.92458,48.486,11.7155 +182,169907.78,1740765820.054,-127,3.91905,48.73,11.6625 +183,169923.78,1740765836.054,-127,3.91057,48.975,11.5743 +184,169939.78,1740765852.054,-127,3.89025,49.215,11.3744 +185,169955.78,1740765868.054,-127,3.87905,49.447,11.2553 +186,169971.78,1740765884.054,-127,3.85867,49.672,11.0465 +187,169987.78,1740765900.054,-127,3.85646,49.901,11.0296 +188,170003.78,1740765916.054,-127,3.84929,50.144,10.956 +189,170019.78,1740765932.054,-127,3.84698,50.382,10.9343 +190,170035.78,1740765948.054,-127,3.8416,50.625,10.8802 +191,170051.78,1740765964.054,-127,3.82612,50.861,10.7206 +192,170067.78,1740765980.054,-127,3.82243,51.092,10.6843 +193,170083.78,1740765996.054,-127,3.82002,51.323,10.6607 +194,170099.78,1740766012.054,-127,3.8124,51.558,10.5836 +195,170115.78,1740766028.054,-127,3.80945,51.799,10.5518 +196,170131.78,1740766044.054,-127,3.80789,52.043,10.5367 +197,170147.78,1740766060.054,-127,3.80637,52.285,10.5208 +198,170163.78,1740766076.054,-127,3.80441,52.528,10.4999 +199,170179.78,1740766092.054,-127,3.79723,52.771,10.4239 +200,170195.78,1740766108.054,-127,3.79355,53.017,10.3875 +201,170211.78,1740766124.054,-127,3.78147,53.256,10.2614 +202,170227.78,1740766140.054,-127,3.77324,53.494,10.175 +203,170243.78,1740766156.054,-127,3.7712,53.741,10.1552 +204,170259.78,1740766172.054,-127,3.76931,53.973,10.1367 +205,170275.78,1740766188.054,-127,3.75931,54.218,10.0293 +206,170291.78,1740766204.054,-127,3.75047,54.445,9.9355 +207,170307.78,1740766220.054,-127,3.74812,54.692,9.9124 +208,170323.78,1740766236.054,-127,3.74692,54.927,9.9009 +209,170339.78,1740766252.054,-127,3.7426,55.18,9.8535 +210,170355.78,1740766268.054,-127,3.73265,55.419,9.7482 +211,170371.78,1740766284.054,-127,3.72627,55.669,9.6784 +212,170387.78,1740766300.054,-127,3.72277,55.915,9.6436 +213,170403.78,1740766316.054,-127,3.71675,56.154,9.5782 +214,170419.78,1740766332.054,-127,3.70719,56.385,9.4758 +215,170435.78,1740766348.054,-127,3.70405,56.623,9.4467 +216,170451.78,1740766364.054,-127,3.6977,56.863,9.3787 +217,170467.78,1740766380.054,-127,3.68931,57.105,9.2869 +218,170483.78,1740766396.054,-127,3.68531,57.344,9.2462 +219,170499.78,1740766412.054,-127,3.68074,57.574,9.1955 +220,170515.78,1740766428.054,-127,3.67628,57.805,9.1481 +221,170531.78,1740766444.054,-127,3.67075,58.037,9.0874 +222,170547.78,1740766460.054,-127,3.66225,58.275,8.9982 +223,170563.78,1740766476.054,-127,3.65743,58.51,8.9482 +224,170579.78,1740766492.054,-127,3.64976,58.743,8.865 +225,170595.78,1740766508.054,-127,3.64135,58.976,8.7734 +226,170611.78,1740766524.054,-127,3.63483,59.213,8.7053 +227,170627.78,1740766540.054,-127,3.63188,59.448,8.6751 +228,170643.78,1740766556.054,-127,3.62968,59.682,8.6545 +229,170659.78,1740766572.054,-127,3.62051,59.912,8.5537 +230,170675.78,1740766588.054,-127,3.61642,60.14,8.5089 +231,170691.78,1740766604.054,-127,3.61153,60.368,8.4573 +232,170707.78,1740766620.054,-127,3.60413,60.607,8.3766 +233,170723.78,1740766636.054,-127,3.59529,60.845,8.285 +234,170739.78,1740766652.054,-127,3.58723,61.071,8.1944 +235,170755.78,1740766668.054,-127,3.58376,61.31,8.157 +236,170771.78,1740766684.054,-127,3.57585,61.537,8.0712 +237,170787.78,1740766700.054,-127,3.56973,61.774,8.0029 +238,170803.78,1740766716.054,-127,3.56642,61.999,7.9683 +239,170819.78,1740766732.054,-127,3.56372,62.228,7.9388 +240,170835.78,1740766748.054,-127,3.55793,62.445,7.8754 +241,170850.78,1740766763.054,-127,3.55109,62.655,7.798 +242,170866.78,1740766779.054,-127,3.5473,62.891,7.7556 +243,170882.78,1740766795.054,-127,3.5447,63.111,7.729 +244,170898.78,1740766811.054,-127,3.54162,63.346,7.6946 +245,170914.78,1740766827.054,-127,3.53761,63.571,7.6487 +246,170930.78,1740766843.054,-127,3.5294,63.797,7.5559 +247,170946.78,1740766859.054,-127,3.52449,64.031,7.5005 +248,170962.78,1740766875.054,-127,3.51574,64.255,7.4024 +249,170978.78,1740766891.054,-127,3.50944,64.495,7.3318 +250,170994.78,1740766907.054,-127,3.50242,64.719,7.2529 +251,171010.78,1740766923.054,-127,3.50181,64.953,7.2484 +252,171026.78,1740766939.054,-127,3.49601,65.18,7.1853 +253,171042.78,1740766955.054,-127,3.48915,65.412,7.1037 +254,171058.78,1740766971.054,-127,3.48792,65.64,7.0907 +255,171074.78,1740766987.054,-127,3.48317,65.866,7.0357 +256,171090.78,1740767003.054,-127,3.47963,66.096,6.9954 +257,171106.78,1740767019.054,-127,3.47501,66.331,6.9424 +258,171122.78,1740767035.054,-127,3.47032,66.558,6.888 +259,171138.78,1740767051.054,-127,3.46839,66.786,6.8661 +260,171154.78,1740767067.054,-127,3.46663,67.022,6.8461 +261,171170.78,1740767083.054,-127,3.46137,67.258,6.7848 +262,171186.78,1740767099.054,-127,3.4556,67.497,6.717 +263,171202.78,1740767115.054,-127,3.45305,67.721,6.6862 +264,171218.78,1740767131.054,-127,3.45251,67.952,6.6795 +265,171234.78,1740767147.054,-127,3.45191,68.187,6.6722 +266,171250.78,1740767163.054,-127,3.44926,68.407,6.64 +267,171266.78,1740767179.054,-127,3.44576,68.64,6.5992 +268,171282.78,1740767195.054,-127,3.4415,68.874,6.5487 +269,171298.78,1740767211.054,-127,3.4371,69.104,6.4945 +270,171314.78,1740767227.054,-127,3.43552,69.333,6.4748 +271,171330.78,1740767243.054,-127,3.43402,69.564,6.4568 +272,171346.78,1740767259.054,-127,3.43219,69.788,6.4331 +273,171362.78,1740767275.054,-127,3.42757,70.012,6.3752 +274,171378.78,1740767291.054,-127,3.42667,70.235,6.3634 +275,171394.78,1740767307.054,-127,3.42558,70.444,6.3495 +276,171410.78,1740767323.054,-127,3.42422,70.668,6.3319 +277,171426.78,1740767339.054,-127,3.42231,70.884,6.3067 +278,171442.78,1740767355.054,-127,3.41651,71.09,6.2333 +279,171458.78,1740767371.054,-127,3.4156,71.297,6.2228 +280,171474.78,1740767387.054,-127,3.4125,71.514,6.1869 +281,171490.78,1740767403.054,-127,3.4083,71.714,6.1327 +282,171506.78,1740767419.054,-127,3.40586,71.912,6.1033 +283,171522.78,1740767435.054,-127,3.40467,72.118,6.0892 +284,171538.78,1740767451.054,-127,3.40403,72.31,6.0809 +285,171554.78,1740767467.054,-127,3.40385,72.509,6.0786 +286,171570.78,1740767483.054,-127,3.39443,72.711,5.9626 +287,171586.78,1740767499.054,-127,3.38882,72.909,5.9008 +288,171602.78,1740767515.054,-127,3.38522,73.105,5.857 +289,171618.78,1740767531.054,-127,3.38316,73.309,5.8329 +290,171634.78,1740767547.054,-127,3.37988,73.503,5.7932 +291,171650.78,1740767563.054,-127,3.37527,73.694,5.7408 +292,171666.78,1740767579.054,-127,3.3712,73.89,5.6886 +293,171682.78,1740767595.054,-127,3.36882,74.077,5.6628 +294,171698.78,1740767611.054,-127,3.36079,74.262,5.5689 +295,171714.78,1740767627.054,-127,3.35847,74.443,5.5411 +296,171730.78,1740767643.054,-127,3.35779,74.631,5.5331 +297,171746.78,1740767659.054,-127,3.35285,74.821,5.4715 +298,171762.78,1740767675.054,-127,3.35256,75.005,5.4683 +299,171778.78,1740767691.054,-127,3.3514,75.202,5.4564 +300,171794.78,1740767707.054,-127,3.34779,75.383,5.4086 +301,171810.78,1740767723.054,-127,3.34562,75.579,5.3819 +302,171826.78,1740767739.054,-127,3.3424,75.76,5.3411 +303,171842.78,1740767755.054,-127,3.34137,75.96,5.328 +304,171858.78,1740767771.054,-127,3.34085,76.154,5.3218 +305,171874.78,1740767787.054,-127,3.33831,76.345,5.2887 +306,171890.78,1740767803.054,-127,3.33456,76.536,5.2404 +307,171906.78,1740767819.054,-127,3.33287,76.718,5.219 +308,171922.78,1740767835.054,-127,3.33162,76.91,5.2022 +309,171938.78,1740767851.054,-127,3.33078,77.093,5.1909 +310,171954.78,1740767867.054,-127,3.32858,77.29,5.1635 +311,171970.78,1740767883.054,-127,3.32535,77.478,5.1201 +312,171986.78,1740767899.054,-127,3.32381,77.666,5.0998 +313,172002.78,1740767915.054,-127,3.32329,77.864,5.0924 +314,172018.78,1740767931.054,-127,3.32169,78.057,5.0712 +315,172034.78,1740767947.054,-127,3.31956,78.25,5.043 +316,172050.78,1740767963.054,-127,3.31815,78.456,5.0234 +317,172066.78,1740767979.054,-127,3.31726,78.653,5.0114 +318,172082.78,1740767995.054,-127,3.31527,78.85,4.9849 +319,172098.78,1740768011.054,-127,3.31447,79.06,4.9724 +320,172114.78,1740768027.054,-127,3.31379,79.264,4.9633 +321,172130.78,1740768043.054,-127,3.31232,79.462,4.942 +322,172146.78,1740768059.054,-127,3.31112,79.67,4.9254 +323,172162.78,1740768075.054,-127,3.31001,79.866,4.9095 +324,172178.78,1740768091.054,-127,3.30925,80.074,4.8995 +325,172194.78,1740768107.054,-127,3.3069,80.279,4.8663 +326,172210.78,1740768123.054,-127,3.30467,80.481,4.8364 +327,172226.78,1740768139.054,-127,3.30426,80.684,4.8313 +328,172242.78,1740768155.054,-127,3.30357,80.894,4.8218 +329,172258.78,1740768171.054,-127,3.30114,81.095,4.7888 +330,172274.78,1740768187.054,-127,3.30031,81.301,4.7782 +331,172290.78,1740768203.054,-127,3.2988,81.511,4.7564 +332,172306.78,1740768219.054,-127,3.2986,81.724,4.7538 +333,172322.78,1740768235.054,-127,3.29759,81.943,4.7387 +334,172338.78,1740768251.054,-127,3.29453,82.146,4.6973 +335,172354.78,1740768267.054,-127,3.29354,82.361,4.6847 +336,172370.78,1740768283.054,-127,3.29297,82.567,4.6764 +337,172386.78,1740768299.054,-127,3.2925,82.773,4.6695 +338,172402.78,1740768315.054,-127,3.29095,82.972,4.6485 +339,172418.78,1740768331.054,-127,3.29065,83.19,4.6442 +340,172434.78,1740768347.054,-127,3.28962,83.395,4.6303 +341,172450.78,1740768363.054,-127,3.28742,83.605,4.6003 +342,172466.78,1740768379.054,-127,3.28673,83.814,4.5907 +343,172482.78,1740768395.054,-127,3.28635,84.022,4.5853 +344,172498.78,1740768411.054,-127,3.28601,84.226,4.5802 +345,172514.78,1740768427.054,-127,3.28504,84.436,4.5667 +346,172530.78,1740768443.054,-127,3.28118,84.64,4.5163 +347,172546.78,1740768459.054,-127,3.2808,84.858,4.5115 +348,172562.78,1740768475.054,-127,3.27951,85.068,4.4937 +349,172578.78,1740768491.054,-127,3.27842,85.28,4.479 +350,172594.78,1740768507.054,-127,3.27821,85.49,4.4756 +351,172610.78,1740768523.054,-127,3.27825,85.694,4.4757 +352,172626.78,1740768539.054,-127,3.27731,85.902,4.4623 +353,172642.78,1740768555.054,-127,3.277,86.116,4.4549 +354,172658.78,1740768571.054,-127,3.27679,86.315,4.4503 +355,172674.78,1740768587.054,-127,3.27678,86.522,4.4491 +356,172690.78,1740768603.054,-127,3.2767,86.723,4.4467 +357,172706.78,1740768619.054,-127,3.27616,86.923,4.4375 +358,172722.78,1740768635.054,-127,3.27546,87.129,4.4271 +359,172738.78,1740768651.054,-127,3.27427,87.321,4.4095 +360,172754.78,1740768667.054,-127,3.27345,87.524,4.3974 +361,172770.78,1740768683.054,-127,3.27241,87.725,4.3818 +362,172786.78,1740768699.054,-127,3.27155,87.919,4.3698 +363,172802.78,1740768715.054,-127,3.27108,88.121,4.361 +364,172818.78,1740768731.054,-127,3.2708,88.331,4.3566 +365,172834.78,1740768747.054,-127,3.27064,88.527,4.3531 +366,172850.78,1740768763.054,-127,3.26942,88.724,4.3366 +367,172866.78,1740768779.054,-127,3.26905,88.923,4.3322 +368,172882.78,1740768795.054,-127,3.26833,89.12,4.3225 +369,172898.78,1740768811.054,-127,3.26826,89.314,4.3211 +370,172914.78,1740768827.054,-127,3.26814,89.505,4.3178 +371,172930.78,1740768843.054,-127,3.26798,89.703,4.3139 +372,172946.78,1740768859.054,-127,3.26801,89.906,4.3123 +373,172962.78,1740768875.054,-127,3.26813,90.102,4.3113 +374,172978.78,1740768891.054,-127,3.26814,90.301,4.3092 +375,172994.78,1740768907.054,-127,3.26736,90.5,4.297 +376,173010.78,1740768923.054,-127,3.26515,90.699,4.2646 +377,173026.78,1740768939.054,-127,3.26433,90.903,4.2515 +378,173042.78,1740768955.054,-127,3.26413,91.123,4.2457 +379,173058.78,1740768971.054,-127,3.26475,91.338,4.2448 +380,173074.78,1740768987.054,-127,3.26516,91.564,4.2459 +381,173090.78,1740769003.054,-127,3.26528,91.782,4.2449 +382,173106.78,1740769019.054,-127,3.26542,92.004,4.2437 +383,173122.78,1740769035.054,-127,3.26552,92.222,4.2423 +384,173138.78,1740769051.054,-127,3.2652,92.437,4.2362 +385,173154.78,1740769067.054,-127,3.26505,92.664,4.2329 +386,173170.78,1740769083.054,-127,3.26483,92.889,4.2286 +387,173186.78,1740769099.054,-127,3.26488,93.108,4.2276 +388,173202.78,1740769115.054,-127,3.26484,93.329,4.2242 +389,173218.78,1740769131.054,-127,3.26404,93.549,4.2127 +390,173234.78,1740769147.054,-127,3.26366,93.775,4.2069 +391,173250.78,1740769163.054,-127,3.26346,93.997,4.2029 +392,173266.78,1740769179.054,-127,3.26271,94.218,4.1907 +393,173282.78,1740769195.054,-127,3.262,94.435,4.1802 +394,173298.78,1740769211.054,-127,3.26019,94.651,4.1559 +395,173314.78,1740769227.054,-127,3.25882,94.881,4.139 +396,173330.78,1740769243.054,-127,3.25675,95.095,4.1104 +397,173346.78,1740769259.054,-127,3.25474,95.32,4.0854 +398,173362.78,1740769275.054,-127,3.25413,95.544,4.0775 +399,173378.78,1740769291.054,-127,3.25414,95.753,4.0766 +400,173394.78,1740769307.054,-127,3.25407,95.976,4.0754 +401,173410.78,1740769323.054,-127,3.25336,96.193,4.0652 +402,173426.78,1740769339.054,-127,3.25287,96.413,4.0585 +403,173442.78,1740769355.054,-127,3.25211,96.628,4.048 +404,173458.78,1740769371.054,-127,3.25147,96.854,4.0394 +405,173474.78,1740769387.054,-127,3.25068,97.064,4.0287 +406,173490.78,1740769403.054,-127,3.24958,97.284,4.0136 +407,173506.78,1740769419.054,-127,3.24778,97.503,3.9904 +408,173522.78,1740769435.054,-127,3.24733,97.718,3.9837 +409,173538.78,1740769451.054,-127,3.24677,97.933,3.976 +410,173554.78,1740769467.054,-127,3.24579,98.15,3.9627 +411,173570.78,1740769483.054,-127,3.24464,98.363,3.9479 +412,173586.78,1740769499.054,-127,3.24394,98.579,3.9383 +413,173602.78,1740769515.054,-127,3.24278,98.793,3.9218 +414,173618.78,1740769531.054,-127,3.24231,99.009,3.9153 +415,173634.78,1740769547.054,-127,3.24151,99.215,3.905 +416,173650.78,1740769563.054,-127,3.24098,99.429,3.8964 +417,173666.78,1740769579.054,-127,3.24034,99.64,3.8875 +418,173682.78,1740769595.054,-127,3.23978,99.852,3.8792 +419,173698.78,1740769611.054,-127,3.23894,100.06,3.8678 +420,173714.78,1740769627.054,-127,3.23823,100.269,3.8568 +421,173730.78,1740769643.054,-127,3.23755,100.477,3.8471 +422,173746.78,1740769659.054,-127,3.23753,100.689,3.8461 +423,173762.78,1740769675.054,-127,3.23738,100.899,3.8434 +424,173778.78,1740769691.054,-127,3.23689,101.098,3.8352 +425,173794.78,1740769707.054,-127,3.23656,101.305,3.8302 +426,173810.78,1740769723.054,-127,3.23643,101.513,3.8276 +427,173826.38,1740769738.641,-127,3.23638,101.692,3.8261 +428,173842.38,1740769754.641,-127,3.23618,101.739,3.8227 +429,173858.38,1740769770.641,-127,3.2361,101.747,3.8221 +430,173874.38,1740769786.641,-127,3.23631,101.701,3.8251 +431,173890.38,1740769802.641,-127,3.23655,101.609,3.8287 +432,173906.38,1740769818.641,-127,3.23674,101.448,3.8322 +433,173922.38,1740769834.641,-127,3.23678,101.197,3.8341 +434,173938.38,1740769850.641,-127,3.23729,100.837,3.8436 +435,173954.38,1740769866.641,-127,3.2373,100.342,3.8456 +436,173970.38,1740769882.641,-127,3.23938,99.727,3.8783 +437,173986.38,1740769898.641,-127,3.24058,99.073,3.8967 +438,174002.38,1740769914.641,-127,3.24262,98.419,3.9259 +439,174018.38,1740769930.641,-127,3.24562,97.763,3.968 +440,174034.38,1740769946.641,-127,3.24757,97.102,3.9958 +441,174050.38,1740769962.641,-127,3.25076,96.427,4.0382 +442,174066.38,1740769978.641,-127,3.25334,95.754,4.0715 +443,174082.38,1740769994.641,-127,3.25609,95.092,4.1094 +444,174098.38,1740770010.641,-127,3.26031,94.422,4.1665 +445,174114.38,1740770026.641,-127,3.263,93.736,4.2051 +446,174130.38,1740770042.641,-127,3.264,93.074,4.2211 +447,174146.38,1740770058.641,-127,3.26497,92.405,4.2388 +448,174162.38,1740770074.641,-127,3.2647,91.734,4.2416 +449,174178.38,1740770090.641,-127,3.26413,91.054,4.2494 +450,174194.38,1740770106.641,-127,3.26651,90.381,4.2918 +451,174210.38,1740770122.641,-127,3.26785,89.729,4.3125 +452,174226.38,1740770138.641,-127,3.26759,89.076,4.3142 +453,174242.38,1740770154.641,-127,3.27003,88.415,4.353 +454,174258.38,1740770170.641,-127,3.27152,87.752,4.3755 +455,174274.38,1740770186.641,-127,3.27361,87.105,4.4073 +456,174290.38,1740770202.641,-127,3.27604,86.446,4.4433 +457,174306.38,1740770218.641,-127,3.27658,85.801,4.457 +458,174322.38,1740770234.641,-127,3.27882,85.14,4.4892 +459,174338.38,1740770250.641,-127,3.28422,84.494,4.5637 +460,174354.38,1740770266.641,-127,3.2863,83.824,4.5913 +461,174370.38,1740770282.641,-127,3.28773,83.191,4.6112 +462,174386.38,1740770298.641,-127,3.29023,82.535,4.6471 +463,174402.38,1740770314.641,-127,3.29332,81.888,4.6897 +464,174418.38,1740770330.641,-127,3.29867,81.235,4.7657 +465,174434.38,1740770346.641,-127,3.30298,80.585,4.8232 +466,174450.38,1740770362.641,-127,3.30568,79.951,4.8602 +467,174466.38,1740770378.641,-127,3.31012,79.316,4.922 +468,174482.38,1740770394.641,-127,3.31485,78.668,4.9877 +469,174498.38,1740770410.641,-127,3.31946,78.033,5.0507 +470,174514.38,1740770426.641,-127,3.32538,77.389,5.1294 +471,174530.38,1740770442.641,-127,3.32912,76.765,5.1769 +472,174546.38,1740770458.641,-127,3.3355,76.153,5.2622 +473,174562.38,1740770474.641,-127,3.34468,75.528,5.3836 +474,174578.38,1740770490.641,-127,3.35107,74.904,5.4636 +475,174594.38,1740770506.641,-127,3.36053,74.282,5.5811 +476,174610.38,1740770522.641,-127,3.36412,73.671,5.6238 +477,174626.38,1740770538.641,-127,3.37907,73.068,5.7999 +478,174642.38,1740770554.641,-127,3.39142,72.491,5.9483 +479,174658.38,1740770570.641,-127,3.39402,71.903,5.9741 +480,174674.38,1740770586.641,-127,3.40047,71.272,6.055 +481,174690.38,1740770602.641,-127,3.40325,70.643,6.0888 +482,174706.38,1740770618.641,-127,3.41353,70.038,6.2187 +483,174722.38,1740770634.641,-127,3.42048,69.463,6.3026 +484,174738.38,1740770650.641,-127,3.4248,68.861,6.3579 +485,174754.38,1740770666.641,-127,3.43214,68.29,6.4499 +486,174770.38,1740770682.641,-127,3.4374,67.697,6.5131 +487,174786.38,1740770698.641,-127,3.44306,67.103,6.5839 +488,174802.38,1740770714.641,-127,3.44961,66.509,6.6662 +489,174818.38,1740770730.641,-127,3.46054,65.913,6.7962 +490,174834.38,1740770746.641,-127,3.47492,65.316,6.9633 +491,174850.38,1740770762.641,-127,3.48247,64.735,7.0481 +492,174866.38,1740770778.641,-127,3.49528,64.151,7.1958 +493,174882.38,1740770794.641,-127,3.51059,63.552,7.3682 +494,174898.38,1740770810.641,-127,3.52313,62.97,7.5106 +495,174914.38,1740770826.641,-127,3.53837,62.418,7.6809 +496,174930.38,1740770842.641,-127,3.55155,61.846,7.8272 +497,174946.38,1740770858.641,-127,3.55982,61.258,7.9147 +498,174962.38,1740770874.641,-127,3.58173,60.697,8.1607 +499,174978.38,1740770890.641,-127,3.59415,60.126,8.2945 +500,174994.38,1740770906.641,-127,3.61182,59.557,8.4876 +501,175010.38,1740770922.641,-127,3.61886,58.995,8.5598 +502,175026.38,1740770938.641,-127,3.63337,58.446,8.7126 +503,175042.38,1740770954.641,-127,3.65508,57.884,8.9456 +504,175058.38,1740770970.641,-127,3.66613,57.308,9.0636 +505,175074.38,1740770986.641,-127,3.68642,56.736,9.2815 +506,175090.38,1740771002.641,-127,3.6984,56.163,9.4052 +507,175106.38,1740771018.641,-127,3.72084,55.606,9.6451 +508,175122.38,1740771034.641,-127,3.72938,55.047,9.7334 +509,175138.38,1740771050.641,-127,3.73715,54.491,9.815 +510,175154.38,1740771066.641,-127,3.75113,53.963,9.9621 +511,175170.38,1740771082.641,-127,3.77352,53.405,10.1987 +512,175186.38,1740771098.641,-127,3.78785,52.841,10.3469 +513,175202.38,1740771114.641,-127,3.79491,52.298,10.417 +514,175218.38,1740771130.641,-127,3.81056,51.743,10.5815 +515,175234.38,1740771146.641,-127,3.81891,51.204,10.665 +516,175250.38,1740771162.641,-127,3.83318,50.642,10.8128 +517,175266.38,1740771178.641,-127,3.84895,50.079,10.9751 +518,175282.38,1740771194.641,-127,3.86079,49.524,11.0951 +519,175298.38,1740771210.641,-127,3.87757,48.965,11.2672 +520,175314.38,1740771226.641,-127,3.91,48.386,11.596 +521,175330.38,1740771242.641,-127,3.92787,47.842,11.7746 +522,175346.38,1740771258.641,-127,3.94745,47.288,11.9669 +523,175362.38,1740771274.641,-127,3.96497,46.735,12.1457 +524,175378.38,1740771290.641,-127,3.98595,46.213,12.3533 +525,175394.38,1740771306.641,-127,4.0051,45.692,12.5438 +526,175410.38,1740771322.641,-127,4.01236,45.168,12.6092 +527,175426.38,1740771338.641,-127,4.02815,44.636,12.7661 +528,175442.38,1740771354.641,-127,4.04349,44.095,12.9174 +529,175458.38,1740771370.641,-127,4.06829,43.57,13.1586 +530,175474.38,1740771386.641,-127,4.08808,43.051,13.3511 +531,175490.38,1740771402.641,-127,4.11093,42.525,13.5723 +532,175506.38,1740771418.641,-127,4.13009,42.005,13.756 +533,175522.38,1740771434.641,-127,4.14167,41.47,13.8661 +534,175538.38,1740771450.641,-127,4.14806,40.95,13.9245 +535,175554.38,1740771466.641,-127,4.17123,40.425,14.1568 +536,175570.38,1740771482.641,-127,4.1766,39.928,14.2067 +537,175586.38,1740771498.641,-127,4.18276,39.418,14.2679 +538,175602.38,1740771514.641,-127,4.19552,38.897,14.395 +539,175618.38,1740771530.641,-127,4.21777,38.382,14.6093 +540,175634.38,1740771546.641,-127,4.24096,37.861,14.8366 +541,175650.38,1740771562.641,-127,4.25302,37.325,14.9519 +542,175666.38,1740771578.641,-127,4.29224,36.791,15.3276 +543,175682.38,1740771594.641,-127,4.30736,36.264,15.4732 +544,175698.38,1740771610.641,-127,4.32305,35.755,15.6192 +545,175714.38,1740771626.641,-127,4.34318,35.259,15.8121 +546,175730.38,1740771642.641,-127,4.35795,34.758,15.953 +547,175746.38,1740771658.641,-127,4.36836,34.267,16.0468 +548,175762.38,1740771674.641,-127,4.37792,33.785,16.1374 +549,175778.38,1740771690.641,-127,4.39293,33.312,16.2818 +550,175794.38,1740771706.641,-127,4.40729,32.84,16.4194 +551,175810.38,1740771722.641,-127,4.41469,32.342,16.4861 +552,175826.38,1740771738.641,-127,4.43018,31.87,16.6354 +553,175842.38,1740771754.641,-127,4.44844,31.391,16.8127 +554,175857.38,1740771769.641,-127,4.46769,30.963,16.9996 +555,175873.38,1740771785.641,-127,4.47082,30.511,17.0262 +556,175889.38,1740771801.641,-127,4.48202,30.052,17.1314 +557,175905.38,1740771817.641,-127,4.49509,29.618,17.2599 +558,175921.38,1740771833.641,-127,4.50487,29.169,17.3526 +559,175937.38,1740771849.641,-127,4.52546,28.707,17.5443 +560,175953.38,1740771865.641,-127,4.55421,28.229,17.8226 +561,175969.38,1740771881.641,-127,4.56344,27.743,17.9056 +562,175985.38,1740771897.641,-127,4.57749,27.255,18.0411 +563,176001.38,1740771913.641,-127,4.60285,26.769,18.2905 +564,176017.38,1740771929.641,-127,4.6177,26.289,18.4283 +565,176033.38,1740771945.641,-127,4.64048,25.837,18.6411 +566,176049.38,1740771961.641,-127,4.65136,25.379,18.7405 +567,176065.38,1740771977.641,-127,4.67268,24.944,18.9481 +568,176081.38,1740771993.641,-127,4.68045,24.492,19.0173 +569,176097.38,1740772009.641,-127,4.70289,24.038,19.2574 +570,176113.38,1740772025.641,-127,4.71502,23.592,19.3745 +571,176129.38,1740772041.641,-127,4.72701,23.192,19.4867 +572,176145.38,1740772057.641,-127,4.74133,22.779,19.6286 +573,176161.38,1740772073.641,-127,4.75868,22.36,19.7922 +574,176177.38,1740772089.641,-127,4.77657,21.952,19.9643 +575,176193.38,1740772105.641,-127,4.81213,21.525,20.306 +576,176209.38,1740772121.641,-127,4.82254,21.12,20.4039 +577,176225.38,1740772137.641,-127,4.82421,20.701,20.4143 +578,176241.38,1740772153.641,-127,4.82952,20.305,20.4648 +579,176257.38,1740772169.641,-127,4.8459,19.917,20.6265 +580,176273.38,1740772185.641,-127,4.86435,19.519,20.7975 +581,176289.38,1740772201.641,-127,4.87809,19.118,20.9427 +582,176305.38,1740772217.641,-127,4.88098,18.696,20.9749 +583,176321.38,1740772233.641,-127,4.88783,18.255,21.0613 +584,176337.38,1740772249.641,-127,4.89563,17.833,21.1375 +585,176353.38,1740772265.641,-127,4.90123,17.434,21.1913 +586,176369.38,1740772281.641,-127,4.90621,17.025,21.2377 +587,176385.38,1740772297.641,-127,4.94544,16.637,21.6365 +588,176401.38,1740772313.641,-127,4.96987,16.202,21.8715 +589,176417.38,1740772329.641,-127,4.98465,15.779,22.0031 +590,176433.38,1740772345.641,-127,5.01484,15.368,22.3096 +591,176449.38,1740772361.641,-127,5.03666,14.997,22.522 +592,176465.38,1740772377.641,-127,5.05828,14.649,22.7497 +593,176481.38,1740772393.641,-127,5.06784,14.299,22.8367 +594,176497.38,1740772409.641,-127,5.08284,13.948,22.9926 +595,176513.38,1740772425.641,-127,5.11248,13.607,23.2965 +596,176529.38,1740772441.641,-127,5.14475,13.27,23.6173 +597,176545.38,1740772457.641,-127,5.152,12.925,23.6751 +598,176561.38,1740772473.641,-127,5.1555,12.567,23.7025 +599,176577.38,1740772489.641,-127,5.15582,12.212,23.7038 +600,176593.38,1740772505.641,-127,5.15619,11.867,23.7074 +601,176609.38,1740772521.641,-127,5.15608,11.519,23.7076 +602,176625.38,1740772537.641,-127,5.15616,11.163,23.7075 +603,176641.38,1740772553.641,-127,5.15728,10.809,23.7167 +604,176657.38,1740772569.641,-127,5.16002,10.467,23.7451 +605,176673.38,1740772585.641,-127,5.16416,10.127,23.7871 +606,176689.38,1740772601.641,-127,5.16559,9.782,23.8022 +607,176705.38,1740772617.641,-127,5.16573,9.442,23.8062 +608,176721.38,1740772633.641,-127,5.16583,9.094,23.8079 +609,176737.38,1740772649.641,-127,5.16878,8.752,23.8471 +610,176753.38,1740772665.641,-127,5.17349,8.422,23.9046 +611,176769.38,1740772681.641,-127,5.17842,8.09,23.9626 +612,176785.38,1740772697.641,-127,5.18327,7.755,24.019 +613,176801.38,1740772713.641,-127,5.18527,7.414,24.0401 +614,176817.38,1740772729.641,-127,5.18829,7.087,24.0763 +615,176833.38,1740772745.641,-127,5.19143,6.754,24.1126 +616,176849.38,1740772761.641,-127,5.19308,6.432,24.1327 +617,176865.38,1740772777.641,-127,5.19348,6.113,24.1382 +618,176881.38,1740772793.641,-127,5.19377,5.779,24.143 +619,176897.38,1740772809.641,-127,5.19418,5.454,24.1521 +620,176913.38,1740772825.641,-127,5.19423,5.119,24.1528 +621,176929.38,1740772841.641,-127,5.19429,4.783,24.1559 +622,176945.38,1740772857.641,-127,5.19551,4.449,24.1718 +623,176961.38,1740772873.641,-127,5.19591,4.106,24.1786 +624,176977.38,1740772889.641,-127,5.1965,3.766,24.1863 +625,176993.38,1740772905.641,-127,5.19829,3.43,24.2106 +626,177009.38,1740772921.641,-127,5.19957,3.084,24.2294 +627,177025.38,1740772937.641,-127,5.2036,2.736,24.2761 +628,177041.38,1740772953.641,-127,5.21084,2.398,24.3798 +629,177057.38,1740772969.641,-127,5.23057,2.073,24.6163 +630,177073.38,1740772985.641,-127,5.24999,1.807,24.8326 +631,177089.38,1740773001.641,-127,5.25446,1.556,24.878 +632,177105.38,1740773017.641,-127,5.25672,1.285,24.8965 +633,177121.38,1740773033.641,-127,5.26073,1.009,24.9384 +634,177137.38,1740773049.641,-127,5.26184,0.715,24.9508 +635,177153.38,1740773065.641,-127,5.26208,0.409,24.9523 +636,177173.38,1740773085.641,0,,, +637,177181.38,1740773093.641,1,,, +638,177185.38,1740773097.642,2,,, +639,177349.72,1740773261.994,0,,, diff --git a/tests/test_cli.py b/tests/test_cli.py index a13139f..4050e83 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -1,5 +1,8 @@ from importlib import resources +from pathlib import Path +import numpy as np +import xarray as xr from typer.testing import CliRunner from glide.cli import app @@ -48,3 +51,81 @@ def test_gps() -> None: result = runner.invoke(app, ["hot", l2_file, "-o", out_file]) assert result.exit_code == 0 + + +def test_backfill() -> None: + """Test the backfill command for updating velocity in L2 files. + + This test processes real glider data files through the L2 pipeline and + then runs backfill to verify velocity updates work correctly. + """ + data_dir = Path(str(resources.files("tests").joinpath("data"))) + + # Test segments to process - osu685 real-time data files + segments = [ + "osu685-2025-056-0-27", + "osu685-2025-056-0-28", + "osu685-2025-056-0-29", + "osu685-2025-056-0-30", + ] + + # Process L2 files + l2_files = [] + for seg in segments: + flt_file = str(data_dir / f"{seg}.sbd.csv") + sci_file = str(data_dir / f"{seg}.tbd.csv") + l2_file = data_dir / f"{seg}.l2.nc" + + # Run L2 processing + result = runner.invoke(app, ["l2", flt_file, sci_file, "-o", str(l2_file)]) + assert result.exit_code == 0, f"L2 processing failed for {seg}: {result.output}" + + l2_files.append(l2_file) + + # Check the first L2 file before backfill + ds_before = xr.open_dataset(l2_files[0]) + assert "u" in ds_before, "L2 file should have u variable" + assert "time_uv" in ds_before, "L2 file should have time_uv dimension" + + # Check if velocity is NaN (needs backfill) + u_before = ds_before.u.values + has_nan = np.any(np.isnan(u_before)) + ds_before.close() + + if has_nan: + # Run backfill on the first file + result = runner.invoke( + app, + [ + "backfill", + str(l2_files[0]), + "-r", + str(data_dir), + "-n", + "2", # Include extra files for velocity lookup + ], + ) + assert result.exit_code == 0, f"Backfill failed: {result.output}" + + # Check if velocity was updated + ds_after = xr.open_dataset(l2_files[0]) + u_after = ds_after.u.values + + # Count how many NaN values were filled + nan_before = np.sum(np.isnan(u_before)) + nan_after = np.sum(np.isnan(u_after)) + + # Backfill should have filled at least some values + assert nan_after <= nan_before, ( + f"Backfill should not increase NaN count: " + f"before={nan_before}, after={nan_after}" + ) + ds_after.close() + else: + # If velocity was already filled during L2 processing, that's fine + # Just verify the values are reasonable + ds_check = xr.open_dataset(l2_files[0]) + u_vals = ds_check.u.values[np.isfinite(ds_check.u.values)] + if len(u_vals) > 0: + assert np.all(np.abs(u_vals) < 2.0), "Velocity u should be < 2 m/s" + ds_check.close() diff --git a/tests/test_process_l1.py b/tests/test_process_l1.py index 5097629..14c0d44 100644 --- a/tests/test_process_l1.py +++ b/tests/test_process_l1.py @@ -16,6 +16,21 @@ def get_test_data(sn: str = "684", ftype: str = "sbd") -> xr.Dataset: ) +def get_realtime_test_data(segment: int, ftype: str = "sbd") -> xr.Dataset: + """Load real-time test data for osu685 segments 27-30.""" + return ( + pd.read_csv( + str( + resources.files("tests").joinpath( + f"data/osu685-2025-056-0-{segment}.{ftype}.csv" + ) + ) + ) + .set_index("i") + .to_xarray() + ) + + def test_format_variables() -> None: config = load_config() sbd = pl1._format_variables(get_test_data("684", "sbd"), config) @@ -156,3 +171,166 @@ def test_find_dive_cycles_with_unknown_gaps() -> None: assert cycle_end == 10 assert surf_start == 10 assert surf_end == 12 + + +def test_realtime_velocity_processing() -> None: + """Test that velocity variables are added when processing real-time file pairs. + + In real-time mode, we process each sbd/tbd pair individually. + Individual files may not contain complete dive cycles, so velocity + may be NaN. The key test is that velocity variables are always added. + """ + from glide.config import load_config + + config = load_config() + + # Process segments 27-30 individually + segments = [27, 28, 29, 30] + results = [] + + for seg in segments: + sbd = get_realtime_test_data(seg, "sbd") + tbd = get_realtime_test_data(seg, "tbd") + + # Format and parse + flt_raw = sbd.copy() + flt = pl1.format_l1(pl1.parse_l1(sbd), config) + sci = pl1.format_l1(pl1.parse_l1(tbd), config) + + # Apply QC (catch GPS QC failures for small test files) + try: + flt = pl1.apply_qc(flt, config) + except (ValueError, AttributeError): + # GPS QC may fail on small test files - use basic QC instead + from glide import qc + + flt = qc.init_qc(flt, config=config) + flt = qc.apply_bounds(flt) + flt = qc.time(flt) + dim = list(flt.sizes.keys())[0] + flt = flt.swap_dims({dim: "time"}) + flt = qc.interpolate_missing(flt, config) + + try: + sci = pl1.apply_qc(sci, config) + except (ValueError, AttributeError): + from glide import qc + + sci = qc.init_qc(sci, config=config) + sci = qc.apply_bounds(sci) + sci = qc.time(sci) + dim = list(sci.sizes.keys())[0] + sci = sci.swap_dims({dim: "time"}) + sci = qc.interpolate_missing(sci, config) + + # Merge + merged = pl1.merge(flt, sci, config, "science") + merged = pl1.calculate_thermodynamics(merged, config) + + # Get profiles + out = pl1.get_profiles(merged, shallowest_profile=5.0, profile_distance=10) + + # Assign surface state and add velocity + out = pl1.assign_surface_state(out, flt=flt_raw) + out = pl1.add_velocity(out, config, flt=flt_raw) + + results.append( + { + "segment": seg, + "has_time_uv": "time_uv" in out, + "has_u": "u" in out, + "has_v": "v" in out, + "n_cycles": out.sizes.get("time_uv", 0), + "n_valid_u": int(np.isfinite(out.u.values).sum()) if "u" in out else 0, + "ds": out, + } + ) + + # All files should have velocity variables (even if NaN) + for r in results: + assert r["has_time_uv"], f"Segment {r['segment']} missing time_uv" + assert r["has_u"], f"Segment {r['segment']} missing u" + assert r["has_v"], f"Segment {r['segment']} missing v" + + +def test_realtime_velocity_merged() -> None: + """Test velocity detection when merging all real-time segments together. + + When multiple segments are combined, we should have enough data to + detect complete dive cycles and assign velocity. + """ + from glide.config import load_config + + config = load_config() + + # Concatenate all segments + segments = [27, 28, 29, 30] + all_sbd = [] + all_tbd = [] + + for seg in segments: + all_sbd.append(get_realtime_test_data(seg, "sbd")) + all_tbd.append(get_realtime_test_data(seg, "tbd")) + + # Concatenate along the index dimension + sbd = xr.concat(all_sbd, dim="i") + tbd = xr.concat(all_tbd, dim="i") + + # Re-index to have unique i values + sbd = sbd.assign_coords(i=np.arange(sbd.sizes["i"])) + tbd = tbd.assign_coords(i=np.arange(tbd.sizes["i"])) + + # Format and parse + flt_raw = sbd.copy() + flt = pl1.format_l1(pl1.parse_l1(sbd), config) + sci = pl1.format_l1(pl1.parse_l1(tbd), config) + + # Apply QC + try: + flt = pl1.apply_qc(flt, config) + except (ValueError, AttributeError): + from glide import qc + + flt = qc.init_qc(flt, config=config) + flt = qc.apply_bounds(flt) + flt = qc.time(flt) + dim = list(flt.sizes.keys())[0] + flt = flt.swap_dims({dim: "time"}) + flt = qc.interpolate_missing(flt, config) + + try: + sci = pl1.apply_qc(sci, config) + except (ValueError, AttributeError): + from glide import qc + + sci = qc.init_qc(sci, config=config) + sci = qc.apply_bounds(sci) + sci = qc.time(sci) + dim = list(sci.sizes.keys())[0] + sci = sci.swap_dims({dim: "time"}) + sci = qc.interpolate_missing(sci, config) + + # Merge + merged = pl1.merge(flt, sci, config, "science") + merged = pl1.calculate_thermodynamics(merged, config) + + # Get profiles + out = pl1.get_profiles(merged, shallowest_profile=5.0, profile_distance=10) + + # Check that we detected some profiles + n_dives = (out.dive_id.values >= 0).sum() + n_climbs = (out.climb_id.values >= 0).sum() + + # Assign surface state and add velocity + out = pl1.assign_surface_state(out, flt=flt_raw) + out = pl1.add_velocity(out, config, flt=flt_raw) + + # Should have velocity variables + assert "time_uv" in out, "Missing time_uv" + assert "u" in out, "Missing u" + assert "v" in out, "Missing v" + + # If we detected profiles, we should have some velocity estimates + # (may still be NaN if velocity data not in these segments) + if n_dives > 0: + assert out.sizes["time_uv"] >= 1, "Expected at least one velocity entry" From 15eb4668f4d15601d75bd7d5bd0301c3eac37674 Mon Sep 17 00:00:00 2001 From: Jesse Cusack Date: Tue, 27 Jan 2026 12:53:30 -0800 Subject: [PATCH 4/5] fix formats --- src/glide/cli.py | 9 ++++++++- src/glide/process_l1.py | 5 ++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/glide/cli.py b/src/glide/cli.py index ab8118b..44376aa 100644 --- a/src/glide/cli.py +++ b/src/glide/cli.py @@ -377,7 +377,14 @@ def get_base_name(l2_file: Path) -> str: # Extract base names from raw files (remove .sbd.nc, .sbd.csv, etc.) def get_raw_base_name(raw_file: Path) -> str: name = raw_file.name - for suffix in [".sbd.nc", ".sbd.csv", ".dbd.nc", ".dbd.csv", ".tbd.nc", ".tbd.csv"]: + for suffix in [ + ".sbd.nc", + ".sbd.csv", + ".dbd.nc", + ".dbd.csv", + ".tbd.nc", + ".tbd.csv", + ]: if name.endswith(suffix): return name[: -len(suffix)] return name.rsplit(".", 1)[0] diff --git a/src/glide/process_l1.py b/src/glide/process_l1.py index e4e5056..65d75c3 100644 --- a/src/glide/process_l1.py +++ b/src/glide/process_l1.py @@ -715,9 +715,8 @@ def backfill_velocity( u_old, v_old = u_vals[i], v_vals[i] is_missing = np.isnan(u_old) or np.isnan(v_old) - is_different = ( - not is_missing - and (abs(u_vel - u_old) > tolerance or abs(v_vel - v_old) > tolerance) + is_different = not is_missing and ( + abs(u_vel - u_old) > tolerance or abs(v_vel - v_old) > tolerance ) if is_missing or is_different: From b3e5598ae5d113d5e5767c818f68537754777069 Mon Sep 17 00:00:00 2001 From: Jesse Cusack Date: Tue, 27 Jan 2026 12:54:02 -0800 Subject: [PATCH 5/5] fix off conf load --- src/glide/cli.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/glide/cli.py b/src/glide/cli.py index 44376aa..0f80e7b 100644 --- a/src/glide/cli.py +++ b/src/glide/cli.py @@ -328,7 +328,6 @@ def backfill( where 'basename.sbd.nc' or 'basename.dbd.nc' is the corresponding raw file. """ raw_path = Path(raw_dir) - conf = config.load_config() # Sort L2 files by name to ensure chronological order l2_files_sorted = sorted([Path(f) for f in l2_files])