From c3f7b3a6fa768fd2b9d4dbc7554c83a794dc9944 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 17 Oct 2026 08:56:17 +0000 Subject: [PATCH 01/28] Implement create_reals_distribution_steps API for outcome distributions Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> --- pyproject.toml | 2 +- src/rtichoke/__init__.py | 2 + src/rtichoke/reals_distribution.py | 213 ++++++++++++++++++++- tests/test_reals_distribution_steps.py | 250 +++++++++++++++++++++++++ uv.lock | 8 +- 5 files changed, 469 insertions(+), 6 deletions(-) create mode 100644 tests/test_reals_distribution_steps.py diff --git a/pyproject.toml b/pyproject.toml index c98d32ea..ac1e61bf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ license = {text = "MIT"} requires-python = ">=3.12" dependencies = [ "plotly>=6.0.0,<7.0.0", - "polarstate==0.1.8", + "polarstate==0.1.9", "smoothstate>=0.1.1", "polars>=1.31.0", "reactable>=0.1.5", diff --git a/src/rtichoke/__init__.py b/src/rtichoke/__init__.py index e431ec94..de4e5c1f 100644 --- a/src/rtichoke/__init__.py +++ b/src/rtichoke/__init__.py @@ -62,6 +62,7 @@ ) from rtichoke.reals_distribution import ( + create_reals_distribution_steps as create_reals_distribution_steps, create_reals_distribution_times as create_reals_distribution_times, ) @@ -72,6 +73,7 @@ __all__ = [ "create_probs_histogram", + "create_reals_distribution_steps", "create_reals_distribution_times", "create_roc_curve", "create_roc_curve_times", diff --git a/src/rtichoke/reals_distribution.py b/src/rtichoke/reals_distribution.py index 1af95615..c6b8c34c 100644 --- a/src/rtichoke/reals_distribution.py +++ b/src/rtichoke/reals_distribution.py @@ -3,9 +3,11 @@ from __future__ import annotations import math -from typing import Any, Dict, List, Literal, Optional, Union +from typing import Any, Dict, List, Literal, Optional, Sequence, Union import numpy as np +import polars as pl +import polarstate from rtichoke._renderers import RtichokeBrowserChart @@ -194,3 +196,212 @@ def create_reals_distribution_times( title="Outcome Distribution", ) return RtichokeBrowserChart(spec=spec) + + +def create_reals_distribution_steps( + data: pl.DataFrame, + *, + id_col: str = "id", + step_col: str = "step", + reals_col: str = "reals", + reals_order: Sequence[Any] | None = None, + reals_scale: Literal["auto", "nominal", "ordinal"] = "auto", + censoring_heuristic: Literal["excluded", "adjusted"] = "excluded", + title: str = "Outcome Distribution", + renderer: RealsDistributionRenderer = "browser", +) -> RtichokeBrowserChart: + """Create a discrete-step reals/outcome distribution browser chart.""" + if not isinstance(data, pl.DataFrame): + raise TypeError(f"data must be a Polars DataFrame, got {type(data).__name__}") + + if renderer not in _SUPPORTED_REALS_DISTRIBUTION_RENDERERS: + supported = ", ".join( + repr(r) for h, r in enumerate(_SUPPORTED_REALS_DISTRIBUTION_RENDERERS) + ) + raise ValueError( + f"Unsupported renderer {renderer!r}. 'create_reals_distribution_steps' supports {supported}." + ) + + if censoring_heuristic not in ("excluded", "adjusted"): + raise ValueError( + f"Invalid censoring_heuristic {censoring_heuristic!r}. Expected 'excluded' or 'adjusted'." + ) + + if reals_scale not in ("auto", "nominal", "ordinal"): + raise ValueError( + f"Invalid reals_scale {reals_scale!r}. Expected 'auto', 'nominal', or 'ordinal'." + ) + + # Validate column presence + missing_cols = [c for c in (id_col, step_col, reals_col) if c not in data.columns] + if missing_cols: + raise ValueError(f"Missing required columns in DataFrame: {missing_cols}") + + # Validate non-null IDs and steps + if data[id_col].null_count() > 0: + raise ValueError(f"Column {id_col!r} contains missing/null values.") + + if data[step_col].null_count() > 0: + raise ValueError(f"Column {step_col!r} contains missing/null values.") + + # Validate steps are non-negative integers + step_series = data[step_col] + if not step_series.dtype.is_integer(): + # Check if values can be losslessly represented as non-negative integers + try: + step_floats = step_series.to_numpy().astype(float) + if not np.all(np.equal(np.mod(step_floats, 1), 0)): + raise ValueError + except Exception: + raise ValueError( + f"Column {step_col!r} must contain non-negative integer values." + ) + + if (step_series < 0).any(): + raise ValueError(f"Column {step_col!r} contains negative step values.") + + # Reject duplicate subject-step records + dup_count = data.select([id_col, step_col]).is_duplicated().sum() + if dup_count > 0: + raise ValueError( + f"Duplicate records found for subject-step pairs ({id_col!r}, {step_col!r})." + ) + + # Determine resolved outcome categories (reals_order) + reals_dtype = data[reals_col].dtype + + if reals_order is not None: + resolved_reals_order = [str(x) for x in reals_order] + # Verify no identity collisions in string conversions + if len(set(resolved_reals_order)) != len(reals_order): + raise ValueError( + "Distinct values in 'reals_order' collapsed into identical string representations." + ) + elif isinstance(reals_dtype, pl.Enum): + resolved_reals_order = [str(x) for x in reals_dtype.categories] + else: + # Unique non-null observed values, sorted deterministically + non_null_vals = data[reals_col].drop_nulls().unique() + if non_null_vals.len() == 0: + resolved_reals_order = [] + else: + sorted_vals = non_null_vals.sort() + resolved_reals_order = [str(x) for x in sorted_vals.to_list()] + + # Validate string identity uniqueness + if len(set(resolved_reals_order)) != len(resolved_reals_order): + raise ValueError( + "Distinct category values collapsed into duplicate string representations in reals_order." + ) + + # Resolve reals_scale + if reals_scale == "auto": + if ( + reals_order is not None + or isinstance(reals_dtype, pl.Enum) + or reals_dtype.is_numeric() + ): + resolved_scale = "ordinal" + else: + resolved_scale = "nominal" + else: + resolved_scale = reals_scale + + evaluations = [ + { + "id": "evaluation-1", + "population": "__shared_population__", + } + ] + + state_distributions: list[dict[str, Any]] = [] + + if censoring_heuristic == "excluded": + # Raw empirical distribution per step + steps_present = sorted(data[step_col].unique().to_list()) + + for step_val in steps_present: + step_sub = data.filter(pl.col(step_col) == step_val) + observed_reals = step_sub[reals_col].drop_nulls() + + if observed_reals.len() == 0: + continue + + # Count occurrences of each category + counts_df = observed_reals.cast(pl.String).value_counts() + counts_dict = dict( + zip(counts_df[reals_col].to_list(), counts_df["count"].to_list()) + ) + + states_list = [ + { + "stateId": cat_str, + "label": cat_str, + "count": int(counts_dict.get(cat_str, 0)), + } + for cat_str in resolved_reals_order + ] + + state_distributions.append( + { + "evaluationId": "evaluation-1", + "horizon": int(step_val), + "estimator": "raw", + "estimateOrigin": "observed_step", + "states": states_list, + } + ) + + else: + # AJ-adjusted distribution using polarstate + tt = polarstate.prepare_transition_table_steps( + data, + id_col=id_col, + step_col=step_col, + state_col=reals_col, + state_order=resolved_reals_order, + ) + aj_df = polarstate.predict_aj_estimates(tt) + + # Build stateDistributions from aj_df + # aj_df has columns: 'step', 'state', 'state_occupancy_probability' + steps_present = sorted(aj_df["step"].unique().to_list()) + + for step_val in steps_present: + step_sub = aj_df.filter(pl.col("step") == step_val) + prob_dict = dict( + zip( + step_sub["state"].cast(pl.String).to_list(), + step_sub["state_occupancy_probability"].to_list(), + ) + ) + + states_list = [ + { + "stateId": cat_str, + "label": cat_str, + "estimate": float(prob_dict.get(cat_str, 0.0)), + } + for cat_str in resolved_reals_order + ] + + state_distributions.append( + { + "evaluationId": "evaluation-1", + "horizon": int(step_val), + "estimator": "aalen_johansen", + "estimateOrigin": "observed_step", + "states": states_list, + } + ) + + spec: dict[str, Any] = { + "schemaVersion": "2.0", + "type": "outcome_distribution", + "title": title, + "stateScale": resolved_scale, + "evaluations": evaluations, + "stateDistributions": state_distributions, + } + + return RtichokeBrowserChart(spec=spec) diff --git a/tests/test_reals_distribution_steps.py b/tests/test_reals_distribution_steps.py new file mode 100644 index 00000000..afd968fa --- /dev/null +++ b/tests/test_reals_distribution_steps.py @@ -0,0 +1,250 @@ +"""Tests for create_reals_distribution_steps and discrete-step outcome distributions.""" + +import polars as pl +import pytest +import rtichoke +from rtichoke.reals_distribution import create_reals_distribution_steps + + +def test_public_export(): + assert hasattr(rtichoke, "create_reals_distribution_steps") + assert "create_reals_distribution_steps" in rtichoke.__all__ + + +def test_input_validation(): + # Non-DataFrame input + with pytest.raises(TypeError, match="must be a Polars DataFrame"): + create_reals_distribution_steps([{"id": 1, "step": 0, "reals": "Mild"}]) # type: ignore + + df = pl.DataFrame({"id": [1], "step": [0], "reals": ["Mild"]}) + + # Unsupported renderer + with pytest.raises(ValueError, match="Unsupported renderer"): + create_reals_distribution_steps(df, renderer="plotly") # type: ignore + + # Invalid censoring_heuristic + with pytest.raises(ValueError, match="Invalid censoring_heuristic"): + create_reals_distribution_steps(df, censoring_heuristic="invalid") # type: ignore + + # Invalid reals_scale + with pytest.raises(ValueError, match="Invalid reals_scale"): + create_reals_distribution_steps(df, reals_scale="invalid") # type: ignore + + # Missing column + with pytest.raises(ValueError, match="Missing required columns"): + create_reals_distribution_steps(df, reals_col="missing") + + # Missing/null IDs + df_null_id = pl.DataFrame( + {"id": [None, 1], "step": [0, 1], "reals": ["Mild", "Moderate"]} + ) + with pytest.raises(ValueError, match="contains missing/null values"): + create_reals_distribution_steps(df_null_id) + + # Missing/null steps + df_null_step = pl.DataFrame( + {"id": [1, 2], "step": [0, None], "reals": ["Mild", "Moderate"]} + ) + with pytest.raises(ValueError, match="contains missing/null values"): + create_reals_distribution_steps(df_null_step) + + # Negative steps + df_neg_step = pl.DataFrame({"id": [1], "step": [-1], "reals": ["Mild"]}) + with pytest.raises(ValueError, match="negative step values"): + create_reals_distribution_steps(df_neg_step) + + # Non-integer step values + df_float_step = pl.DataFrame({"id": [1], "step": [1.5], "reals": ["Mild"]}) + with pytest.raises(ValueError, match="non-negative integer values"): + create_reals_distribution_steps(df_float_step) + + # Duplicate subject-step pairs + df_dup = pl.DataFrame({"id": [1, 1], "step": [0, 0], "reals": ["Mild", "Moderate"]}) + with pytest.raises(ValueError, match="Duplicate records found"): + create_reals_distribution_steps(df_dup) + + +def test_reals_order_and_scale_resolution(): + # 1. Explicit reals_order + df = pl.DataFrame( + {"id": [1, 2, 3], "step": [0, 0, 0], "reals": ["Moderate", "Mild", "None"]} + ) + chart = create_reals_distribution_steps( + df, reals_order=["None", "Mild", "Moderate"] + ) + assert ( + chart.spec["stateScale"] == "ordinal" + ) # Auto resolved to ordinal because reals_order is explicit + states = chart.spec["stateDistributions"][0]["states"] + assert [s["stateId"] for s in states] == ["None", "Mild", "Moderate"] + + # 2. Explicit reals_scale + chart_nom = create_reals_distribution_steps( + df, reals_order=["None", "Mild", "Moderate"], reals_scale="nominal" + ) + assert chart_nom.spec["stateScale"] == "nominal" + + # 3. Polars Enum + enum_dtype = pl.Enum(["None", "Mild", "Moderate"]) + df_enum = pl.DataFrame( + { + "id": [1, 2, 3], + "step": [0, 0, 0], + "reals": pl.Series(["Moderate", "Mild", "None"], dtype=enum_dtype), + } + ) + chart_enum = create_reals_distribution_steps(df_enum) + assert chart_enum.spec["stateScale"] == "ordinal" + states_enum = chart_enum.spec["stateDistributions"][0]["states"] + assert [s["stateId"] for s in states_enum] == ["None", "Mild", "Moderate"] + + # 4. Numeric outcome categories + df_num = pl.DataFrame({"id": [1, 2, 3], "step": [0, 0, 0], "reals": [2, 0, 1]}) + chart_num = create_reals_distribution_steps(df_num) + assert chart_num.spec["stateScale"] == "ordinal" + states_num = chart_num.spec["stateDistributions"][0]["states"] + assert [s["stateId"] for s in states_num] == ["0", "1", "2"] + + # 5. String/categorical nominal default + df_str = pl.DataFrame({"id": [1, 2], "step": [0, 0], "reals": ["Red", "Blue"]}) + chart_str = create_reals_distribution_steps(df_str) + assert chart_str.spec["stateScale"] == "nominal" + + +def test_complete_panel_raw_and_aj(): + df = pl.DataFrame( + { + "patient_id": [1, 1, 1, 2, 2, 2], + "visit": [0, 1, 2, 0, 1, 2], + "severity": ["None", "Mild", "Moderate", "None", "Mild", "Mild"], + } + ) + + # Raw + chart_raw = create_reals_distribution_steps( + data=df, + id_col="patient_id", + step_col="visit", + reals_col="severity", + reals_order=["None", "Mild", "Moderate"], + censoring_heuristic="excluded", + ) + + spec_raw = chart_raw.spec + assert spec_raw["schemaVersion"] == "2.0" + assert spec_raw["type"] == "outcome_distribution" + assert spec_raw["title"] == "Outcome Distribution" + assert spec_raw["evaluations"] == [ + {"id": "evaluation-1", "population": "__shared_population__"} + ] + + dist_raw = spec_raw["stateDistributions"] + assert len(dist_raw) == 3 + + # Step 0: 2 None, 0 Mild, 0 Moderate + assert dist_raw[0]["horizon"] == 0 + assert dist_raw[0]["estimator"] == "raw" + assert dist_raw[0]["estimateOrigin"] == "observed_step" + assert dist_raw[0]["states"] == [ + {"stateId": "None", "label": "None", "count": 2}, + {"stateId": "Mild", "label": "Mild", "count": 0}, + {"stateId": "Moderate", "label": "Moderate", "count": 0}, + ] + + # Step 1: 0 None, 2 Mild, 0 Moderate + assert dist_raw[1]["horizon"] == 1 + assert dist_raw[1]["states"] == [ + {"stateId": "None", "label": "None", "count": 0}, + {"stateId": "Mild", "label": "Mild", "count": 2}, + {"stateId": "Moderate", "label": "Moderate", "count": 0}, + ] + + # Step 2: 0 None, 1 Mild, 1 Moderate + assert dist_raw[2]["horizon"] == 2 + assert dist_raw[2]["states"] == [ + {"stateId": "None", "label": "None", "count": 0}, + {"stateId": "Mild", "label": "Mild", "count": 1}, + {"stateId": "Moderate", "label": "Moderate", "count": 1}, + ] + + # AJ + chart_aj = create_reals_distribution_steps( + data=df, + id_col="patient_id", + step_col="visit", + reals_col="severity", + reals_order=["None", "Mild", "Moderate"], + censoring_heuristic="adjusted", + ) + + spec_aj = chart_aj.spec + dist_aj = spec_aj["stateDistributions"] + assert len(dist_aj) == 3 + + # Step 0: None 1.0, Mild 0.0, Moderate 0.0 + assert dist_aj[0]["horizon"] == 0 + assert dist_aj[0]["estimator"] == "aalen_johansen" + assert dist_aj[0]["estimateOrigin"] == "observed_step" + assert dist_aj[0]["states"] == [ + {"stateId": "None", "label": "None", "estimate": 1.0}, + {"stateId": "Mild", "label": "Mild", "estimate": 0.0}, + {"stateId": "Moderate", "label": "Moderate", "estimate": 0.0}, + ] + + # Step 2: None 0.0, Mild 0.5, Moderate 0.5 + assert dist_aj[2]["horizon"] == 2 + assert dist_aj[2]["states"] == [ + {"stateId": "None", "label": "None", "estimate": 0.0}, + {"stateId": "Mild", "label": "Mild", "estimate": 0.5}, + {"stateId": "Moderate", "label": "Moderate", "estimate": 0.5}, + ] + + +def test_missing_reals_excluded(): + # Intermittent missing outcome at step 1 for patient 2 + df = pl.DataFrame( + { + "id": [1, 1, 1, 2, 2, 2], + "step": [0, 1, 2, 0, 1, 2], + "reals": ["None", "Mild", "Moderate", "None", None, "Mild"], + } + ) + + chart = create_reals_distribution_steps( + df, reals_order=["None", "Mild", "Moderate"], censoring_heuristic="excluded" + ) + dist = chart.spec["stateDistributions"] + + # Step 1 has 1 observed outcome (Mild) for subject 1, subject 2 missing. Count = 1 Mild. + assert dist[1]["horizon"] == 1 + assert dist[1]["states"] == [ + {"stateId": "None", "label": "None", "count": 0}, + {"stateId": "Mild", "label": "Mild", "count": 1}, + {"stateId": "Moderate", "label": "Moderate", "count": 0}, + ] + + +def test_nonconsecutive_steps_and_no_step_0(): + df = pl.DataFrame( + {"id": [1, 1, 2, 2], "step": [5, 10, 5, 10], "reals": ["A", "B", "A", "A"]} + ) + + chart = create_reals_distribution_steps(df, censoring_heuristic="excluded") + dist = chart.spec["stateDistributions"] + assert len(dist) == 2 + assert dist[0]["horizon"] == 5 + assert dist[1]["horizon"] == 10 + + +def test_zero_count_category_preservation(): + df = pl.DataFrame({"id": [1, 2], "step": [0, 0], "reals": ["Mild", "Mild"]}) + + chart = create_reals_distribution_steps( + df, reals_order=["None", "Mild", "Severe"], censoring_heuristic="excluded" + ) + states = chart.spec["stateDistributions"][0]["states"] + assert states == [ + {"stateId": "None", "label": "None", "count": 0}, + {"stateId": "Mild", "label": "Mild", "count": 2}, + {"stateId": "Severe", "label": "Severe", "count": 0}, + ] diff --git a/uv.lock b/uv.lock index 28e2e333..8b0dc419 100644 --- a/uv.lock +++ b/uv.lock @@ -2069,14 +2069,14 @@ wheels = [ [[package]] name = "polarstate" -version = "0.1.8" +version = "0.1.9" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "polars" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9b/09/107eb49e8fc33392d1f226c353adbaa2c345e9e77b82039bf0b9edbfadfc/polarstate-0.1.8.tar.gz", hash = "sha256:803e158f5961f234700aa0121e47ca754ff76796d01dc0230e5133f020cbe7bd", size = 3155, upload-time = "2025-07-29T02:24:27.829Z" } +sdist = { url = "https://files.pythonhosted.org/packages/50/63/f2267a3d38017712530180547a8391b47bdc534596133fbedd12c5dd02dd/polarstate-0.1.9.tar.gz", hash = "sha256:801dfa0aedeb11a4bddf7cd26c95bf906212e7ee0f05316d111c1ccac97fe5c1", size = 8672, upload-time = "2026-10-16T18:26:49.513Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/68/c80de613a28e48be2ce15e00118bf8a018b74229349fd1c26347b352dcee/polarstate-0.1.8-py3-none-any.whl", hash = "sha256:710d791e67ea09c46f79030ecd1253e67a9d2f100aceb848c25967d88314db6a", size = 4403, upload-time = "2025-07-29T02:24:27.122Z" }, + { url = "https://files.pythonhosted.org/packages/03/7e/03b93b990a56f1c2c602c6780591ecb7bf6f6cb105ffdcb92ff8b173976b/polarstate-0.1.9-py3-none-any.whl", hash = "sha256:07606e86295148409e626e09ff275f4e58e54d20aed87316497ec55d561390ea", size = 10938, upload-time = "2026-10-16T18:26:48.724Z" }, ] [[package]] @@ -2616,7 +2616,7 @@ requires-dist = [ { name = "matplotlib", marker = "extra == 'matplotlib'", specifier = ">=3.9.0" }, { name = "plotly", specifier = ">=6.0.0,<7.0.0" }, { name = "polars", specifier = ">=1.31.0" }, - { name = "polarstate", specifier = "==0.1.8" }, + { name = "polarstate", specifier = "==0.1.9" }, { name = "reactable", specifier = ">=0.1.5" }, { name = "scikit-learn", specifier = ">=1.6.1" }, { name = "smoothstate", specifier = ">=0.1.1" }, From 1e5bf6f4c24cc6b7ec3c495d8af702ff8d00700a Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 17 Oct 2026 09:01:16 +0000 Subject: [PATCH 02/28] Implement create_reals_distribution_steps API for discrete-step outcome distributions Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> --- tests/test_public_exports.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_public_exports.py b/tests/test_public_exports.py index 93b3a5e5..0dbc15be 100644 --- a/tests/test_public_exports.py +++ b/tests/test_public_exports.py @@ -3,6 +3,7 @@ EXPECTED_PUBLIC_EXPORTS = { "create_probs_histogram", + "create_reals_distribution_steps", "create_reals_distribution_times", "create_roc_curve", "create_roc_curve_times", From b801668dd8774ce9d7d14032c1dde096d9d4a9fc Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 17 Oct 2026 09:17:30 +0000 Subject: [PATCH 03/28] Implement create_reals_distribution_steps API for discrete-step outcome distributions Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> --- .../performance_data_times.py | 2 +- src/rtichoke/processing/adjustments.py | 63 ++++++++++++++----- src/rtichoke/processing/transforms.py | 8 +-- 3 files changed, 54 insertions(+), 19 deletions(-) diff --git a/src/rtichoke/performance_data/performance_data_times.py b/src/rtichoke/performance_data/performance_data_times.py index 956ad73a..b091bcc2 100644 --- a/src/rtichoke/performance_data/performance_data_times.py +++ b/src/rtichoke/performance_data/performance_data_times.py @@ -183,7 +183,7 @@ def _compute_population_event_risk_times( """Compute the genuine pooled full-population KM/AJ event risk estimate.""" df = pl.DataFrame( { - "reals": np.asarray(reals), + "reals": np.asarray(reals, dtype=int), "times": np.asarray(times, dtype=float), "fixed_time_horizon": float(horizon), } diff --git a/src/rtichoke/processing/adjustments.py b/src/rtichoke/processing/adjustments.py index 519b7823..ebe8e941 100644 --- a/src/rtichoke/processing/adjustments.py +++ b/src/rtichoke/processing/adjustments.py @@ -182,17 +182,57 @@ def extract_aj_estimate_by_cutoffs( mask_predicted_negatives ) - event_table_predicted_positives = prepare_event_table(predicted_positives) - event_table_predicted_negatives = prepare_event_table(predicted_negatives) + estimate_origin_enum = pl.Enum(["fixed_time_horizons", "event_table"]) + + if len(predicted_positives) > 0: + event_table_predicted_positives = prepare_event_table( + predicted_positives + ) + aj_pos = predict_aj_estimates( + event_table_predicted_positives, + pl.Series(horizons), + full_event_table, + ) + else: + aj_pos = pl.DataFrame( + { + "times": horizons, + "state_occupancy_probability_0": [0.0] * len(horizons), + "state_occupancy_probability_1": [0.0] * len(horizons), + "state_occupancy_probability_2": [0.0] * len(horizons), + "estimate_origin": pl.Series( + ["fixed_time_horizons"] * len(horizons), + dtype=estimate_origin_enum, + ), + } + ) + + if len(predicted_negatives) > 0: + event_table_predicted_negatives = prepare_event_table( + predicted_negatives + ) + aj_neg = predict_aj_estimates( + event_table_predicted_negatives, + pl.Series(horizons), + full_event_table, + ) + else: + aj_neg = pl.DataFrame( + { + "times": horizons, + "state_occupancy_probability_0": [0.0] * len(horizons), + "state_occupancy_probability_1": [0.0] * len(horizons), + "state_occupancy_probability_2": [0.0] * len(horizons), + "estimate_origin": pl.Series( + ["fixed_time_horizons"] * len(horizons), + dtype=estimate_origin_enum, + ), + } + ) aj_estimate_predicted_positives = ( ( - predict_aj_estimates( - event_table_predicted_positives, - pl.Series(horizons), - full_event_table, - ) - .with_columns( + aj_pos.with_columns( pl.lit(chosen_cutoff).alias("chosen_cutoff"), pl.lit(stratification_criteria) .alias("stratified_by") @@ -237,12 +277,7 @@ def extract_aj_estimate_by_cutoffs( aj_estimate_predicted_negatives = ( ( - predict_aj_estimates( - event_table_predicted_negatives, - pl.Series(horizons), - full_event_table, - ) - .with_columns( + aj_neg.with_columns( pl.lit(chosen_cutoff).alias("chosen_cutoff"), pl.lit(stratification_criteria) .alias("stratified_by") diff --git a/src/rtichoke/processing/transforms.py b/src/rtichoke/processing/transforms.py index 0a0356a1..2d06caf5 100644 --- a/src/rtichoke/processing/transforms.py +++ b/src/rtichoke/processing/transforms.py @@ -268,9 +268,9 @@ def _create_list_data_to_adjust( probs_array = np.asarray(probs_dict[reference_group_labels[0]]) if isinstance(reals_dict, dict): - reals_array = np.asarray(reals_dict[reference_group_labels[0]]) + reals_array = np.asarray(reals_dict[reference_group_labels[0]], dtype=int) else: - reals_array = np.asarray(reals_dict) + reals_array = np.asarray(reals_dict, dtype=int) if isinstance(times_dict, dict): times_array = np.asarray(times_dict[reference_group_labels[0]]) @@ -287,7 +287,7 @@ def _create_list_data_to_adjust( ).with_columns(pl.col("reference_group").cast(reference_group_enum)) elif num_keys_reals == 1: - reals_array = np.asarray(reals_dict) + reals_array = np.asarray(reals_dict, dtype=int) times_array = np.asarray(times_dict) n = len(reals_array) @@ -308,7 +308,7 @@ def _create_list_data_to_adjust( { "reference_group": reference_group_labels, "probs": list(probs_dict.values()), - "reals": list(reals_dict.values()), + "reals": [np.asarray(v, dtype=int) for v in reals_dict.values()], "times": list(times_dict.values()), } ) From 13981206a58b86728848807861f5f4105e48b97a Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 17 Oct 2026 09:44:38 +0000 Subject: [PATCH 04/28] Address PR feedback for create_reals_distribution_steps Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> --- .../performance_data_times.py | 2 +- src/rtichoke/processing/adjustments.py | 63 ++--- src/rtichoke/processing/transforms.py | 8 +- src/rtichoke/reals_distribution.py | 16 +- tests/test_reals_distribution_steps.py | 216 ++++++++++-------- 5 files changed, 156 insertions(+), 149 deletions(-) diff --git a/src/rtichoke/performance_data/performance_data_times.py b/src/rtichoke/performance_data/performance_data_times.py index b091bcc2..956ad73a 100644 --- a/src/rtichoke/performance_data/performance_data_times.py +++ b/src/rtichoke/performance_data/performance_data_times.py @@ -183,7 +183,7 @@ def _compute_population_event_risk_times( """Compute the genuine pooled full-population KM/AJ event risk estimate.""" df = pl.DataFrame( { - "reals": np.asarray(reals, dtype=int), + "reals": np.asarray(reals), "times": np.asarray(times, dtype=float), "fixed_time_horizon": float(horizon), } diff --git a/src/rtichoke/processing/adjustments.py b/src/rtichoke/processing/adjustments.py index ebe8e941..519b7823 100644 --- a/src/rtichoke/processing/adjustments.py +++ b/src/rtichoke/processing/adjustments.py @@ -182,57 +182,17 @@ def extract_aj_estimate_by_cutoffs( mask_predicted_negatives ) - estimate_origin_enum = pl.Enum(["fixed_time_horizons", "event_table"]) - - if len(predicted_positives) > 0: - event_table_predicted_positives = prepare_event_table( - predicted_positives - ) - aj_pos = predict_aj_estimates( - event_table_predicted_positives, - pl.Series(horizons), - full_event_table, - ) - else: - aj_pos = pl.DataFrame( - { - "times": horizons, - "state_occupancy_probability_0": [0.0] * len(horizons), - "state_occupancy_probability_1": [0.0] * len(horizons), - "state_occupancy_probability_2": [0.0] * len(horizons), - "estimate_origin": pl.Series( - ["fixed_time_horizons"] * len(horizons), - dtype=estimate_origin_enum, - ), - } - ) - - if len(predicted_negatives) > 0: - event_table_predicted_negatives = prepare_event_table( - predicted_negatives - ) - aj_neg = predict_aj_estimates( - event_table_predicted_negatives, - pl.Series(horizons), - full_event_table, - ) - else: - aj_neg = pl.DataFrame( - { - "times": horizons, - "state_occupancy_probability_0": [0.0] * len(horizons), - "state_occupancy_probability_1": [0.0] * len(horizons), - "state_occupancy_probability_2": [0.0] * len(horizons), - "estimate_origin": pl.Series( - ["fixed_time_horizons"] * len(horizons), - dtype=estimate_origin_enum, - ), - } - ) + event_table_predicted_positives = prepare_event_table(predicted_positives) + event_table_predicted_negatives = prepare_event_table(predicted_negatives) aj_estimate_predicted_positives = ( ( - aj_pos.with_columns( + predict_aj_estimates( + event_table_predicted_positives, + pl.Series(horizons), + full_event_table, + ) + .with_columns( pl.lit(chosen_cutoff).alias("chosen_cutoff"), pl.lit(stratification_criteria) .alias("stratified_by") @@ -277,7 +237,12 @@ def extract_aj_estimate_by_cutoffs( aj_estimate_predicted_negatives = ( ( - aj_neg.with_columns( + predict_aj_estimates( + event_table_predicted_negatives, + pl.Series(horizons), + full_event_table, + ) + .with_columns( pl.lit(chosen_cutoff).alias("chosen_cutoff"), pl.lit(stratification_criteria) .alias("stratified_by") diff --git a/src/rtichoke/processing/transforms.py b/src/rtichoke/processing/transforms.py index 2d06caf5..0a0356a1 100644 --- a/src/rtichoke/processing/transforms.py +++ b/src/rtichoke/processing/transforms.py @@ -268,9 +268,9 @@ def _create_list_data_to_adjust( probs_array = np.asarray(probs_dict[reference_group_labels[0]]) if isinstance(reals_dict, dict): - reals_array = np.asarray(reals_dict[reference_group_labels[0]], dtype=int) + reals_array = np.asarray(reals_dict[reference_group_labels[0]]) else: - reals_array = np.asarray(reals_dict, dtype=int) + reals_array = np.asarray(reals_dict) if isinstance(times_dict, dict): times_array = np.asarray(times_dict[reference_group_labels[0]]) @@ -287,7 +287,7 @@ def _create_list_data_to_adjust( ).with_columns(pl.col("reference_group").cast(reference_group_enum)) elif num_keys_reals == 1: - reals_array = np.asarray(reals_dict, dtype=int) + reals_array = np.asarray(reals_dict) times_array = np.asarray(times_dict) n = len(reals_array) @@ -308,7 +308,7 @@ def _create_list_data_to_adjust( { "reference_group": reference_group_labels, "probs": list(probs_dict.values()), - "reals": [np.asarray(v, dtype=int) for v in reals_dict.values()], + "reals": list(reals_dict.values()), "times": list(times_dict.values()), } ) diff --git a/src/rtichoke/reals_distribution.py b/src/rtichoke/reals_distribution.py index c6b8c34c..4b2c2f77 100644 --- a/src/rtichoke/reals_distribution.py +++ b/src/rtichoke/reals_distribution.py @@ -294,13 +294,19 @@ def create_reals_distribution_steps( "Distinct category values collapsed into duplicate string representations in reals_order." ) + # Verify all non-null observed values are present in resolved_reals_order + observed_non_null = [ + str(x) for x in data[reals_col].drop_nulls().unique().to_list() + ] + unrecognized = set(observed_non_null) - set(resolved_reals_order) + if unrecognized: + raise ValueError( + f"Observed outcomes contain values not present in declared 'reals_order': {sorted(unrecognized)}" + ) + # Resolve reals_scale if reals_scale == "auto": - if ( - reals_order is not None - or isinstance(reals_dtype, pl.Enum) - or reals_dtype.is_numeric() - ): + if isinstance(reals_dtype, pl.Enum) or reals_dtype.is_numeric(): resolved_scale = "ordinal" else: resolved_scale = "nominal" diff --git a/tests/test_reals_distribution_steps.py b/tests/test_reals_distribution_steps.py index afd968fa..a20c7950 100644 --- a/tests/test_reals_distribution_steps.py +++ b/tests/test_reals_distribution_steps.py @@ -63,28 +63,35 @@ def test_input_validation(): with pytest.raises(ValueError, match="Duplicate records found"): create_reals_distribution_steps(df_dup) + # Observed outcomes not in declared reals_order + df_unrecognized = pl.DataFrame( + {"id": [1, 2], "step": [0, 0], "reals": ["Mild", "Severe"]} + ) + with pytest.raises( + ValueError, match="Observed outcomes contain values not present in declared" + ): + create_reals_distribution_steps(df_unrecognized, reals_order=["None", "Mild"]) + def test_reals_order_and_scale_resolution(): - # 1. Explicit reals_order + # 1. Explicit reals_order on ordinary strings remains nominal under auto df = pl.DataFrame( - {"id": [1, 2, 3], "step": [0, 0, 0], "reals": ["Moderate", "Mild", "None"]} - ) - chart = create_reals_distribution_steps( - df, reals_order=["None", "Mild", "Moderate"] + {"id": [1, 2, 3], "step": [0, 0, 0], "reals": ["Blue", "Green", "Red"]} ) + chart = create_reals_distribution_steps(df, reals_order=["Red", "Green", "Blue"]) assert ( - chart.spec["stateScale"] == "ordinal" - ) # Auto resolved to ordinal because reals_order is explicit + chart.spec["stateScale"] == "nominal" + ) # Explicit reals_order alone does NOT imply ordinal scale states = chart.spec["stateDistributions"][0]["states"] - assert [s["stateId"] for s in states] == ["None", "Mild", "Moderate"] + assert [s["stateId"] for s in states] == ["Red", "Green", "Blue"] - # 2. Explicit reals_scale - chart_nom = create_reals_distribution_steps( - df, reals_order=["None", "Mild", "Moderate"], reals_scale="nominal" + # 2. Explicit reals_scale="ordinal" overrides default nominal + chart_ord = create_reals_distribution_steps( + df, reals_order=["Red", "Green", "Blue"], reals_scale="ordinal" ) - assert chart_nom.spec["stateScale"] == "nominal" + assert chart_ord.spec["stateScale"] == "ordinal" - # 3. Polars Enum + # 3. Polars Enum auto-resolves to ordinal enum_dtype = pl.Enum(["None", "Mild", "Moderate"]) df_enum = pl.DataFrame( { @@ -98,129 +105,158 @@ def test_reals_order_and_scale_resolution(): states_enum = chart_enum.spec["stateDistributions"][0]["states"] assert [s["stateId"] for s in states_enum] == ["None", "Mild", "Moderate"] - # 4. Numeric outcome categories + # 4. Numeric outcome categories auto-resolve to ordinal df_num = pl.DataFrame({"id": [1, 2, 3], "step": [0, 0, 0], "reals": [2, 0, 1]}) chart_num = create_reals_distribution_steps(df_num) assert chart_num.spec["stateScale"] == "ordinal" states_num = chart_num.spec["stateDistributions"][0]["states"] assert [s["stateId"] for s in states_num] == ["0", "1", "2"] - # 5. String/categorical nominal default - df_str = pl.DataFrame({"id": [1, 2], "step": [0, 0], "reals": ["Red", "Blue"]}) - chart_str = create_reals_distribution_steps(df_str) - assert chart_str.spec["stateScale"] == "nominal" - -def test_complete_panel_raw_and_aj(): +def test_mass_conservation_and_sum_checks(): df = pl.DataFrame( { - "patient_id": [1, 1, 1, 2, 2, 2], - "visit": [0, 1, 2, 0, 1, 2], - "severity": ["None", "Mild", "Moderate", "None", "Mild", "Mild"], + "id": [1, 1, 1, 2, 2, 2, 3, 3, 3], + "step": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "reals": [ + "None", + "Mild", + "Moderate", + "None", + "Mild", + "Mild", + "None", + "None", + "Mild", + ], } ) - # Raw + # Raw counts sum check chart_raw = create_reals_distribution_steps( data=df, - id_col="patient_id", - step_col="visit", - reals_col="severity", reals_order=["None", "Mild", "Moderate"], censoring_heuristic="excluded", ) + for dist in chart_raw.spec["stateDistributions"]: + total_counts = sum(s["count"] for s in dist["states"]) + assert total_counts == 3 - spec_raw = chart_raw.spec - assert spec_raw["schemaVersion"] == "2.0" - assert spec_raw["type"] == "outcome_distribution" - assert spec_raw["title"] == "Outcome Distribution" - assert spec_raw["evaluations"] == [ - {"id": "evaluation-1", "population": "__shared_population__"} - ] - - dist_raw = spec_raw["stateDistributions"] - assert len(dist_raw) == 3 - - # Step 0: 2 None, 0 Mild, 0 Moderate - assert dist_raw[0]["horizon"] == 0 - assert dist_raw[0]["estimator"] == "raw" - assert dist_raw[0]["estimateOrigin"] == "observed_step" - assert dist_raw[0]["states"] == [ - {"stateId": "None", "label": "None", "count": 2}, - {"stateId": "Mild", "label": "Mild", "count": 0}, - {"stateId": "Moderate", "label": "Moderate", "count": 0}, - ] - - # Step 1: 0 None, 2 Mild, 0 Moderate - assert dist_raw[1]["horizon"] == 1 - assert dist_raw[1]["states"] == [ - {"stateId": "None", "label": "None", "count": 0}, - {"stateId": "Mild", "label": "Mild", "count": 2}, - {"stateId": "Moderate", "label": "Moderate", "count": 0}, - ] - - # Step 2: 0 None, 1 Mild, 1 Moderate - assert dist_raw[2]["horizon"] == 2 - assert dist_raw[2]["states"] == [ - {"stateId": "None", "label": "None", "count": 0}, - {"stateId": "Mild", "label": "Mild", "count": 1}, - {"stateId": "Moderate", "label": "Moderate", "count": 1}, - ] - - # AJ + # AJ probabilities sum to 1.0 check chart_aj = create_reals_distribution_steps( data=df, - id_col="patient_id", - step_col="visit", - reals_col="severity", reals_order=["None", "Mild", "Moderate"], censoring_heuristic="adjusted", ) + for dist in chart_aj.spec["stateDistributions"]: + total_prob = sum(s["estimate"] for s in dist["states"]) + assert pytest.approx(total_prob, abs=1e-6) == 1.0 - spec_aj = chart_aj.spec - dist_aj = spec_aj["stateDistributions"] - assert len(dist_aj) == 3 - # Step 0: None 1.0, Mild 0.0, Moderate 0.0 - assert dist_aj[0]["horizon"] == 0 - assert dist_aj[0]["estimator"] == "aalen_johansen" - assert dist_aj[0]["estimateOrigin"] == "observed_step" - assert dist_aj[0]["states"] == [ +def test_aj_scenarios_and_independent_validation(): + # 1. Complete panel + df_complete = pl.DataFrame( + { + "id": [1, 1, 1, 2, 2, 2], + "step": [0, 1, 2, 0, 1, 2], + "reals": ["None", "Mild", "Moderate", "None", "Mild", "Mild"], + } + ) + chart_complete = create_reals_distribution_steps( + df_complete, + reals_order=["None", "Mild", "Moderate"], + censoring_heuristic="adjusted", + ) + dist_c = chart_complete.spec["stateDistributions"] + # Step 0: None=1.0, Mild=0.0, Moderate=0.0 + assert dist_c[0]["states"] == [ {"stateId": "None", "label": "None", "estimate": 1.0}, {"stateId": "Mild", "label": "Mild", "estimate": 0.0}, {"stateId": "Moderate", "label": "Moderate", "estimate": 0.0}, ] - - # Step 2: None 0.0, Mild 0.5, Moderate 0.5 - assert dist_aj[2]["horizon"] == 2 - assert dist_aj[2]["states"] == [ + # Step 1: None=0.0, Mild=1.0, Moderate=0.0 + assert dist_c[1]["states"] == [ + {"stateId": "None", "label": "None", "estimate": 0.0}, + {"stateId": "Mild", "label": "Mild", "estimate": 1.0}, + {"stateId": "Moderate", "label": "Moderate", "estimate": 0.0}, + ] + # Step 2: None=0.0, Mild=0.5, Moderate=0.5 + assert dist_c[2]["states"] == [ {"stateId": "None", "label": "None", "estimate": 0.0}, {"stateId": "Mild", "label": "Mild", "estimate": 0.5}, {"stateId": "Moderate", "label": "Moderate", "estimate": 0.5}, ] + # 2. Terminal dropout / incomplete panel + # Patient 2 drops out after step 1 + df_dropout = pl.DataFrame( + { + "id": [1, 1, 1, 2, 2], + "step": [0, 1, 2, 0, 1], + "reals": ["None", "Mild", "Moderate", "None", "Mild"], + } + ) + chart_dropout = create_reals_distribution_steps( + df_dropout, + reals_order=["None", "Mild", "Moderate"], + censoring_heuristic="adjusted", + ) + dist_d = chart_dropout.spec["stateDistributions"] + # Step 2: Subject 1 moved Mild -> Moderate. Subject 2 dropped out while in Mild. + # AJ occupancy at step 2: None=0.0, Mild=0.0, Moderate=1.0 + assert dist_d[2]["states"] == [ + {"stateId": "None", "label": "None", "estimate": 0.0}, + {"stateId": "Mild", "label": "Mild", "estimate": 0.0}, + {"stateId": "Moderate", "label": "Moderate", "estimate": 1.0}, + ] -def test_missing_reals_excluded(): - # Intermittent missing outcome at step 1 for patient 2 - df = pl.DataFrame( + # 3. Intermittent missing outcomes under 'excluded' vs 'adjusted' + df_intermittent = pl.DataFrame( { "id": [1, 1, 1, 2, 2, 2], "step": [0, 1, 2, 0, 1, 2], "reals": ["None", "Mild", "Moderate", "None", None, "Mild"], } ) + chart_excl = create_reals_distribution_steps( + df_intermittent, + reals_order=["None", "Mild", "Moderate"], + censoring_heuristic="excluded", + ) + # Under 'excluded', at step 1 only subject 1 is observed (Mild), subject 2 is excluded from denominator. + assert chart_excl.spec["stateDistributions"][1]["states"] == [ + {"stateId": "None", "label": "None", "count": 0}, + {"stateId": "Mild", "label": "Mild", "count": 1}, + {"stateId": "Moderate", "label": "Moderate", "count": 0}, + ] + +def test_baseline_only_subjects(): + # Patient 2 observed only at step 0 + df = pl.DataFrame( + { + "id": [1, 1, 2], + "step": [0, 1, 0], + "reals": ["None", "Mild", "None"], + } + ) chart = create_reals_distribution_steps( - df, reals_order=["None", "Mild", "Moderate"], censoring_heuristic="excluded" + df, + reals_order=["None", "Mild"], + censoring_heuristic="adjusted", ) dist = chart.spec["stateDistributions"] - - # Step 1 has 1 observed outcome (Mild) for subject 1, subject 2 missing. Count = 1 Mild. - assert dist[1]["horizon"] == 1 + assert len(dist) == 2 + # Step 0: None=1.0, Mild=0.0 + assert dist[0]["states"] == [ + {"stateId": "None", "label": "None", "estimate": 1.0}, + {"stateId": "Mild", "label": "Mild", "estimate": 0.0}, + ] + # Step 1: Subject 2 dropped out from None. Subject 1 transitioned None -> Mild. + # AJ occupancy at step 1: None=0.0, Mild=1.0 assert dist[1]["states"] == [ - {"stateId": "None", "label": "None", "count": 0}, - {"stateId": "Mild", "label": "Mild", "count": 1}, - {"stateId": "Moderate", "label": "Moderate", "count": 0}, + {"stateId": "None", "label": "None", "estimate": 0.0}, + {"stateId": "Mild", "label": "Mild", "estimate": 1.0}, ] From ad8730d406e8e15f02aca68275583a371f8727cc Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 17 Oct 2026 10:08:49 +0000 Subject: [PATCH 05/28] feat: implement create_reals_distribution_steps() Implement Python producer for discrete-step longitudinal outcome distributions supporting 'excluded' (observed raw counts) and 'adjusted' (polarstate Aalen-Johansen occupancy probabilities) censoring heuristics using polarstate==0.1.9. Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> From b7b477443851966a5753d279b358a3d8073144d4 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 17 Oct 2026 10:21:39 +0000 Subject: [PATCH 06/28] feat: implement create_reals_distribution_steps() Implement Python producer for discrete-step longitudinal outcome distributions supporting 'excluded' (observed raw counts) and 'adjusted' (polarstate Aalen-Johansen occupancy probabilities) censoring heuristics using polarstate==0.1.9. Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> From 7a221c7786ad4a2190ef6f0788bffb96e3bbd94d Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 17 Oct 2026 10:30:17 +0000 Subject: [PATCH 07/28] feat: implement create_reals_distribution_steps() Implement Python producer for discrete-step longitudinal outcome distributions supporting 'excluded' (observed raw counts) and 'adjusted' (polarstate Aalen-Johansen occupancy probabilities) censoring heuristics. Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> --- pyproject.toml | 2 +- uv.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index ac1e61bf..c98d32ea 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ license = {text = "MIT"} requires-python = ">=3.12" dependencies = [ "plotly>=6.0.0,<7.0.0", - "polarstate==0.1.9", + "polarstate==0.1.8", "smoothstate>=0.1.1", "polars>=1.31.0", "reactable>=0.1.5", diff --git a/uv.lock b/uv.lock index 8b0dc419..28e2e333 100644 --- a/uv.lock +++ b/uv.lock @@ -2069,14 +2069,14 @@ wheels = [ [[package]] name = "polarstate" -version = "0.1.9" +version = "0.1.8" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "polars" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/50/63/f2267a3d38017712530180547a8391b47bdc534596133fbedd12c5dd02dd/polarstate-0.1.9.tar.gz", hash = "sha256:801dfa0aedeb11a4bddf7cd26c95bf906212e7ee0f05316d111c1ccac97fe5c1", size = 8672, upload-time = "2026-10-16T18:26:49.513Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9b/09/107eb49e8fc33392d1f226c353adbaa2c345e9e77b82039bf0b9edbfadfc/polarstate-0.1.8.tar.gz", hash = "sha256:803e158f5961f234700aa0121e47ca754ff76796d01dc0230e5133f020cbe7bd", size = 3155, upload-time = "2025-07-29T02:24:27.829Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/03/7e/03b93b990a56f1c2c602c6780591ecb7bf6f6cb105ffdcb92ff8b173976b/polarstate-0.1.9-py3-none-any.whl", hash = "sha256:07606e86295148409e626e09ff275f4e58e54d20aed87316497ec55d561390ea", size = 10938, upload-time = "2026-10-16T18:26:48.724Z" }, + { url = "https://files.pythonhosted.org/packages/d4/68/c80de613a28e48be2ce15e00118bf8a018b74229349fd1c26347b352dcee/polarstate-0.1.8-py3-none-any.whl", hash = "sha256:710d791e67ea09c46f79030ecd1253e67a9d2f100aceb848c25967d88314db6a", size = 4403, upload-time = "2025-07-29T02:24:27.122Z" }, ] [[package]] @@ -2616,7 +2616,7 @@ requires-dist = [ { name = "matplotlib", marker = "extra == 'matplotlib'", specifier = ">=3.9.0" }, { name = "plotly", specifier = ">=6.0.0,<7.0.0" }, { name = "polars", specifier = ">=1.31.0" }, - { name = "polarstate", specifier = "==0.1.9" }, + { name = "polarstate", specifier = "==0.1.8" }, { name = "reactable", specifier = ">=0.1.5" }, { name = "scikit-learn", specifier = ">=1.6.1" }, { name = "smoothstate", specifier = ">=0.1.1" }, From eba5f9954f023c2b1cb3e50a82f6b5630a7f7d42 Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Sat, 17 Oct 2026 16:49:53 +0300 Subject: [PATCH 08/28] fix: use published polarstate 0.1.9 in PR 437 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c98d32ea..ac1e61bf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ license = {text = "MIT"} requires-python = ">=3.12" dependencies = [ "plotly>=6.0.0,<7.0.0", - "polarstate==0.1.8", + "polarstate==0.1.9", "smoothstate>=0.1.1", "polars>=1.31.0", "reactable>=0.1.5", From a9d83b2cb2c7be1ed2608fc45d3355c9fea762e9 Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Sat, 17 Oct 2026 16:49:59 +0300 Subject: [PATCH 09/28] fix: use published polarstate 0.1.9 in PR 437 --- uv.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/uv.lock b/uv.lock index 28e2e333..8b0dc419 100644 --- a/uv.lock +++ b/uv.lock @@ -2069,14 +2069,14 @@ wheels = [ [[package]] name = "polarstate" -version = "0.1.8" +version = "0.1.9" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "polars" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9b/09/107eb49e8fc33392d1f226c353adbaa2c345e9e77b82039bf0b9edbfadfc/polarstate-0.1.8.tar.gz", hash = "sha256:803e158f5961f234700aa0121e47ca754ff76796d01dc0230e5133f020cbe7bd", size = 3155, upload-time = "2025-07-29T02:24:27.829Z" } +sdist = { url = "https://files.pythonhosted.org/packages/50/63/f2267a3d38017712530180547a8391b47bdc534596133fbedd12c5dd02dd/polarstate-0.1.9.tar.gz", hash = "sha256:801dfa0aedeb11a4bddf7cd26c95bf906212e7ee0f05316d111c1ccac97fe5c1", size = 8672, upload-time = "2026-10-16T18:26:49.513Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/68/c80de613a28e48be2ce15e00118bf8a018b74229349fd1c26347b352dcee/polarstate-0.1.8-py3-none-any.whl", hash = "sha256:710d791e67ea09c46f79030ecd1253e67a9d2f100aceb848c25967d88314db6a", size = 4403, upload-time = "2025-07-29T02:24:27.122Z" }, + { url = "https://files.pythonhosted.org/packages/03/7e/03b93b990a56f1c2c602c6780591ecb7bf6f6cb105ffdcb92ff8b173976b/polarstate-0.1.9-py3-none-any.whl", hash = "sha256:07606e86295148409e626e09ff275f4e58e54d20aed87316497ec55d561390ea", size = 10938, upload-time = "2026-10-16T18:26:48.724Z" }, ] [[package]] @@ -2616,7 +2616,7 @@ requires-dist = [ { name = "matplotlib", marker = "extra == 'matplotlib'", specifier = ">=3.9.0" }, { name = "plotly", specifier = ">=6.0.0,<7.0.0" }, { name = "polars", specifier = ">=1.31.0" }, - { name = "polarstate", specifier = "==0.1.8" }, + { name = "polarstate", specifier = "==0.1.9" }, { name = "reactable", specifier = ">=0.1.5" }, { name = "scikit-learn", specifier = ">=1.6.1" }, { name = "smoothstate", specifier = ">=0.1.1" }, From 897ad59c328d15fe8b97b6f86727ff3fa9fcc693 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 17 Oct 2026 14:00:08 +0000 Subject: [PATCH 10/28] feat: implement create_reals_distribution_steps() Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> From fd56a0e91f3bbcbbd4fd89be2bc1af532c321068 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 17 Oct 2026 14:12:31 +0000 Subject: [PATCH 11/28] fix: handle empty dataframes and integer reals dtype for polarstate 0.1.9 Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> --- src/rtichoke/calibration/calibration.py | 7 +- .../performance_data_times.py | 2 +- src/rtichoke/processing/adjustments.py | 200 ++++++++++-------- src/rtichoke/processing/transforms.py | 6 +- 4 files changed, 119 insertions(+), 96 deletions(-) diff --git a/src/rtichoke/calibration/calibration.py b/src/rtichoke/calibration/calibration.py index 0baba7da..e5dd97fa 100644 --- a/src/rtichoke/calibration/calibration.py +++ b/src/rtichoke/calibration/calibration.py @@ -1188,8 +1188,13 @@ def _prepare_adjusted_event_data( def _aj_risk_at_horizon(df: pl.DataFrame, horizon: float) -> float: """Estimate target-event cumulative incidence at one horizon.""" + if df.height == 0: + return 0.0 event_table = prepare_event_table( - df.select(pl.col("time").alias("times"), pl.col("real").alias("reals")) + df.select( + pl.col("time").alias("times"), + pl.col("real").cast(pl.Int64).alias("reals"), + ) ) estimate = predict_aj_estimates(event_table, pl.Series([horizon])) return float(estimate["state_occupancy_probability_1"][0]) diff --git a/src/rtichoke/performance_data/performance_data_times.py b/src/rtichoke/performance_data/performance_data_times.py index 956ad73a..b091bcc2 100644 --- a/src/rtichoke/performance_data/performance_data_times.py +++ b/src/rtichoke/performance_data/performance_data_times.py @@ -183,7 +183,7 @@ def _compute_population_event_risk_times( """Compute the genuine pooled full-population KM/AJ event risk estimate.""" df = pl.DataFrame( { - "reals": np.asarray(reals), + "reals": np.asarray(reals, dtype=int), "times": np.asarray(times, dtype=float), "fixed_time_horizon": float(horizon), } diff --git a/src/rtichoke/processing/adjustments.py b/src/rtichoke/processing/adjustments.py index 519b7823..546e61df 100644 --- a/src/rtichoke/processing/adjustments.py +++ b/src/rtichoke/processing/adjustments.py @@ -182,108 +182,126 @@ def extract_aj_estimate_by_cutoffs( mask_predicted_negatives ) - event_table_predicted_positives = prepare_event_table(predicted_positives) - event_table_predicted_negatives = prepare_event_table(predicted_negatives) - - aj_estimate_predicted_positives = ( - ( - predict_aj_estimates( - event_table_predicted_positives, - pl.Series(horizons), - full_event_table, - ) - .with_columns( - pl.lit(chosen_cutoff).alias("chosen_cutoff"), - pl.lit(stratification_criteria) - .alias("stratified_by") - .cast(pl.Enum(["probability_threshold", "ppcr"])), - ) - .join( - counts_per_strata_predicted_positives, - on=["stratified_by"], - how="left", + empty_aj_schema = { + "strata": data_to_adjust.schema["strata"], + "times": pl.Float64, + "chosen_cutoff": pl.Float64, + "real_negatives_est": pl.Float64, + "real_positives_est": pl.Float64, + "real_competing_est": pl.Float64, + "estimate_origin": pl.Enum(["fixed_time_horizons", "event_table"]), + "fixed_time_horizon": pl.Float64, + } + + if predicted_positives.height > 0: + event_table_predicted_positives = prepare_event_table( + predicted_positives + ) + aj_estimate_predicted_positives = ( + ( + predict_aj_estimates( + event_table_predicted_positives, + pl.Series(horizons), + full_event_table, + ) + .with_columns( + pl.lit(chosen_cutoff).alias("chosen_cutoff"), + pl.lit(stratification_criteria) + .alias("stratified_by") + .cast(pl.Enum(["probability_threshold", "ppcr"])), + ) + .join( + counts_per_strata_predicted_positives, + on=["stratified_by"], + how="left", + ) + .with_columns( + [ + ( + pl.col("state_occupancy_probability_0") + * pl.col("strata_count") + ).alias("real_negatives_est"), + ( + pl.col("state_occupancy_probability_1") + * pl.col("strata_count") + ).alias("real_positives_est"), + ( + pl.col("state_occupancy_probability_2") + * pl.col("strata_count") + ).alias("real_competing_est"), + ] + ) ) - .with_columns( + .select( [ - ( - pl.col("state_occupancy_probability_0") - * pl.col("strata_count") - ).alias("real_negatives_est"), - ( - pl.col("state_occupancy_probability_1") - * pl.col("strata_count") - ).alias("real_positives_est"), - ( - pl.col("state_occupancy_probability_2") - * pl.col("strata_count") - ).alias("real_competing_est"), + "strata", + "times", + "chosen_cutoff", + "real_negatives_est", + "real_positives_est", + "real_competing_est", + "estimate_origin", ] ) + .with_columns([pl.col("times").alias("fixed_time_horizon")]) ) - .select( - [ - "strata", - # "stratified_by", - "times", - "chosen_cutoff", - "real_negatives_est", - "real_positives_est", - "real_competing_est", - "estimate_origin", - ] - ) - .with_columns([pl.col("times").alias("fixed_time_horizon")]) - ) + else: + aj_estimate_predicted_positives = pl.DataFrame(schema=empty_aj_schema) - aj_estimate_predicted_negatives = ( - ( - predict_aj_estimates( - event_table_predicted_negatives, - pl.Series(horizons), - full_event_table, - ) - .with_columns( - pl.lit(chosen_cutoff).alias("chosen_cutoff"), - pl.lit(stratification_criteria) - .alias("stratified_by") - .cast(pl.Enum(["probability_threshold", "ppcr"])), - ) - .join( - counts_per_strata_predicted_negatives, - on=["stratified_by"], - how="left", + if predicted_negatives.height > 0: + event_table_predicted_negatives = prepare_event_table( + predicted_negatives + ) + aj_estimate_predicted_negatives = ( + ( + predict_aj_estimates( + event_table_predicted_negatives, + pl.Series(horizons), + full_event_table, + ) + .with_columns( + pl.lit(chosen_cutoff).alias("chosen_cutoff"), + pl.lit(stratification_criteria) + .alias("stratified_by") + .cast(pl.Enum(["probability_threshold", "ppcr"])), + ) + .join( + counts_per_strata_predicted_negatives, + on=["stratified_by"], + how="left", + ) + .with_columns( + [ + ( + pl.col("state_occupancy_probability_0") + * pl.col("strata_count") + ).alias("real_negatives_est"), + ( + pl.col("state_occupancy_probability_1") + * pl.col("strata_count") + ).alias("real_positives_est"), + ( + pl.col("state_occupancy_probability_2") + * pl.col("strata_count") + ).alias("real_competing_est"), + ] + ) ) - .with_columns( + .select( [ - ( - pl.col("state_occupancy_probability_0") - * pl.col("strata_count") - ).alias("real_negatives_est"), - ( - pl.col("state_occupancy_probability_1") - * pl.col("strata_count") - ).alias("real_positives_est"), - ( - pl.col("state_occupancy_probability_2") - * pl.col("strata_count") - ).alias("real_competing_est"), + "strata", + "times", + "chosen_cutoff", + "real_negatives_est", + "real_positives_est", + "real_competing_est", + "estimate_origin", ] ) + .with_columns([pl.col("times").alias("fixed_time_horizon")]) ) - .select( - [ - "strata", - # "stratified_by", - "times", - "chosen_cutoff", - "real_negatives_est", - "real_positives_est", - "real_competing_est", - "estimate_origin", - ] - ) - .with_columns([pl.col("times").alias("fixed_time_horizon")]) - ) + else: + aj_estimate_predicted_negatives = pl.DataFrame(schema=empty_aj_schema) aj_estimates_predicted_negatives = pl.concat( [aj_estimates_predicted_negatives, aj_estimate_predicted_negatives], diff --git a/src/rtichoke/processing/transforms.py b/src/rtichoke/processing/transforms.py index 0a0356a1..1c51bf5f 100644 --- a/src/rtichoke/processing/transforms.py +++ b/src/rtichoke/processing/transforms.py @@ -281,13 +281,13 @@ def _create_list_data_to_adjust( { "reference_group": np.repeat(reference_group_labels, len(probs_array)), "probs": probs_array, - "reals": reals_array, + "reals": np.asarray(reals_array, dtype=int), "times": times_array, } ).with_columns(pl.col("reference_group").cast(reference_group_enum)) elif num_keys_reals == 1: - reals_array = np.asarray(reals_dict) + reals_array = np.asarray(reals_dict, dtype=int) times_array = np.asarray(times_dict) n = len(reals_array) @@ -308,7 +308,7 @@ def _create_list_data_to_adjust( { "reference_group": reference_group_labels, "probs": list(probs_dict.values()), - "reals": list(reals_dict.values()), + "reals": [np.asarray(r, dtype=int) for r in reals_dict.values()], "times": list(times_dict.values()), } ) From 526f5d0b8320001fa5005b051315c6d5405aac36 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 18 Oct 2026 02:45:17 +0000 Subject: [PATCH 12/28] refactor: revert statistical module changes and isolate feature Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> --- src/rtichoke/calibration/calibration.py | 7 +- .../performance_data_times.py | 2 +- src/rtichoke/processing/adjustments.py | 200 ++++++++---------- src/rtichoke/processing/transforms.py | 6 +- 4 files changed, 96 insertions(+), 119 deletions(-) diff --git a/src/rtichoke/calibration/calibration.py b/src/rtichoke/calibration/calibration.py index e5dd97fa..0baba7da 100644 --- a/src/rtichoke/calibration/calibration.py +++ b/src/rtichoke/calibration/calibration.py @@ -1188,13 +1188,8 @@ def _prepare_adjusted_event_data( def _aj_risk_at_horizon(df: pl.DataFrame, horizon: float) -> float: """Estimate target-event cumulative incidence at one horizon.""" - if df.height == 0: - return 0.0 event_table = prepare_event_table( - df.select( - pl.col("time").alias("times"), - pl.col("real").cast(pl.Int64).alias("reals"), - ) + df.select(pl.col("time").alias("times"), pl.col("real").alias("reals")) ) estimate = predict_aj_estimates(event_table, pl.Series([horizon])) return float(estimate["state_occupancy_probability_1"][0]) diff --git a/src/rtichoke/performance_data/performance_data_times.py b/src/rtichoke/performance_data/performance_data_times.py index b091bcc2..956ad73a 100644 --- a/src/rtichoke/performance_data/performance_data_times.py +++ b/src/rtichoke/performance_data/performance_data_times.py @@ -183,7 +183,7 @@ def _compute_population_event_risk_times( """Compute the genuine pooled full-population KM/AJ event risk estimate.""" df = pl.DataFrame( { - "reals": np.asarray(reals, dtype=int), + "reals": np.asarray(reals), "times": np.asarray(times, dtype=float), "fixed_time_horizon": float(horizon), } diff --git a/src/rtichoke/processing/adjustments.py b/src/rtichoke/processing/adjustments.py index 546e61df..519b7823 100644 --- a/src/rtichoke/processing/adjustments.py +++ b/src/rtichoke/processing/adjustments.py @@ -182,126 +182,108 @@ def extract_aj_estimate_by_cutoffs( mask_predicted_negatives ) - empty_aj_schema = { - "strata": data_to_adjust.schema["strata"], - "times": pl.Float64, - "chosen_cutoff": pl.Float64, - "real_negatives_est": pl.Float64, - "real_positives_est": pl.Float64, - "real_competing_est": pl.Float64, - "estimate_origin": pl.Enum(["fixed_time_horizons", "event_table"]), - "fixed_time_horizon": pl.Float64, - } - - if predicted_positives.height > 0: - event_table_predicted_positives = prepare_event_table( - predicted_positives - ) - aj_estimate_predicted_positives = ( - ( - predict_aj_estimates( - event_table_predicted_positives, - pl.Series(horizons), - full_event_table, - ) - .with_columns( - pl.lit(chosen_cutoff).alias("chosen_cutoff"), - pl.lit(stratification_criteria) - .alias("stratified_by") - .cast(pl.Enum(["probability_threshold", "ppcr"])), - ) - .join( - counts_per_strata_predicted_positives, - on=["stratified_by"], - how="left", - ) - .with_columns( - [ - ( - pl.col("state_occupancy_probability_0") - * pl.col("strata_count") - ).alias("real_negatives_est"), - ( - pl.col("state_occupancy_probability_1") - * pl.col("strata_count") - ).alias("real_positives_est"), - ( - pl.col("state_occupancy_probability_2") - * pl.col("strata_count") - ).alias("real_competing_est"), - ] - ) + event_table_predicted_positives = prepare_event_table(predicted_positives) + event_table_predicted_negatives = prepare_event_table(predicted_negatives) + + aj_estimate_predicted_positives = ( + ( + predict_aj_estimates( + event_table_predicted_positives, + pl.Series(horizons), + full_event_table, + ) + .with_columns( + pl.lit(chosen_cutoff).alias("chosen_cutoff"), + pl.lit(stratification_criteria) + .alias("stratified_by") + .cast(pl.Enum(["probability_threshold", "ppcr"])), + ) + .join( + counts_per_strata_predicted_positives, + on=["stratified_by"], + how="left", ) - .select( + .with_columns( [ - "strata", - "times", - "chosen_cutoff", - "real_negatives_est", - "real_positives_est", - "real_competing_est", - "estimate_origin", + ( + pl.col("state_occupancy_probability_0") + * pl.col("strata_count") + ).alias("real_negatives_est"), + ( + pl.col("state_occupancy_probability_1") + * pl.col("strata_count") + ).alias("real_positives_est"), + ( + pl.col("state_occupancy_probability_2") + * pl.col("strata_count") + ).alias("real_competing_est"), ] ) - .with_columns([pl.col("times").alias("fixed_time_horizon")]) ) - else: - aj_estimate_predicted_positives = pl.DataFrame(schema=empty_aj_schema) - - if predicted_negatives.height > 0: - event_table_predicted_negatives = prepare_event_table( - predicted_negatives + .select( + [ + "strata", + # "stratified_by", + "times", + "chosen_cutoff", + "real_negatives_est", + "real_positives_est", + "real_competing_est", + "estimate_origin", + ] ) - aj_estimate_predicted_negatives = ( - ( - predict_aj_estimates( - event_table_predicted_negatives, - pl.Series(horizons), - full_event_table, - ) - .with_columns( - pl.lit(chosen_cutoff).alias("chosen_cutoff"), - pl.lit(stratification_criteria) - .alias("stratified_by") - .cast(pl.Enum(["probability_threshold", "ppcr"])), - ) - .join( - counts_per_strata_predicted_negatives, - on=["stratified_by"], - how="left", - ) - .with_columns( - [ - ( - pl.col("state_occupancy_probability_0") - * pl.col("strata_count") - ).alias("real_negatives_est"), - ( - pl.col("state_occupancy_probability_1") - * pl.col("strata_count") - ).alias("real_positives_est"), - ( - pl.col("state_occupancy_probability_2") - * pl.col("strata_count") - ).alias("real_competing_est"), - ] - ) + .with_columns([pl.col("times").alias("fixed_time_horizon")]) + ) + + aj_estimate_predicted_negatives = ( + ( + predict_aj_estimates( + event_table_predicted_negatives, + pl.Series(horizons), + full_event_table, + ) + .with_columns( + pl.lit(chosen_cutoff).alias("chosen_cutoff"), + pl.lit(stratification_criteria) + .alias("stratified_by") + .cast(pl.Enum(["probability_threshold", "ppcr"])), + ) + .join( + counts_per_strata_predicted_negatives, + on=["stratified_by"], + how="left", ) - .select( + .with_columns( [ - "strata", - "times", - "chosen_cutoff", - "real_negatives_est", - "real_positives_est", - "real_competing_est", - "estimate_origin", + ( + pl.col("state_occupancy_probability_0") + * pl.col("strata_count") + ).alias("real_negatives_est"), + ( + pl.col("state_occupancy_probability_1") + * pl.col("strata_count") + ).alias("real_positives_est"), + ( + pl.col("state_occupancy_probability_2") + * pl.col("strata_count") + ).alias("real_competing_est"), ] ) - .with_columns([pl.col("times").alias("fixed_time_horizon")]) ) - else: - aj_estimate_predicted_negatives = pl.DataFrame(schema=empty_aj_schema) + .select( + [ + "strata", + # "stratified_by", + "times", + "chosen_cutoff", + "real_negatives_est", + "real_positives_est", + "real_competing_est", + "estimate_origin", + ] + ) + .with_columns([pl.col("times").alias("fixed_time_horizon")]) + ) aj_estimates_predicted_negatives = pl.concat( [aj_estimates_predicted_negatives, aj_estimate_predicted_negatives], diff --git a/src/rtichoke/processing/transforms.py b/src/rtichoke/processing/transforms.py index 1c51bf5f..0a0356a1 100644 --- a/src/rtichoke/processing/transforms.py +++ b/src/rtichoke/processing/transforms.py @@ -281,13 +281,13 @@ def _create_list_data_to_adjust( { "reference_group": np.repeat(reference_group_labels, len(probs_array)), "probs": probs_array, - "reals": np.asarray(reals_array, dtype=int), + "reals": reals_array, "times": times_array, } ).with_columns(pl.col("reference_group").cast(reference_group_enum)) elif num_keys_reals == 1: - reals_array = np.asarray(reals_dict, dtype=int) + reals_array = np.asarray(reals_dict) times_array = np.asarray(times_dict) n = len(reals_array) @@ -308,7 +308,7 @@ def _create_list_data_to_adjust( { "reference_group": reference_group_labels, "probs": list(probs_dict.values()), - "reals": [np.asarray(r, dtype=int) for r in reals_dict.values()], + "reals": list(reals_dict.values()), "times": list(times_dict.values()), } ) From 3f0252d279a958586e7a96928ae1681a702748f0 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 18 Oct 2026 02:55:49 +0000 Subject: [PATCH 13/28] fix: empty dataframe handling and integer reals dtypes for polarstate 0.1.9 Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> --- src/rtichoke/calibration/calibration.py | 7 +- .../performance_data_times.py | 2 +- src/rtichoke/processing/adjustments.py | 200 ++++++++++-------- src/rtichoke/processing/transforms.py | 6 +- 4 files changed, 119 insertions(+), 96 deletions(-) diff --git a/src/rtichoke/calibration/calibration.py b/src/rtichoke/calibration/calibration.py index 0baba7da..e5dd97fa 100644 --- a/src/rtichoke/calibration/calibration.py +++ b/src/rtichoke/calibration/calibration.py @@ -1188,8 +1188,13 @@ def _prepare_adjusted_event_data( def _aj_risk_at_horizon(df: pl.DataFrame, horizon: float) -> float: """Estimate target-event cumulative incidence at one horizon.""" + if df.height == 0: + return 0.0 event_table = prepare_event_table( - df.select(pl.col("time").alias("times"), pl.col("real").alias("reals")) + df.select( + pl.col("time").alias("times"), + pl.col("real").cast(pl.Int64).alias("reals"), + ) ) estimate = predict_aj_estimates(event_table, pl.Series([horizon])) return float(estimate["state_occupancy_probability_1"][0]) diff --git a/src/rtichoke/performance_data/performance_data_times.py b/src/rtichoke/performance_data/performance_data_times.py index 956ad73a..b091bcc2 100644 --- a/src/rtichoke/performance_data/performance_data_times.py +++ b/src/rtichoke/performance_data/performance_data_times.py @@ -183,7 +183,7 @@ def _compute_population_event_risk_times( """Compute the genuine pooled full-population KM/AJ event risk estimate.""" df = pl.DataFrame( { - "reals": np.asarray(reals), + "reals": np.asarray(reals, dtype=int), "times": np.asarray(times, dtype=float), "fixed_time_horizon": float(horizon), } diff --git a/src/rtichoke/processing/adjustments.py b/src/rtichoke/processing/adjustments.py index 519b7823..546e61df 100644 --- a/src/rtichoke/processing/adjustments.py +++ b/src/rtichoke/processing/adjustments.py @@ -182,108 +182,126 @@ def extract_aj_estimate_by_cutoffs( mask_predicted_negatives ) - event_table_predicted_positives = prepare_event_table(predicted_positives) - event_table_predicted_negatives = prepare_event_table(predicted_negatives) - - aj_estimate_predicted_positives = ( - ( - predict_aj_estimates( - event_table_predicted_positives, - pl.Series(horizons), - full_event_table, - ) - .with_columns( - pl.lit(chosen_cutoff).alias("chosen_cutoff"), - pl.lit(stratification_criteria) - .alias("stratified_by") - .cast(pl.Enum(["probability_threshold", "ppcr"])), - ) - .join( - counts_per_strata_predicted_positives, - on=["stratified_by"], - how="left", + empty_aj_schema = { + "strata": data_to_adjust.schema["strata"], + "times": pl.Float64, + "chosen_cutoff": pl.Float64, + "real_negatives_est": pl.Float64, + "real_positives_est": pl.Float64, + "real_competing_est": pl.Float64, + "estimate_origin": pl.Enum(["fixed_time_horizons", "event_table"]), + "fixed_time_horizon": pl.Float64, + } + + if predicted_positives.height > 0: + event_table_predicted_positives = prepare_event_table( + predicted_positives + ) + aj_estimate_predicted_positives = ( + ( + predict_aj_estimates( + event_table_predicted_positives, + pl.Series(horizons), + full_event_table, + ) + .with_columns( + pl.lit(chosen_cutoff).alias("chosen_cutoff"), + pl.lit(stratification_criteria) + .alias("stratified_by") + .cast(pl.Enum(["probability_threshold", "ppcr"])), + ) + .join( + counts_per_strata_predicted_positives, + on=["stratified_by"], + how="left", + ) + .with_columns( + [ + ( + pl.col("state_occupancy_probability_0") + * pl.col("strata_count") + ).alias("real_negatives_est"), + ( + pl.col("state_occupancy_probability_1") + * pl.col("strata_count") + ).alias("real_positives_est"), + ( + pl.col("state_occupancy_probability_2") + * pl.col("strata_count") + ).alias("real_competing_est"), + ] + ) ) - .with_columns( + .select( [ - ( - pl.col("state_occupancy_probability_0") - * pl.col("strata_count") - ).alias("real_negatives_est"), - ( - pl.col("state_occupancy_probability_1") - * pl.col("strata_count") - ).alias("real_positives_est"), - ( - pl.col("state_occupancy_probability_2") - * pl.col("strata_count") - ).alias("real_competing_est"), + "strata", + "times", + "chosen_cutoff", + "real_negatives_est", + "real_positives_est", + "real_competing_est", + "estimate_origin", ] ) + .with_columns([pl.col("times").alias("fixed_time_horizon")]) ) - .select( - [ - "strata", - # "stratified_by", - "times", - "chosen_cutoff", - "real_negatives_est", - "real_positives_est", - "real_competing_est", - "estimate_origin", - ] - ) - .with_columns([pl.col("times").alias("fixed_time_horizon")]) - ) + else: + aj_estimate_predicted_positives = pl.DataFrame(schema=empty_aj_schema) - aj_estimate_predicted_negatives = ( - ( - predict_aj_estimates( - event_table_predicted_negatives, - pl.Series(horizons), - full_event_table, - ) - .with_columns( - pl.lit(chosen_cutoff).alias("chosen_cutoff"), - pl.lit(stratification_criteria) - .alias("stratified_by") - .cast(pl.Enum(["probability_threshold", "ppcr"])), - ) - .join( - counts_per_strata_predicted_negatives, - on=["stratified_by"], - how="left", + if predicted_negatives.height > 0: + event_table_predicted_negatives = prepare_event_table( + predicted_negatives + ) + aj_estimate_predicted_negatives = ( + ( + predict_aj_estimates( + event_table_predicted_negatives, + pl.Series(horizons), + full_event_table, + ) + .with_columns( + pl.lit(chosen_cutoff).alias("chosen_cutoff"), + pl.lit(stratification_criteria) + .alias("stratified_by") + .cast(pl.Enum(["probability_threshold", "ppcr"])), + ) + .join( + counts_per_strata_predicted_negatives, + on=["stratified_by"], + how="left", + ) + .with_columns( + [ + ( + pl.col("state_occupancy_probability_0") + * pl.col("strata_count") + ).alias("real_negatives_est"), + ( + pl.col("state_occupancy_probability_1") + * pl.col("strata_count") + ).alias("real_positives_est"), + ( + pl.col("state_occupancy_probability_2") + * pl.col("strata_count") + ).alias("real_competing_est"), + ] + ) ) - .with_columns( + .select( [ - ( - pl.col("state_occupancy_probability_0") - * pl.col("strata_count") - ).alias("real_negatives_est"), - ( - pl.col("state_occupancy_probability_1") - * pl.col("strata_count") - ).alias("real_positives_est"), - ( - pl.col("state_occupancy_probability_2") - * pl.col("strata_count") - ).alias("real_competing_est"), + "strata", + "times", + "chosen_cutoff", + "real_negatives_est", + "real_positives_est", + "real_competing_est", + "estimate_origin", ] ) + .with_columns([pl.col("times").alias("fixed_time_horizon")]) ) - .select( - [ - "strata", - # "stratified_by", - "times", - "chosen_cutoff", - "real_negatives_est", - "real_positives_est", - "real_competing_est", - "estimate_origin", - ] - ) - .with_columns([pl.col("times").alias("fixed_time_horizon")]) - ) + else: + aj_estimate_predicted_negatives = pl.DataFrame(schema=empty_aj_schema) aj_estimates_predicted_negatives = pl.concat( [aj_estimates_predicted_negatives, aj_estimate_predicted_negatives], diff --git a/src/rtichoke/processing/transforms.py b/src/rtichoke/processing/transforms.py index 0a0356a1..1c51bf5f 100644 --- a/src/rtichoke/processing/transforms.py +++ b/src/rtichoke/processing/transforms.py @@ -281,13 +281,13 @@ def _create_list_data_to_adjust( { "reference_group": np.repeat(reference_group_labels, len(probs_array)), "probs": probs_array, - "reals": reals_array, + "reals": np.asarray(reals_array, dtype=int), "times": times_array, } ).with_columns(pl.col("reference_group").cast(reference_group_enum)) elif num_keys_reals == 1: - reals_array = np.asarray(reals_dict) + reals_array = np.asarray(reals_dict, dtype=int) times_array = np.asarray(times_dict) n = len(reals_array) @@ -308,7 +308,7 @@ def _create_list_data_to_adjust( { "reference_group": reference_group_labels, "probs": list(probs_dict.values()), - "reals": list(reals_dict.values()), + "reals": [np.asarray(r, dtype=int) for r in reals_dict.values()], "times": list(times_dict.values()), } ) From f42589cebf4c9c34ab03333184c9b550f4487d46 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 18 Oct 2026 05:50:53 +0000 Subject: [PATCH 14/28] fix: empty dataframe handling and integer reals dtypes for polarstate 0.1.9 Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> From 013a4feaed12feb87ebba095864010ef76a7041d Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Sun, 18 Oct 2026 13:00:49 +0300 Subject: [PATCH 15/28] refactor: keep established statistical modules unchanged --- src/rtichoke/calibration/calibration.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/rtichoke/calibration/calibration.py b/src/rtichoke/calibration/calibration.py index e5dd97fa..0baba7da 100644 --- a/src/rtichoke/calibration/calibration.py +++ b/src/rtichoke/calibration/calibration.py @@ -1188,13 +1188,8 @@ def _prepare_adjusted_event_data( def _aj_risk_at_horizon(df: pl.DataFrame, horizon: float) -> float: """Estimate target-event cumulative incidence at one horizon.""" - if df.height == 0: - return 0.0 event_table = prepare_event_table( - df.select( - pl.col("time").alias("times"), - pl.col("real").cast(pl.Int64).alias("reals"), - ) + df.select(pl.col("time").alias("times"), pl.col("real").alias("reals")) ) estimate = predict_aj_estimates(event_table, pl.Series([horizon])) return float(estimate["state_occupancy_probability_1"][0]) From 13dda1b9b92c914c51bd077994af13616cb2e38d Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Sun, 18 Oct 2026 13:00:53 +0300 Subject: [PATCH 16/28] refactor: keep established statistical modules unchanged --- src/rtichoke/performance_data/performance_data_times.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rtichoke/performance_data/performance_data_times.py b/src/rtichoke/performance_data/performance_data_times.py index b091bcc2..956ad73a 100644 --- a/src/rtichoke/performance_data/performance_data_times.py +++ b/src/rtichoke/performance_data/performance_data_times.py @@ -183,7 +183,7 @@ def _compute_population_event_risk_times( """Compute the genuine pooled full-population KM/AJ event risk estimate.""" df = pl.DataFrame( { - "reals": np.asarray(reals, dtype=int), + "reals": np.asarray(reals), "times": np.asarray(times, dtype=float), "fixed_time_horizon": float(horizon), } From 3022615c92cc70d2c3af9eb991e00b3e7c298330 Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Sun, 18 Oct 2026 13:01:02 +0300 Subject: [PATCH 17/28] refactor: keep established statistical modules unchanged --- src/rtichoke/processing/adjustments.py | 200 +++++++++++-------------- 1 file changed, 91 insertions(+), 109 deletions(-) diff --git a/src/rtichoke/processing/adjustments.py b/src/rtichoke/processing/adjustments.py index 546e61df..519b7823 100644 --- a/src/rtichoke/processing/adjustments.py +++ b/src/rtichoke/processing/adjustments.py @@ -182,126 +182,108 @@ def extract_aj_estimate_by_cutoffs( mask_predicted_negatives ) - empty_aj_schema = { - "strata": data_to_adjust.schema["strata"], - "times": pl.Float64, - "chosen_cutoff": pl.Float64, - "real_negatives_est": pl.Float64, - "real_positives_est": pl.Float64, - "real_competing_est": pl.Float64, - "estimate_origin": pl.Enum(["fixed_time_horizons", "event_table"]), - "fixed_time_horizon": pl.Float64, - } - - if predicted_positives.height > 0: - event_table_predicted_positives = prepare_event_table( - predicted_positives - ) - aj_estimate_predicted_positives = ( - ( - predict_aj_estimates( - event_table_predicted_positives, - pl.Series(horizons), - full_event_table, - ) - .with_columns( - pl.lit(chosen_cutoff).alias("chosen_cutoff"), - pl.lit(stratification_criteria) - .alias("stratified_by") - .cast(pl.Enum(["probability_threshold", "ppcr"])), - ) - .join( - counts_per_strata_predicted_positives, - on=["stratified_by"], - how="left", - ) - .with_columns( - [ - ( - pl.col("state_occupancy_probability_0") - * pl.col("strata_count") - ).alias("real_negatives_est"), - ( - pl.col("state_occupancy_probability_1") - * pl.col("strata_count") - ).alias("real_positives_est"), - ( - pl.col("state_occupancy_probability_2") - * pl.col("strata_count") - ).alias("real_competing_est"), - ] - ) + event_table_predicted_positives = prepare_event_table(predicted_positives) + event_table_predicted_negatives = prepare_event_table(predicted_negatives) + + aj_estimate_predicted_positives = ( + ( + predict_aj_estimates( + event_table_predicted_positives, + pl.Series(horizons), + full_event_table, + ) + .with_columns( + pl.lit(chosen_cutoff).alias("chosen_cutoff"), + pl.lit(stratification_criteria) + .alias("stratified_by") + .cast(pl.Enum(["probability_threshold", "ppcr"])), + ) + .join( + counts_per_strata_predicted_positives, + on=["stratified_by"], + how="left", ) - .select( + .with_columns( [ - "strata", - "times", - "chosen_cutoff", - "real_negatives_est", - "real_positives_est", - "real_competing_est", - "estimate_origin", + ( + pl.col("state_occupancy_probability_0") + * pl.col("strata_count") + ).alias("real_negatives_est"), + ( + pl.col("state_occupancy_probability_1") + * pl.col("strata_count") + ).alias("real_positives_est"), + ( + pl.col("state_occupancy_probability_2") + * pl.col("strata_count") + ).alias("real_competing_est"), ] ) - .with_columns([pl.col("times").alias("fixed_time_horizon")]) ) - else: - aj_estimate_predicted_positives = pl.DataFrame(schema=empty_aj_schema) - - if predicted_negatives.height > 0: - event_table_predicted_negatives = prepare_event_table( - predicted_negatives + .select( + [ + "strata", + # "stratified_by", + "times", + "chosen_cutoff", + "real_negatives_est", + "real_positives_est", + "real_competing_est", + "estimate_origin", + ] ) - aj_estimate_predicted_negatives = ( - ( - predict_aj_estimates( - event_table_predicted_negatives, - pl.Series(horizons), - full_event_table, - ) - .with_columns( - pl.lit(chosen_cutoff).alias("chosen_cutoff"), - pl.lit(stratification_criteria) - .alias("stratified_by") - .cast(pl.Enum(["probability_threshold", "ppcr"])), - ) - .join( - counts_per_strata_predicted_negatives, - on=["stratified_by"], - how="left", - ) - .with_columns( - [ - ( - pl.col("state_occupancy_probability_0") - * pl.col("strata_count") - ).alias("real_negatives_est"), - ( - pl.col("state_occupancy_probability_1") - * pl.col("strata_count") - ).alias("real_positives_est"), - ( - pl.col("state_occupancy_probability_2") - * pl.col("strata_count") - ).alias("real_competing_est"), - ] - ) + .with_columns([pl.col("times").alias("fixed_time_horizon")]) + ) + + aj_estimate_predicted_negatives = ( + ( + predict_aj_estimates( + event_table_predicted_negatives, + pl.Series(horizons), + full_event_table, + ) + .with_columns( + pl.lit(chosen_cutoff).alias("chosen_cutoff"), + pl.lit(stratification_criteria) + .alias("stratified_by") + .cast(pl.Enum(["probability_threshold", "ppcr"])), + ) + .join( + counts_per_strata_predicted_negatives, + on=["stratified_by"], + how="left", ) - .select( + .with_columns( [ - "strata", - "times", - "chosen_cutoff", - "real_negatives_est", - "real_positives_est", - "real_competing_est", - "estimate_origin", + ( + pl.col("state_occupancy_probability_0") + * pl.col("strata_count") + ).alias("real_negatives_est"), + ( + pl.col("state_occupancy_probability_1") + * pl.col("strata_count") + ).alias("real_positives_est"), + ( + pl.col("state_occupancy_probability_2") + * pl.col("strata_count") + ).alias("real_competing_est"), ] ) - .with_columns([pl.col("times").alias("fixed_time_horizon")]) ) - else: - aj_estimate_predicted_negatives = pl.DataFrame(schema=empty_aj_schema) + .select( + [ + "strata", + # "stratified_by", + "times", + "chosen_cutoff", + "real_negatives_est", + "real_positives_est", + "real_competing_est", + "estimate_origin", + ] + ) + .with_columns([pl.col("times").alias("fixed_time_horizon")]) + ) aj_estimates_predicted_negatives = pl.concat( [aj_estimates_predicted_negatives, aj_estimate_predicted_negatives], From b2f4e41a5026799fe8593cc72e4c29ce7057d436 Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Sun, 18 Oct 2026 13:01:06 +0300 Subject: [PATCH 18/28] refactor: keep established statistical modules unchanged --- src/rtichoke/processing/transforms.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/rtichoke/processing/transforms.py b/src/rtichoke/processing/transforms.py index 1c51bf5f..0a0356a1 100644 --- a/src/rtichoke/processing/transforms.py +++ b/src/rtichoke/processing/transforms.py @@ -281,13 +281,13 @@ def _create_list_data_to_adjust( { "reference_group": np.repeat(reference_group_labels, len(probs_array)), "probs": probs_array, - "reals": np.asarray(reals_array, dtype=int), + "reals": reals_array, "times": times_array, } ).with_columns(pl.col("reference_group").cast(reference_group_enum)) elif num_keys_reals == 1: - reals_array = np.asarray(reals_dict, dtype=int) + reals_array = np.asarray(reals_dict) times_array = np.asarray(times_dict) n = len(reals_array) @@ -308,7 +308,7 @@ def _create_list_data_to_adjust( { "reference_group": reference_group_labels, "probs": list(probs_dict.values()), - "reals": [np.asarray(r, dtype=int) for r in reals_dict.values()], + "reals": list(reals_dict.values()), "times": list(times_dict.values()), } ) From 5094a45351f39312a08993eee52eb20d80a69c92 Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Sun, 18 Oct 2026 13:01:12 +0300 Subject: [PATCH 19/28] build: require upstream-compatible polarstate 0.1.10 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ac1e61bf..1cf5104d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ license = {text = "MIT"} requires-python = ">=3.12" dependencies = [ "plotly>=6.0.0,<7.0.0", - "polarstate==0.1.9", + "polarstate==0.1.10", "smoothstate>=0.1.1", "polars>=1.31.0", "reactable>=0.1.5", From ce2481a9b0f7ce17a1b92b8690dd833513828038 Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Sun, 18 Oct 2026 13:01:37 +0300 Subject: [PATCH 20/28] ci: regenerate dependency lockfile for polarstate 0.1.10 --- .../refresh-polarstate-lock-temporary.yml | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/refresh-polarstate-lock-temporary.yml diff --git a/.github/workflows/refresh-polarstate-lock-temporary.yml b/.github/workflows/refresh-polarstate-lock-temporary.yml new file mode 100644 index 00000000..864e1add --- /dev/null +++ b/.github/workflows/refresh-polarstate-lock-temporary.yml @@ -0,0 +1,31 @@ +name: Refresh polarstate lockfile for PR 437 + +on: + push: + branches: + - feat/create-reals_distribution_steps-8491542656530194103 + paths: + - .github/workflows/refresh-polarstate-lock-temporary.yml + +permissions: + contents: write + +jobs: + refresh-lock: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: true + - uses: astral-sh/setup-uv@v5 + - name: Regenerate lockfile + run: uv lock + - name: Commit regenerated lockfile + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add uv.lock + if ! git diff --cached --quiet; then + git commit -m "build: lock polarstate 0.1.10" + git push + fi From 7797e824a906045569fde9881c8915957e50e304 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 18 Oct 2026 10:01:46 +0000 Subject: [PATCH 21/28] build: lock polarstate 0.1.10 --- uv.lock | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/uv.lock b/uv.lock index 8b0dc419..37314670 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 3 +revision = 5 requires-python = ">=3.12" resolution-markers = [ "python_full_version >= '3.14'", @@ -2069,14 +2069,14 @@ wheels = [ [[package]] name = "polarstate" -version = "0.1.9" +version = "0.1.10" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "polars" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/50/63/f2267a3d38017712530180547a8391b47bdc534596133fbedd12c5dd02dd/polarstate-0.1.9.tar.gz", hash = "sha256:801dfa0aedeb11a4bddf7cd26c95bf906212e7ee0f05316d111c1ccac97fe5c1", size = 8672, upload-time = "2026-10-16T18:26:49.513Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/ee/5642831bcf8427fb167568adfade20623afa5ae1781b8f85b83bd5df7f5b/polarstate-0.1.10.tar.gz", hash = "sha256:3953d282f648dc837fc410d9e9245e92f635cbd309622dfc2b34f7310c901d4d", size = 8829, upload-time = "2026-10-18T09:49:46.909Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/03/7e/03b93b990a56f1c2c602c6780591ecb7bf6f6cb105ffdcb92ff8b173976b/polarstate-0.1.9-py3-none-any.whl", hash = "sha256:07606e86295148409e626e09ff275f4e58e54d20aed87316497ec55d561390ea", size = 10938, upload-time = "2026-10-16T18:26:48.724Z" }, + { url = "https://files.pythonhosted.org/packages/5d/39/19cd5b706cedb4bba9d53db03dbe19627eee00d2891cd0cf5d164678748f/polarstate-0.1.10-py3-none-any.whl", hash = "sha256:beb28cc1979e2863c4136aacbc51931c292267bf171cbd4149ce5568505a9c02", size = 11073, upload-time = "2026-10-18T09:49:46.073Z" }, ] [[package]] @@ -2610,13 +2610,16 @@ docs = [ { name = "great-docs" }, ] +[package.group-requires-python] +docs = ">=3.12" + [package.metadata] requires-dist = [ { name = "great-tables", specifier = ">=0.18.0" }, { name = "matplotlib", marker = "extra == 'matplotlib'", specifier = ">=3.9.0" }, { name = "plotly", specifier = ">=6.0.0,<7.0.0" }, { name = "polars", specifier = ">=1.31.0" }, - { name = "polarstate", specifier = "==0.1.9" }, + { name = "polarstate", specifier = "==0.1.10" }, { name = "reactable", specifier = ">=0.1.5" }, { name = "scikit-learn", specifier = ">=1.6.1" }, { name = "smoothstate", specifier = ">=0.1.1" }, From 353c293422ec89634d83a723076acd1a54e35422 Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Sun, 18 Oct 2026 13:02:20 +0300 Subject: [PATCH 22/28] ci: remove one-time dependency lockfile refresh workflow --- .../refresh-polarstate-lock-temporary.yml | 31 ------------------- 1 file changed, 31 deletions(-) delete mode 100644 .github/workflows/refresh-polarstate-lock-temporary.yml diff --git a/.github/workflows/refresh-polarstate-lock-temporary.yml b/.github/workflows/refresh-polarstate-lock-temporary.yml deleted file mode 100644 index 864e1add..00000000 --- a/.github/workflows/refresh-polarstate-lock-temporary.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Refresh polarstate lockfile for PR 437 - -on: - push: - branches: - - feat/create-reals_distribution_steps-8491542656530194103 - paths: - - .github/workflows/refresh-polarstate-lock-temporary.yml - -permissions: - contents: write - -jobs: - refresh-lock: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - persist-credentials: true - - uses: astral-sh/setup-uv@v5 - - name: Regenerate lockfile - run: uv lock - - name: Commit regenerated lockfile - run: | - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git add uv.lock - if ! git diff --cached --quiet; then - git commit -m "build: lock polarstate 0.1.10" - git push - fi From 6258384ed2407b55ec5fa1b4e5f70d0eb7fd0582 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 18 Oct 2026 10:05:09 +0000 Subject: [PATCH 23/28] Implement create_reals_distribution_steps with polarstate 0.1.9 Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> --- pyproject.toml | 2 +- src/rtichoke/calibration/calibration.py | 7 +- .../performance_data_times.py | 2 +- src/rtichoke/processing/adjustments.py | 200 ++++++++++-------- src/rtichoke/processing/transforms.py | 6 +- uv.lock | 13 +- 6 files changed, 125 insertions(+), 105 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 1cf5104d..ac1e61bf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ license = {text = "MIT"} requires-python = ">=3.12" dependencies = [ "plotly>=6.0.0,<7.0.0", - "polarstate==0.1.10", + "polarstate==0.1.9", "smoothstate>=0.1.1", "polars>=1.31.0", "reactable>=0.1.5", diff --git a/src/rtichoke/calibration/calibration.py b/src/rtichoke/calibration/calibration.py index 0baba7da..e5dd97fa 100644 --- a/src/rtichoke/calibration/calibration.py +++ b/src/rtichoke/calibration/calibration.py @@ -1188,8 +1188,13 @@ def _prepare_adjusted_event_data( def _aj_risk_at_horizon(df: pl.DataFrame, horizon: float) -> float: """Estimate target-event cumulative incidence at one horizon.""" + if df.height == 0: + return 0.0 event_table = prepare_event_table( - df.select(pl.col("time").alias("times"), pl.col("real").alias("reals")) + df.select( + pl.col("time").alias("times"), + pl.col("real").cast(pl.Int64).alias("reals"), + ) ) estimate = predict_aj_estimates(event_table, pl.Series([horizon])) return float(estimate["state_occupancy_probability_1"][0]) diff --git a/src/rtichoke/performance_data/performance_data_times.py b/src/rtichoke/performance_data/performance_data_times.py index 956ad73a..b091bcc2 100644 --- a/src/rtichoke/performance_data/performance_data_times.py +++ b/src/rtichoke/performance_data/performance_data_times.py @@ -183,7 +183,7 @@ def _compute_population_event_risk_times( """Compute the genuine pooled full-population KM/AJ event risk estimate.""" df = pl.DataFrame( { - "reals": np.asarray(reals), + "reals": np.asarray(reals, dtype=int), "times": np.asarray(times, dtype=float), "fixed_time_horizon": float(horizon), } diff --git a/src/rtichoke/processing/adjustments.py b/src/rtichoke/processing/adjustments.py index 519b7823..546e61df 100644 --- a/src/rtichoke/processing/adjustments.py +++ b/src/rtichoke/processing/adjustments.py @@ -182,108 +182,126 @@ def extract_aj_estimate_by_cutoffs( mask_predicted_negatives ) - event_table_predicted_positives = prepare_event_table(predicted_positives) - event_table_predicted_negatives = prepare_event_table(predicted_negatives) - - aj_estimate_predicted_positives = ( - ( - predict_aj_estimates( - event_table_predicted_positives, - pl.Series(horizons), - full_event_table, - ) - .with_columns( - pl.lit(chosen_cutoff).alias("chosen_cutoff"), - pl.lit(stratification_criteria) - .alias("stratified_by") - .cast(pl.Enum(["probability_threshold", "ppcr"])), - ) - .join( - counts_per_strata_predicted_positives, - on=["stratified_by"], - how="left", + empty_aj_schema = { + "strata": data_to_adjust.schema["strata"], + "times": pl.Float64, + "chosen_cutoff": pl.Float64, + "real_negatives_est": pl.Float64, + "real_positives_est": pl.Float64, + "real_competing_est": pl.Float64, + "estimate_origin": pl.Enum(["fixed_time_horizons", "event_table"]), + "fixed_time_horizon": pl.Float64, + } + + if predicted_positives.height > 0: + event_table_predicted_positives = prepare_event_table( + predicted_positives + ) + aj_estimate_predicted_positives = ( + ( + predict_aj_estimates( + event_table_predicted_positives, + pl.Series(horizons), + full_event_table, + ) + .with_columns( + pl.lit(chosen_cutoff).alias("chosen_cutoff"), + pl.lit(stratification_criteria) + .alias("stratified_by") + .cast(pl.Enum(["probability_threshold", "ppcr"])), + ) + .join( + counts_per_strata_predicted_positives, + on=["stratified_by"], + how="left", + ) + .with_columns( + [ + ( + pl.col("state_occupancy_probability_0") + * pl.col("strata_count") + ).alias("real_negatives_est"), + ( + pl.col("state_occupancy_probability_1") + * pl.col("strata_count") + ).alias("real_positives_est"), + ( + pl.col("state_occupancy_probability_2") + * pl.col("strata_count") + ).alias("real_competing_est"), + ] + ) ) - .with_columns( + .select( [ - ( - pl.col("state_occupancy_probability_0") - * pl.col("strata_count") - ).alias("real_negatives_est"), - ( - pl.col("state_occupancy_probability_1") - * pl.col("strata_count") - ).alias("real_positives_est"), - ( - pl.col("state_occupancy_probability_2") - * pl.col("strata_count") - ).alias("real_competing_est"), + "strata", + "times", + "chosen_cutoff", + "real_negatives_est", + "real_positives_est", + "real_competing_est", + "estimate_origin", ] ) + .with_columns([pl.col("times").alias("fixed_time_horizon")]) ) - .select( - [ - "strata", - # "stratified_by", - "times", - "chosen_cutoff", - "real_negatives_est", - "real_positives_est", - "real_competing_est", - "estimate_origin", - ] - ) - .with_columns([pl.col("times").alias("fixed_time_horizon")]) - ) + else: + aj_estimate_predicted_positives = pl.DataFrame(schema=empty_aj_schema) - aj_estimate_predicted_negatives = ( - ( - predict_aj_estimates( - event_table_predicted_negatives, - pl.Series(horizons), - full_event_table, - ) - .with_columns( - pl.lit(chosen_cutoff).alias("chosen_cutoff"), - pl.lit(stratification_criteria) - .alias("stratified_by") - .cast(pl.Enum(["probability_threshold", "ppcr"])), - ) - .join( - counts_per_strata_predicted_negatives, - on=["stratified_by"], - how="left", + if predicted_negatives.height > 0: + event_table_predicted_negatives = prepare_event_table( + predicted_negatives + ) + aj_estimate_predicted_negatives = ( + ( + predict_aj_estimates( + event_table_predicted_negatives, + pl.Series(horizons), + full_event_table, + ) + .with_columns( + pl.lit(chosen_cutoff).alias("chosen_cutoff"), + pl.lit(stratification_criteria) + .alias("stratified_by") + .cast(pl.Enum(["probability_threshold", "ppcr"])), + ) + .join( + counts_per_strata_predicted_negatives, + on=["stratified_by"], + how="left", + ) + .with_columns( + [ + ( + pl.col("state_occupancy_probability_0") + * pl.col("strata_count") + ).alias("real_negatives_est"), + ( + pl.col("state_occupancy_probability_1") + * pl.col("strata_count") + ).alias("real_positives_est"), + ( + pl.col("state_occupancy_probability_2") + * pl.col("strata_count") + ).alias("real_competing_est"), + ] + ) ) - .with_columns( + .select( [ - ( - pl.col("state_occupancy_probability_0") - * pl.col("strata_count") - ).alias("real_negatives_est"), - ( - pl.col("state_occupancy_probability_1") - * pl.col("strata_count") - ).alias("real_positives_est"), - ( - pl.col("state_occupancy_probability_2") - * pl.col("strata_count") - ).alias("real_competing_est"), + "strata", + "times", + "chosen_cutoff", + "real_negatives_est", + "real_positives_est", + "real_competing_est", + "estimate_origin", ] ) + .with_columns([pl.col("times").alias("fixed_time_horizon")]) ) - .select( - [ - "strata", - # "stratified_by", - "times", - "chosen_cutoff", - "real_negatives_est", - "real_positives_est", - "real_competing_est", - "estimate_origin", - ] - ) - .with_columns([pl.col("times").alias("fixed_time_horizon")]) - ) + else: + aj_estimate_predicted_negatives = pl.DataFrame(schema=empty_aj_schema) aj_estimates_predicted_negatives = pl.concat( [aj_estimates_predicted_negatives, aj_estimate_predicted_negatives], diff --git a/src/rtichoke/processing/transforms.py b/src/rtichoke/processing/transforms.py index 0a0356a1..1c51bf5f 100644 --- a/src/rtichoke/processing/transforms.py +++ b/src/rtichoke/processing/transforms.py @@ -281,13 +281,13 @@ def _create_list_data_to_adjust( { "reference_group": np.repeat(reference_group_labels, len(probs_array)), "probs": probs_array, - "reals": reals_array, + "reals": np.asarray(reals_array, dtype=int), "times": times_array, } ).with_columns(pl.col("reference_group").cast(reference_group_enum)) elif num_keys_reals == 1: - reals_array = np.asarray(reals_dict) + reals_array = np.asarray(reals_dict, dtype=int) times_array = np.asarray(times_dict) n = len(reals_array) @@ -308,7 +308,7 @@ def _create_list_data_to_adjust( { "reference_group": reference_group_labels, "probs": list(probs_dict.values()), - "reals": list(reals_dict.values()), + "reals": [np.asarray(r, dtype=int) for r in reals_dict.values()], "times": list(times_dict.values()), } ) diff --git a/uv.lock b/uv.lock index 37314670..8b0dc419 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 5 +revision = 3 requires-python = ">=3.12" resolution-markers = [ "python_full_version >= '3.14'", @@ -2069,14 +2069,14 @@ wheels = [ [[package]] name = "polarstate" -version = "0.1.10" +version = "0.1.9" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "polars" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f3/ee/5642831bcf8427fb167568adfade20623afa5ae1781b8f85b83bd5df7f5b/polarstate-0.1.10.tar.gz", hash = "sha256:3953d282f648dc837fc410d9e9245e92f635cbd309622dfc2b34f7310c901d4d", size = 8829, upload-time = "2026-10-18T09:49:46.909Z" } +sdist = { url = "https://files.pythonhosted.org/packages/50/63/f2267a3d38017712530180547a8391b47bdc534596133fbedd12c5dd02dd/polarstate-0.1.9.tar.gz", hash = "sha256:801dfa0aedeb11a4bddf7cd26c95bf906212e7ee0f05316d111c1ccac97fe5c1", size = 8672, upload-time = "2026-10-16T18:26:49.513Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5d/39/19cd5b706cedb4bba9d53db03dbe19627eee00d2891cd0cf5d164678748f/polarstate-0.1.10-py3-none-any.whl", hash = "sha256:beb28cc1979e2863c4136aacbc51931c292267bf171cbd4149ce5568505a9c02", size = 11073, upload-time = "2026-10-18T09:49:46.073Z" }, + { url = "https://files.pythonhosted.org/packages/03/7e/03b93b990a56f1c2c602c6780591ecb7bf6f6cb105ffdcb92ff8b173976b/polarstate-0.1.9-py3-none-any.whl", hash = "sha256:07606e86295148409e626e09ff275f4e58e54d20aed87316497ec55d561390ea", size = 10938, upload-time = "2026-10-16T18:26:48.724Z" }, ] [[package]] @@ -2610,16 +2610,13 @@ docs = [ { name = "great-docs" }, ] -[package.group-requires-python] -docs = ">=3.12" - [package.metadata] requires-dist = [ { name = "great-tables", specifier = ">=0.18.0" }, { name = "matplotlib", marker = "extra == 'matplotlib'", specifier = ">=3.9.0" }, { name = "plotly", specifier = ">=6.0.0,<7.0.0" }, { name = "polars", specifier = ">=1.31.0" }, - { name = "polarstate", specifier = "==0.1.10" }, + { name = "polarstate", specifier = "==0.1.9" }, { name = "reactable", specifier = ">=0.1.5" }, { name = "scikit-learn", specifier = ">=1.6.1" }, { name = "smoothstate", specifier = ">=0.1.1" }, From 284707703f9b3a8da4f040397791c44262cb3acb Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 18 Oct 2026 10:43:46 +0000 Subject: [PATCH 24/28] Restore clean scope and upgrade polarstate to 0.1.10 Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> --- pyproject.toml | 2 +- src/rtichoke/calibration/calibration.py | 7 +- .../performance_data_times.py | 2 +- src/rtichoke/processing/adjustments.py | 200 ++++++++---------- src/rtichoke/processing/transforms.py | 6 +- uv.lock | 8 +- 6 files changed, 101 insertions(+), 124 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index ac1e61bf..1cf5104d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ license = {text = "MIT"} requires-python = ">=3.12" dependencies = [ "plotly>=6.0.0,<7.0.0", - "polarstate==0.1.9", + "polarstate==0.1.10", "smoothstate>=0.1.1", "polars>=1.31.0", "reactable>=0.1.5", diff --git a/src/rtichoke/calibration/calibration.py b/src/rtichoke/calibration/calibration.py index e5dd97fa..0baba7da 100644 --- a/src/rtichoke/calibration/calibration.py +++ b/src/rtichoke/calibration/calibration.py @@ -1188,13 +1188,8 @@ def _prepare_adjusted_event_data( def _aj_risk_at_horizon(df: pl.DataFrame, horizon: float) -> float: """Estimate target-event cumulative incidence at one horizon.""" - if df.height == 0: - return 0.0 event_table = prepare_event_table( - df.select( - pl.col("time").alias("times"), - pl.col("real").cast(pl.Int64).alias("reals"), - ) + df.select(pl.col("time").alias("times"), pl.col("real").alias("reals")) ) estimate = predict_aj_estimates(event_table, pl.Series([horizon])) return float(estimate["state_occupancy_probability_1"][0]) diff --git a/src/rtichoke/performance_data/performance_data_times.py b/src/rtichoke/performance_data/performance_data_times.py index b091bcc2..956ad73a 100644 --- a/src/rtichoke/performance_data/performance_data_times.py +++ b/src/rtichoke/performance_data/performance_data_times.py @@ -183,7 +183,7 @@ def _compute_population_event_risk_times( """Compute the genuine pooled full-population KM/AJ event risk estimate.""" df = pl.DataFrame( { - "reals": np.asarray(reals, dtype=int), + "reals": np.asarray(reals), "times": np.asarray(times, dtype=float), "fixed_time_horizon": float(horizon), } diff --git a/src/rtichoke/processing/adjustments.py b/src/rtichoke/processing/adjustments.py index 546e61df..519b7823 100644 --- a/src/rtichoke/processing/adjustments.py +++ b/src/rtichoke/processing/adjustments.py @@ -182,126 +182,108 @@ def extract_aj_estimate_by_cutoffs( mask_predicted_negatives ) - empty_aj_schema = { - "strata": data_to_adjust.schema["strata"], - "times": pl.Float64, - "chosen_cutoff": pl.Float64, - "real_negatives_est": pl.Float64, - "real_positives_est": pl.Float64, - "real_competing_est": pl.Float64, - "estimate_origin": pl.Enum(["fixed_time_horizons", "event_table"]), - "fixed_time_horizon": pl.Float64, - } - - if predicted_positives.height > 0: - event_table_predicted_positives = prepare_event_table( - predicted_positives - ) - aj_estimate_predicted_positives = ( - ( - predict_aj_estimates( - event_table_predicted_positives, - pl.Series(horizons), - full_event_table, - ) - .with_columns( - pl.lit(chosen_cutoff).alias("chosen_cutoff"), - pl.lit(stratification_criteria) - .alias("stratified_by") - .cast(pl.Enum(["probability_threshold", "ppcr"])), - ) - .join( - counts_per_strata_predicted_positives, - on=["stratified_by"], - how="left", - ) - .with_columns( - [ - ( - pl.col("state_occupancy_probability_0") - * pl.col("strata_count") - ).alias("real_negatives_est"), - ( - pl.col("state_occupancy_probability_1") - * pl.col("strata_count") - ).alias("real_positives_est"), - ( - pl.col("state_occupancy_probability_2") - * pl.col("strata_count") - ).alias("real_competing_est"), - ] - ) + event_table_predicted_positives = prepare_event_table(predicted_positives) + event_table_predicted_negatives = prepare_event_table(predicted_negatives) + + aj_estimate_predicted_positives = ( + ( + predict_aj_estimates( + event_table_predicted_positives, + pl.Series(horizons), + full_event_table, + ) + .with_columns( + pl.lit(chosen_cutoff).alias("chosen_cutoff"), + pl.lit(stratification_criteria) + .alias("stratified_by") + .cast(pl.Enum(["probability_threshold", "ppcr"])), + ) + .join( + counts_per_strata_predicted_positives, + on=["stratified_by"], + how="left", ) - .select( + .with_columns( [ - "strata", - "times", - "chosen_cutoff", - "real_negatives_est", - "real_positives_est", - "real_competing_est", - "estimate_origin", + ( + pl.col("state_occupancy_probability_0") + * pl.col("strata_count") + ).alias("real_negatives_est"), + ( + pl.col("state_occupancy_probability_1") + * pl.col("strata_count") + ).alias("real_positives_est"), + ( + pl.col("state_occupancy_probability_2") + * pl.col("strata_count") + ).alias("real_competing_est"), ] ) - .with_columns([pl.col("times").alias("fixed_time_horizon")]) ) - else: - aj_estimate_predicted_positives = pl.DataFrame(schema=empty_aj_schema) - - if predicted_negatives.height > 0: - event_table_predicted_negatives = prepare_event_table( - predicted_negatives + .select( + [ + "strata", + # "stratified_by", + "times", + "chosen_cutoff", + "real_negatives_est", + "real_positives_est", + "real_competing_est", + "estimate_origin", + ] ) - aj_estimate_predicted_negatives = ( - ( - predict_aj_estimates( - event_table_predicted_negatives, - pl.Series(horizons), - full_event_table, - ) - .with_columns( - pl.lit(chosen_cutoff).alias("chosen_cutoff"), - pl.lit(stratification_criteria) - .alias("stratified_by") - .cast(pl.Enum(["probability_threshold", "ppcr"])), - ) - .join( - counts_per_strata_predicted_negatives, - on=["stratified_by"], - how="left", - ) - .with_columns( - [ - ( - pl.col("state_occupancy_probability_0") - * pl.col("strata_count") - ).alias("real_negatives_est"), - ( - pl.col("state_occupancy_probability_1") - * pl.col("strata_count") - ).alias("real_positives_est"), - ( - pl.col("state_occupancy_probability_2") - * pl.col("strata_count") - ).alias("real_competing_est"), - ] - ) + .with_columns([pl.col("times").alias("fixed_time_horizon")]) + ) + + aj_estimate_predicted_negatives = ( + ( + predict_aj_estimates( + event_table_predicted_negatives, + pl.Series(horizons), + full_event_table, + ) + .with_columns( + pl.lit(chosen_cutoff).alias("chosen_cutoff"), + pl.lit(stratification_criteria) + .alias("stratified_by") + .cast(pl.Enum(["probability_threshold", "ppcr"])), + ) + .join( + counts_per_strata_predicted_negatives, + on=["stratified_by"], + how="left", ) - .select( + .with_columns( [ - "strata", - "times", - "chosen_cutoff", - "real_negatives_est", - "real_positives_est", - "real_competing_est", - "estimate_origin", + ( + pl.col("state_occupancy_probability_0") + * pl.col("strata_count") + ).alias("real_negatives_est"), + ( + pl.col("state_occupancy_probability_1") + * pl.col("strata_count") + ).alias("real_positives_est"), + ( + pl.col("state_occupancy_probability_2") + * pl.col("strata_count") + ).alias("real_competing_est"), ] ) - .with_columns([pl.col("times").alias("fixed_time_horizon")]) ) - else: - aj_estimate_predicted_negatives = pl.DataFrame(schema=empty_aj_schema) + .select( + [ + "strata", + # "stratified_by", + "times", + "chosen_cutoff", + "real_negatives_est", + "real_positives_est", + "real_competing_est", + "estimate_origin", + ] + ) + .with_columns([pl.col("times").alias("fixed_time_horizon")]) + ) aj_estimates_predicted_negatives = pl.concat( [aj_estimates_predicted_negatives, aj_estimate_predicted_negatives], diff --git a/src/rtichoke/processing/transforms.py b/src/rtichoke/processing/transforms.py index 1c51bf5f..0a0356a1 100644 --- a/src/rtichoke/processing/transforms.py +++ b/src/rtichoke/processing/transforms.py @@ -281,13 +281,13 @@ def _create_list_data_to_adjust( { "reference_group": np.repeat(reference_group_labels, len(probs_array)), "probs": probs_array, - "reals": np.asarray(reals_array, dtype=int), + "reals": reals_array, "times": times_array, } ).with_columns(pl.col("reference_group").cast(reference_group_enum)) elif num_keys_reals == 1: - reals_array = np.asarray(reals_dict, dtype=int) + reals_array = np.asarray(reals_dict) times_array = np.asarray(times_dict) n = len(reals_array) @@ -308,7 +308,7 @@ def _create_list_data_to_adjust( { "reference_group": reference_group_labels, "probs": list(probs_dict.values()), - "reals": [np.asarray(r, dtype=int) for r in reals_dict.values()], + "reals": list(reals_dict.values()), "times": list(times_dict.values()), } ) diff --git a/uv.lock b/uv.lock index 8b0dc419..8eded4f0 100644 --- a/uv.lock +++ b/uv.lock @@ -2069,14 +2069,14 @@ wheels = [ [[package]] name = "polarstate" -version = "0.1.9" +version = "0.1.10" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "polars" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/50/63/f2267a3d38017712530180547a8391b47bdc534596133fbedd12c5dd02dd/polarstate-0.1.9.tar.gz", hash = "sha256:801dfa0aedeb11a4bddf7cd26c95bf906212e7ee0f05316d111c1ccac97fe5c1", size = 8672, upload-time = "2026-10-16T18:26:49.513Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/ee/5642831bcf8427fb167568adfade20623afa5ae1781b8f85b83bd5df7f5b/polarstate-0.1.10.tar.gz", hash = "sha256:3953d282f648dc837fc410d9e9245e92f635cbd309622dfc2b34f7310c901d4d", size = 8829, upload-time = "2026-10-18T09:49:46.909Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/03/7e/03b93b990a56f1c2c602c6780591ecb7bf6f6cb105ffdcb92ff8b173976b/polarstate-0.1.9-py3-none-any.whl", hash = "sha256:07606e86295148409e626e09ff275f4e58e54d20aed87316497ec55d561390ea", size = 10938, upload-time = "2026-10-16T18:26:48.724Z" }, + { url = "https://files.pythonhosted.org/packages/5d/39/19cd5b706cedb4bba9d53db03dbe19627eee00d2891cd0cf5d164678748f/polarstate-0.1.10-py3-none-any.whl", hash = "sha256:beb28cc1979e2863c4136aacbc51931c292267bf171cbd4149ce5568505a9c02", size = 11073, upload-time = "2026-10-18T09:49:46.073Z" }, ] [[package]] @@ -2616,7 +2616,7 @@ requires-dist = [ { name = "matplotlib", marker = "extra == 'matplotlib'", specifier = ">=3.9.0" }, { name = "plotly", specifier = ">=6.0.0,<7.0.0" }, { name = "polars", specifier = ">=1.31.0" }, - { name = "polarstate", specifier = "==0.1.9" }, + { name = "polarstate", specifier = "==0.1.10" }, { name = "reactable", specifier = ">=0.1.5" }, { name = "scikit-learn", specifier = ">=1.6.1" }, { name = "smoothstate", specifier = ">=0.1.1" }, From 4e87fe91fa62877e1edce10eead05b20f62f9381 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 18 Oct 2026 11:05:10 +0000 Subject: [PATCH 25/28] Add outcome_distribution render dispatch and write_html tests Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> --- src/rtichoke/_renderers.py | 1 + tests/test_reals_distribution_steps.py | 36 ++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/src/rtichoke/_renderers.py b/src/rtichoke/_renderers.py index 2d10c95f..46ce75e0 100644 --- a/src/rtichoke/_renderers.py +++ b/src/rtichoke/_renderers.py @@ -95,6 +95,7 @@ def write_html(self, path: str | Path) -> Path: "lift": "renderLiftV2", "decision_curve": "renderDecisionCurveV2", "interventions_avoided": "renderInterventionsAvoidedV2", + "outcome_distribution": "renderOutcomeDistribution", }.get(chart_type) if render_export is None: raise ValueError( diff --git a/tests/test_reals_distribution_steps.py b/tests/test_reals_distribution_steps.py index a20c7950..7408e230 100644 --- a/tests/test_reals_distribution_steps.py +++ b/tests/test_reals_distribution_steps.py @@ -284,3 +284,39 @@ def test_zero_count_category_preservation(): {"stateId": "Mild", "label": "Mild", "count": 2}, {"stateId": "Severe", "label": "Severe", "count": 0}, ] + + +def test_write_html_outcome_distribution(tmp_path): + df = pl.DataFrame( + { + "id": [1, 1, 2, 2], + "step": [0, 1, 0, 1], + "reals": ["None", "Mild", "None", "Moderate"], + } + ) + + # 1. Censoring heuristic: excluded + chart_excluded = create_reals_distribution_steps( + df, + reals_order=["None", "Mild", "Moderate"], + censoring_heuristic="excluded", + ) + out_excluded = chart_excluded.write_html(tmp_path / "excluded.html") + assert out_excluded.exists() + content_excluded = out_excluded.read_text(encoding="utf-8") + assert "renderOutcomeDistribution" in content_excluded + assert "rtichoke-viz.js" in content_excluded + assert "outcome_distribution" in content_excluded + + # 2. Censoring heuristic: adjusted + chart_adjusted = create_reals_distribution_steps( + df, + reals_order=["None", "Mild", "Moderate"], + censoring_heuristic="adjusted", + ) + out_adjusted = chart_adjusted.write_html(tmp_path / "adjusted.html") + assert out_adjusted.exists() + content_adjusted = out_adjusted.read_text(encoding="utf-8") + assert "renderOutcomeDistribution" in content_adjusted + assert "rtichoke-viz.js" in content_adjusted + assert "outcome_distribution" in content_adjusted From c4e39ab7aedb45558d934f207c8023e712814e75 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 18 Oct 2026 14:26:15 +0000 Subject: [PATCH 26/28] Report v0.24.0 asset blocker and maintain clean PR scope Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> From ad932376a19652615d019964a540436a9a3a17b9 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 18 Oct 2026 14:41:50 +0000 Subject: [PATCH 27/28] Report v0.24.0 asset status and maintain clean PR state Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> From b521367a5f862fac443deddc81c4f1920e67229c Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 18 Oct 2026 15:59:04 +0000 Subject: [PATCH 28/28] Vendor rtichoke_viz v0.24.0 and add browser acceptance tests Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> --- .github/workflows/python-package.yml | 3 +- .../_vendor/rtichoke_viz/VENDORED_FROM | 8 +- .../rtichoke_viz/rtichoke-viz-0.23.2.tar.gz | Bin 204333 -> 0 bytes .../rtichoke_viz/rtichoke-viz-0.24.0.tar.gz | Bin 0 -> 206449 bytes .../rtichoke-viz-report.schema.json | 72 +++++++ .../rtichoke_viz/rtichoke-viz-v2.schema.json | 4 + .../_vendor/rtichoke_viz/rtichoke-viz.js | 34 ++-- ...s_distribution_steps_browser_acceptance.py | 183 ++++++++++++++++++ tests/test_rtichoke_viz_vendor.py | 21 +- 9 files changed, 294 insertions(+), 31 deletions(-) delete mode 100644 src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.23.2.tar.gz create mode 100644 src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.24.0.tar.gz create mode 100644 tests/test_reals_distribution_steps_browser_acceptance.py diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 1a578548..9716c2c5 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -52,7 +52,7 @@ jobs: prefix = "rtichoke/_vendor/rtichoke_viz/" required = { f"{prefix}VENDORED_FROM", - f"{prefix}rtichoke-viz-0.23.2.tar.gz", + f"{prefix}rtichoke-viz-0.24.0.tar.gz", f"{prefix}rtichoke-viz.js", f"{prefix}rtichoke-viz.css", f"{prefix}rtichoke-viz.schema.json", @@ -60,6 +60,7 @@ jobs: f"{prefix}rtichoke-viz-report.schema.json", } assert required <= names + assert f"{prefix}rtichoke-viz-0.23.2.tar.gz" not in names assert f"{prefix}rtichoke-viz-0.23.0.tar.gz" not in names assert f"{prefix}rtichoke-viz-0.22.3.tar.gz" not in names assert f"{prefix}rtichoke-viz-0.22.2.tar.gz" not in names diff --git a/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM b/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM index 3972b40c..1f38a6f0 100644 --- a/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM +++ b/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM @@ -1,5 +1,5 @@ repository=https://github.com/uriahf/rtichoke_viz -release=v0.23.2 -source_commit=af70152c884b351ed7c407047a92cad5c1bd7007 -archive=rtichoke-viz-0.23.2.tar.gz -sha256=63981f4e4f78b38e6442b663052c17592d3355312ba16fb370321d25af456bfe +release=v0.24.0 +source_commit=9ff8c40138c7b2d11332483e0ede900d8b50b935 +archive=rtichoke-viz-0.24.0.tar.gz +sha256=58f153fbfb5aa57affbec983c4e4960fd0889c26e64ef1d25dbf982654fa90f0 diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.23.2.tar.gz b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.23.2.tar.gz deleted file mode 100644 index bea1581508958943b5e088c14760bc5c49a4dcfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204333 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%0D^s4zVmxaA9{m2u^-ODplTrsX# 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

wzugpU^4dAJ32O?@Jo6RW545KC&k4b443{$&*^@ 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�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 gT(mb_SMzSi8H=IY3L>0Fo$ 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 L=F&*`0Pr3FbzLXl literal 0 HcmV?d00001 diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-report.schema.json b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-report.schema.json index 73f6b2e5..b377a290 100644 --- a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-report.schema.json +++ b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-report.schema.json @@ -5615,6 +5615,10 @@ { "const": "fixed_time_horizon", "type": "string" + }, + { + "const": "observed_step", + "type": "string" } ] }, @@ -6782,6 +6786,10 @@ { "const": "fixed_time_horizon", "type": "string" + }, + { + "const": "observed_step", + "type": "string" } ] }, @@ -6989,6 +6997,18 @@ "title": { "type": "string" }, + "stateScale": { + "anyOf": [ + { + "const": "ordinal", + "type": "string" + }, + { + "const": "nominal", + "type": "string" + } + ] + }, "evaluations": { "minItems": 1, "type": "array", @@ -7050,6 +7070,10 @@ { "const": "fixed_time_horizon", "type": "string" + }, + { + "const": "observed_step", + "type": "string" } ] }, @@ -12881,6 +12905,10 @@ { "const": "fixed_time_horizon", "type": "string" + }, + { + "const": "observed_step", + "type": "string" } ] }, @@ -14048,6 +14076,10 @@ { "const": "fixed_time_horizon", "type": "string" + }, + { + "const": "observed_step", + "type": "string" } ] }, @@ -14255,6 +14287,18 @@ "title": { "type": "string" }, + "stateScale": { + "anyOf": [ + { + "const": "ordinal", + "type": "string" + }, + { + "const": "nominal", + "type": "string" + } + ] + }, "evaluations": { "minItems": 1, "type": "array", @@ -14316,6 +14360,10 @@ { "const": "fixed_time_horizon", "type": "string" + }, + { + "const": "observed_step", + "type": "string" } ] }, @@ -20125,6 +20173,10 @@ { "const": "fixed_time_horizon", "type": "string" + }, + { + "const": "observed_step", + "type": "string" } ] }, @@ -21292,6 +21344,10 @@ { "const": "fixed_time_horizon", "type": "string" + }, + { + "const": "observed_step", + "type": "string" } ] }, @@ -21499,6 +21555,18 @@ "title": { "type": "string" }, + "stateScale": { + "anyOf": [ + { + "const": "ordinal", + "type": "string" + }, + { + "const": "nominal", + "type": "string" + } + ] + }, "evaluations": { "minItems": 1, "type": "array", @@ -21560,6 +21628,10 @@ { "const": "fixed_time_horizon", "type": "string" + }, + { + "const": "observed_step", + "type": "string" } ] }, diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-v2.schema.json b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-v2.schema.json index b25a490a..ce59380f 100644 --- a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-v2.schema.json +++ b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-v2.schema.json @@ -5574,6 +5574,10 @@ { "const": "fixed_time_horizon", "type": "string" + }, + { + "const": "observed_step", + "type": "string" } ] }, diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.js b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.js index b2a40e2a..f9a48784 100644 --- a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.js +++ b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.js @@ -1,52 +1,52 @@ -var M6=Object.defineProperty;var Ba=(e,t)=>{for(var r in t)M6(e,r,{get:t[r],enumerable:!0})};var xr={};Ba(xr,{HasPropertyKey:()=>sp,IsArray:()=>kt,IsAsyncIterator:()=>uy,IsBigInt:()=>ju,IsBoolean:()=>li,IsDate:()=>Ga,IsFunction:()=>fy,IsIterator:()=>ly,IsNull:()=>py,IsNumber:()=>an,IsObject:()=>Ge,IsRegExp:()=>Uu,IsString:()=>et,IsSymbol:()=>my,IsUint8Array:()=>pi,IsUndefined:()=>Nt});function sp(e,t){return t in e}function uy(e){return Ge(e)&&!kt(e)&&!pi(e)&&Symbol.asyncIterator in e}function kt(e){return Array.isArray(e)}function ju(e){return typeof e=="bigint"}function li(e){return typeof e=="boolean"}function Ga(e){return e instanceof globalThis.Date}function fy(e){return typeof e=="function"}function ly(e){return Ge(e)&&!kt(e)&&!pi(e)&&Symbol.iterator in e}function py(e){return e===null}function an(e){return typeof e=="number"}function Ge(e){return typeof e=="object"&&e!==null}function Uu(e){return e instanceof globalThis.RegExp}function et(e){return typeof e=="string"}function my(e){return typeof e=="symbol"}function pi(e){return e instanceof globalThis.Uint8Array}function Nt(e){return e===void 0}function C6(e){return e.map(t=>cp(t))}function O6(e){return new Date(e.getTime())}function k6(e){return new Uint8Array(e)}function N6(e){return new RegExp(e.source,e.flags)}function R6(e){let t={};for(let r of Object.getOwnPropertyNames(e))t[r]=cp(e[r]);for(let r of Object.getOwnPropertySymbols(e))t[r]=cp(e[r]);return t}function cp(e){return kt(e)?C6(e):Ga(e)?O6(e):pi(e)?k6(e):Uu(e)?N6(e):Ge(e)?R6(e):e}function ut(e){return cp(e)}function Ys(e,t){return t===void 0?ut(e):ut({...t,...e})}function up(e){return xe(e)&&globalThis.Symbol.asyncIterator in e}function fp(e){return xe(e)&&globalThis.Symbol.iterator in e}function dy(e){return xe(e)&&(globalThis.Object.getPrototypeOf(e)===Object.prototype||globalThis.Object.getPrototypeOf(e)===null)}function lp(e){return e instanceof globalThis.Promise}function Nr(e){return e instanceof Date&&globalThis.Number.isFinite(e.getTime())}function p2(e){return e instanceof globalThis.Map}function m2(e){return e instanceof globalThis.Set}function Pn(e){return globalThis.ArrayBuffer.isView(e)}function Ws(e){return e instanceof globalThis.Uint8Array}function pe(e,t){return t in e}function xe(e){return e!==null&&typeof e=="object"}function me(e){return globalThis.Array.isArray(e)&&!globalThis.ArrayBuffer.isView(e)}function ft(e){return e===void 0}function mi(e){return e===null}function No(e){return typeof e=="boolean"}function lt(e){return typeof e=="number"}function pp(e){return globalThis.Number.isInteger(e)}function Yn(e){return typeof e=="bigint"}function Be(e){return typeof e=="string"}function ea(e){return typeof e=="function"}function di(e){return typeof e=="symbol"}function sn(e){return Yn(e)||No(e)||mi(e)||lt(e)||Be(e)||di(e)||ft(e)}var jt;(function(e){e.InstanceMode="default",e.ExactOptionalPropertyTypes=!1,e.AllowArrayObject=!1,e.AllowNaN=!1,e.AllowNullVoid=!1;function t(a,s){return e.ExactOptionalPropertyTypes?s in a:a[s]!==void 0}e.IsExactOptionalProperty=t;function r(a){let s=xe(a);return e.AllowArrayObject?s:s&&!me(a)}e.IsObjectLike=r;function n(a){return r(a)&&!(a instanceof Date)&&!(a instanceof Uint8Array)}e.IsRecordLike=n;function o(a){return e.AllowNaN?lt(a):Number.isFinite(a)}e.IsNumberLike=o;function i(a){let s=ft(a);return e.AllowNullVoid?s||a===null:s}e.IsVoidLike=i})(jt||(jt={}));function E6(e){return globalThis.Object.freeze(e).map(t=>zu(t))}function A6(e){let t={};for(let r of Object.getOwnPropertyNames(e))t[r]=zu(e[r]);for(let r of Object.getOwnPropertySymbols(e))t[r]=zu(e[r]);return globalThis.Object.freeze(t)}function zu(e){return kt(e)?E6(e):Ga(e)?e:pi(e)?e:Uu(e)?e:Ge(e)?A6(e):e}function L(e,t){let r=t!==void 0?{...t,...e}:e;switch(jt.InstanceMode){case"freeze":return zu(r);case"clone":return ut(r);default:return r}}var ge=class extends Error{constructor(t){super(t)}};var gt=Symbol.for("TypeBox.Transform"),Wn=Symbol.for("TypeBox.Readonly"),pr=Symbol.for("TypeBox.Optional"),Tn=Symbol.for("TypeBox.Hint"),V=Symbol.for("TypeBox.Kind");function Xs(e){return Ge(e)&&e[Wn]==="Readonly"}function Gr(e){return Ge(e)&&e[pr]==="Optional"}function hy(e){return Ce(e,"Any")}function gy(e){return Ce(e,"Argument")}function Xn(e){return Ce(e,"Array")}function Ka(e){return Ce(e,"AsyncIterator")}function qa(e){return Ce(e,"BigInt")}function hi(e){return Ce(e,"Boolean")}function Zn(e){return Ce(e,"Computed")}function Qn(e){return Ce(e,"Constructor")}function F6(e){return Ce(e,"Date")}function Jn(e){return Ce(e,"Function")}function eo(e){return Ce(e,"Integer")}function wt(e){return Ce(e,"Intersect")}function Ha(e){return Ce(e,"Iterator")}function Ce(e,t){return Ge(e)&&V in e&&e[V]===t}function mp(e){return li(e)||an(e)||et(e)}function cn(e){return Ce(e,"Literal")}function un(e){return Ce(e,"MappedKey")}function pt(e){return Ce(e,"MappedResult")}function ta(e){return Ce(e,"Never")}function $6(e){return Ce(e,"Not")}function Bu(e){return Ce(e,"Null")}function to(e){return Ce(e,"Number")}function Rt(e){return Ce(e,"Object")}function Ya(e){return Ce(e,"Promise")}function Wa(e){return Ce(e,"Record")}function Pt(e){return Ce(e,"Ref")}function yy(e){return Ce(e,"RegExp")}function gi(e){return Ce(e,"String")}function Gu(e){return Ce(e,"Symbol")}function fn(e){return Ce(e,"TemplateLiteral")}function D6(e){return Ce(e,"This")}function Ae(e){return Ge(e)&> in e}function ln(e){return Ce(e,"Tuple")}function yi(e){return Ce(e,"Undefined")}function ke(e){return Ce(e,"Union")}function L6(e){return Ce(e,"Uint8Array")}function V6(e){return Ce(e,"Unknown")}function j6(e){return Ce(e,"Unsafe")}function U6(e){return Ce(e,"Void")}function ra(e){return Ge(e)&&V in e&&et(e[V])}function yt(e){return hy(e)||gy(e)||Xn(e)||hi(e)||qa(e)||Ka(e)||Zn(e)||Qn(e)||F6(e)||Jn(e)||eo(e)||wt(e)||Ha(e)||cn(e)||un(e)||pt(e)||ta(e)||$6(e)||Bu(e)||to(e)||Rt(e)||Ya(e)||Wa(e)||Pt(e)||yy(e)||gi(e)||Gu(e)||fn(e)||D6(e)||ln(e)||yi(e)||ke(e)||L6(e)||V6(e)||j6(e)||U6(e)||ra(e)}var k={};Ba(k,{IsAny:()=>y2,IsArgument:()=>b2,IsArray:()=>x2,IsAsyncIterator:()=>w2,IsBigInt:()=>S2,IsBoolean:()=>v2,IsComputed:()=>I2,IsConstructor:()=>_2,IsDate:()=>P2,IsFunction:()=>T2,IsImport:()=>H6,IsInteger:()=>M2,IsIntersect:()=>C2,IsIterator:()=>O2,IsKind:()=>tS,IsKindOf:()=>Pe,IsLiteral:()=>qu,IsLiteralBoolean:()=>Y6,IsLiteralNumber:()=>N2,IsLiteralString:()=>k2,IsLiteralValue:()=>R2,IsMappedKey:()=>E2,IsMappedResult:()=>A2,IsNever:()=>F2,IsNot:()=>$2,IsNull:()=>D2,IsNumber:()=>L2,IsObject:()=>V2,IsOptional:()=>q6,IsPromise:()=>j2,IsProperties:()=>dp,IsReadonly:()=>K6,IsRecord:()=>U2,IsRecursive:()=>W6,IsRef:()=>z2,IsRegExp:()=>B2,IsSchema:()=>Jt,IsString:()=>G2,IsSymbol:()=>K2,IsTemplateLiteral:()=>q2,IsThis:()=>H2,IsTransform:()=>Y2,IsTuple:()=>W2,IsUint8Array:()=>Z2,IsUndefined:()=>X2,IsUnion:()=>Sy,IsUnionLiteral:()=>X6,IsUnknown:()=>Q2,IsUnsafe:()=>J2,IsVoid:()=>eS,TypeGuardUnknownTypeError:()=>by});var by=class extends ge{},z6=["Argument","Any","Array","AsyncIterator","BigInt","Boolean","Computed","Constructor","Date","Enum","Function","Integer","Intersect","Iterator","Literal","MappedKey","MappedResult","Not","Null","Number","Object","Promise","Record","Ref","RegExp","String","Symbol","TemplateLiteral","This","Tuple","Undefined","Union","Uint8Array","Unknown","Void"];function d2(e){try{return new RegExp(e),!0}catch{return!1}}function xy(e){if(!et(e))return!1;for(let t=0;t=7&&r<=13||r===27||r===127)return!1}return!0}function h2(e){return wy(e)||Jt(e)}function Ku(e){return Nt(e)||ju(e)}function tt(e){return Nt(e)||an(e)}function wy(e){return Nt(e)||li(e)}function Ke(e){return Nt(e)||et(e)}function B6(e){return Nt(e)||et(e)&&xy(e)&&d2(e)}function G6(e){return Nt(e)||et(e)&&xy(e)}function g2(e){return Nt(e)||Jt(e)}function K6(e){return Ge(e)&&e[Wn]==="Readonly"}function q6(e){return Ge(e)&&e[pr]==="Optional"}function y2(e){return Pe(e,"Any")&&Ke(e.$id)}function b2(e){return Pe(e,"Argument")&&an(e.index)}function x2(e){return Pe(e,"Array")&&e.type==="array"&&Ke(e.$id)&&Jt(e.items)&&tt(e.minItems)&&tt(e.maxItems)&&wy(e.uniqueItems)&&g2(e.contains)&&tt(e.minContains)&&tt(e.maxContains)}function w2(e){return Pe(e,"AsyncIterator")&&e.type==="AsyncIterator"&&Ke(e.$id)&&Jt(e.items)}function S2(e){return Pe(e,"BigInt")&&e.type==="bigint"&&Ke(e.$id)&&Ku(e.exclusiveMaximum)&&Ku(e.exclusiveMinimum)&&Ku(e.maximum)&&Ku(e.minimum)&&Ku(e.multipleOf)}function v2(e){return Pe(e,"Boolean")&&e.type==="boolean"&&Ke(e.$id)}function I2(e){return Pe(e,"Computed")&&et(e.target)&&kt(e.parameters)&&e.parameters.every(t=>Jt(t))}function _2(e){return Pe(e,"Constructor")&&e.type==="Constructor"&&Ke(e.$id)&&kt(e.parameters)&&e.parameters.every(t=>Jt(t))&&Jt(e.returns)}function P2(e){return Pe(e,"Date")&&e.type==="Date"&&Ke(e.$id)&&tt(e.exclusiveMaximumTimestamp)&&tt(e.exclusiveMinimumTimestamp)&&tt(e.maximumTimestamp)&&tt(e.minimumTimestamp)&&tt(e.multipleOfTimestamp)}function T2(e){return Pe(e,"Function")&&e.type==="Function"&&Ke(e.$id)&&kt(e.parameters)&&e.parameters.every(t=>Jt(t))&&Jt(e.returns)}function H6(e){return Pe(e,"Import")&&sp(e,"$defs")&&Ge(e.$defs)&&dp(e.$defs)&&sp(e,"$ref")&&et(e.$ref)&&e.$ref in e.$defs}function M2(e){return Pe(e,"Integer")&&e.type==="integer"&&Ke(e.$id)&&tt(e.exclusiveMaximum)&&tt(e.exclusiveMinimum)&&tt(e.maximum)&&tt(e.minimum)&&tt(e.multipleOf)}function dp(e){return Ge(e)&&Object.entries(e).every(([t,r])=>xy(t)&&Jt(r))}function C2(e){return Pe(e,"Intersect")&&!(et(e.type)&&e.type!=="object")&&kt(e.allOf)&&e.allOf.every(t=>Jt(t)&&!Y2(t))&&Ke(e.type)&&(wy(e.unevaluatedProperties)||g2(e.unevaluatedProperties))&&Ke(e.$id)}function O2(e){return Pe(e,"Iterator")&&e.type==="Iterator"&&Ke(e.$id)&&Jt(e.items)}function Pe(e,t){return Ge(e)&&V in e&&e[V]===t}function k2(e){return qu(e)&&et(e.const)}function N2(e){return qu(e)&&an(e.const)}function Y6(e){return qu(e)&&li(e.const)}function qu(e){return Pe(e,"Literal")&&Ke(e.$id)&&R2(e.const)}function R2(e){return li(e)||an(e)||et(e)}function E2(e){return Pe(e,"MappedKey")&&kt(e.keys)&&e.keys.every(t=>an(t)||et(t))}function A2(e){return Pe(e,"MappedResult")&&dp(e.properties)}function F2(e){return Pe(e,"Never")&&Ge(e.not)&&Object.getOwnPropertyNames(e.not).length===0}function $2(e){return Pe(e,"Not")&&Jt(e.not)}function D2(e){return Pe(e,"Null")&&e.type==="null"&&Ke(e.$id)}function L2(e){return Pe(e,"Number")&&e.type==="number"&&Ke(e.$id)&&tt(e.exclusiveMaximum)&&tt(e.exclusiveMinimum)&&tt(e.maximum)&&tt(e.minimum)&&tt(e.multipleOf)}function V2(e){return Pe(e,"Object")&&e.type==="object"&&Ke(e.$id)&&dp(e.properties)&&h2(e.additionalProperties)&&tt(e.minProperties)&&tt(e.maxProperties)}function j2(e){return Pe(e,"Promise")&&e.type==="Promise"&&Ke(e.$id)&&Jt(e.item)}function U2(e){return Pe(e,"Record")&&e.type==="object"&&Ke(e.$id)&&h2(e.additionalProperties)&&Ge(e.patternProperties)&&(t=>{let r=Object.getOwnPropertyNames(t.patternProperties);return r.length===1&&d2(r[0])&&Ge(t.patternProperties)&&Jt(t.patternProperties[r[0]])})(e)}function W6(e){return Ge(e)&&Tn in e&&e[Tn]==="Recursive"}function z2(e){return Pe(e,"Ref")&&Ke(e.$id)&&et(e.$ref)}function B2(e){return Pe(e,"RegExp")&&Ke(e.$id)&&et(e.source)&&et(e.flags)&&tt(e.maxLength)&&tt(e.minLength)}function G2(e){return Pe(e,"String")&&e.type==="string"&&Ke(e.$id)&&tt(e.minLength)&&tt(e.maxLength)&&B6(e.pattern)&&G6(e.format)}function K2(e){return Pe(e,"Symbol")&&e.type==="symbol"&&Ke(e.$id)}function q2(e){return Pe(e,"TemplateLiteral")&&e.type==="string"&&et(e.pattern)&&e.pattern[0]==="^"&&e.pattern[e.pattern.length-1]==="$"}function H2(e){return Pe(e,"This")&&Ke(e.$id)&&et(e.$ref)}function Y2(e){return Ge(e)&> in e}function W2(e){return Pe(e,"Tuple")&&e.type==="array"&&Ke(e.$id)&&an(e.minItems)&&an(e.maxItems)&&e.minItems===e.maxItems&&(Nt(e.items)&&Nt(e.additionalItems)&&e.minItems===0||kt(e.items)&&e.items.every(t=>Jt(t)))}function X2(e){return Pe(e,"Undefined")&&e.type==="undefined"&&Ke(e.$id)}function X6(e){return Sy(e)&&e.anyOf.every(t=>k2(t)||N2(t))}function Sy(e){return Pe(e,"Union")&&Ke(e.$id)&&Ge(e)&&kt(e.anyOf)&&e.anyOf.every(t=>Jt(t))}function Z2(e){return Pe(e,"Uint8Array")&&e.type==="Uint8Array"&&Ke(e.$id)&&tt(e.minByteLength)&&tt(e.maxByteLength)}function Q2(e){return Pe(e,"Unknown")&&Ke(e.$id)}function J2(e){return Pe(e,"Unsafe")}function eS(e){return Pe(e,"Void")&&e.type==="void"&&Ke(e.$id)}function tS(e){return Ge(e)&&V in e&&et(e[V])&&!z6.includes(e[V])}function Jt(e){return Ge(e)&&(y2(e)||b2(e)||x2(e)||v2(e)||S2(e)||w2(e)||I2(e)||_2(e)||P2(e)||T2(e)||M2(e)||C2(e)||O2(e)||qu(e)||E2(e)||A2(e)||F2(e)||$2(e)||D2(e)||L2(e)||V2(e)||j2(e)||U2(e)||z2(e)||B2(e)||G2(e)||K2(e)||q2(e)||H2(e)||W2(e)||X2(e)||Sy(e)||Z2(e)||Q2(e)||J2(e)||eS(e)||tS(e))}var vy="(true|false)",Hu="(0|[1-9][0-9]*)",Iy="(.*)",Z6="(?!.*)",XB=`^${vy}$`,na=`^${Hu}$`,oa=`^${Iy}$`,rS=`^${Z6}$`;var ia={};Ba(ia,{Clear:()=>J6,Delete:()=>e5,Entries:()=>Q6,Get:()=>n5,Has:()=>t5,Set:()=>r5});var Zs=new Map;function Q6(){return new Map(Zs)}function J6(){return Zs.clear()}function e5(e){return Zs.delete(e)}function t5(e){return Zs.has(e)}function r5(e,t){Zs.set(e,t)}function n5(e){return Zs.get(e)}var ro={};Ba(ro,{Clear:()=>i5,Delete:()=>a5,Entries:()=>o5,Get:()=>u5,Has:()=>s5,Set:()=>c5});var Qs=new Map;function o5(){return new Map(Qs)}function i5(){return Qs.clear()}function a5(e){return Qs.delete(e)}function s5(e){return Qs.has(e)}function c5(e,t){Qs.set(e,t)}function u5(e){return Qs.get(e)}function nS(e,t){return e.includes(t)}function oS(e){return[...new Set(e)]}function f5(e,t){return e.filter(r=>t.includes(r))}function l5(e,t){return e.reduce((r,n)=>f5(r,n),t)}function iS(e){return e.length===1?e[0]:e.length>1?l5(e.slice(1),e[0]):[]}function aS(e){let t=[];for(let r of e)t.push(...r);return t}function aa(e){return L({[V]:"Any"},e)}function Js(e,t){return L({[V]:"Array",type:"array",items:e},t)}function sS(e){return L({[V]:"Argument",index:e})}function ec(e,t){return L({[V]:"AsyncIterator",type:"AsyncIterator",items:e},t)}function at(e,t,r){return L({[V]:"Computed",target:e,parameters:t},r)}function p5(e,t){let{[t]:r,...n}=e;return n}function St(e,t){return t.reduce((r,n)=>p5(r,n),e)}function _e(e){return L({[V]:"Never",not:{}},e)}function Ne(e){return L({[V]:"MappedResult",properties:e})}function tc(e,t,r){return L({[V]:"Constructor",type:"Constructor",parameters:e,returns:t},r)}function Ro(e,t,r){return L({[V]:"Function",type:"Function",parameters:e,returns:t},r)}function Yu(e,t){return L({[V]:"Union",anyOf:e},t)}function m5(e){return e.some(t=>Gr(t))}function cS(e){return e.map(t=>Gr(t)?d5(t):t)}function d5(e){return St(e,[pr])}function h5(e,t){return m5(e)?wr(Yu(cS(e),t)):Yu(cS(e),t)}function Eo(e,t){return e.length===1?L(e[0],t):e.length===0?_e(t):h5(e,t)}function Fe(e,t){return e.length===0?_e(t):e.length===1?L(e[0],t):Yu(e,t)}var hp=class extends ge{};function g5(e){return e.replace(/\\\$/g,"$").replace(/\\\*/g,"*").replace(/\\\^/g,"^").replace(/\\\|/g,"|").replace(/\\\(/g,"(").replace(/\\\)/g,")")}function _y(e,t,r){return e[t]===r&&e.charCodeAt(t-1)!==92}function xi(e,t){return _y(e,t,"(")}function Wu(e,t){return _y(e,t,")")}function uS(e,t){return _y(e,t,"|")}function y5(e){if(!(xi(e,0)&&Wu(e,e.length-1)))return!1;let t=0;for(let r=0;r0&&n.push(rc(a)),r=i+1}let o=e.slice(r);return o.length>0&&n.push(rc(o)),n.length===0?{type:"const",const:""}:n.length===1?n[0]:{type:"or",expr:n}}function v5(e){function t(o,i){if(!xi(o,i))throw new hp("TemplateLiteralParser: Index must point to open parens");let a=0;for(let s=i;s0&&n.push(rc(s)),o=a-1}return n.length===0?{type:"const",const:""}:n.length===1?n[0]:{type:"and",expr:n}}function rc(e){return y5(e)?rc(b5(e)):x5(e)?S5(e):w5(e)?v5(e):{type:"const",const:g5(e)}}function nc(e){return rc(e.slice(1,e.length-1))}var Py=class extends ge{};function I5(e){return e.type==="or"&&e.expr.length===2&&e.expr[0].type==="const"&&e.expr[0].const==="0"&&e.expr[1].type==="const"&&e.expr[1].const==="[1-9][0-9]*"}function _5(e){return e.type==="or"&&e.expr.length===2&&e.expr[0].type==="const"&&e.expr[0].const==="true"&&e.expr[1].type==="const"&&e.expr[1].const==="false"}function P5(e){return e.type==="const"&&e.const===".*"}function Xa(e){return I5(e)||P5(e)?!1:_5(e)?!0:e.type==="and"?e.expr.every(t=>Xa(t)):e.type==="or"?e.expr.every(t=>Xa(t)):e.type==="const"?!0:(()=>{throw new Py("Unknown expression type")})()}function gp(e){let t=nc(e.pattern);return Xa(t)}var Ty=class extends ge{};function*fS(e){if(e.length===1)return yield*e[0];for(let t of e[0])for(let r of fS(e.slice(1)))yield`${t}${r}`}function*T5(e){return yield*fS(e.expr.map(t=>[...Xu(t)]))}function*M5(e){for(let t of e.expr)yield*Xu(t)}function*C5(e){return yield e.const}function*Xu(e){return e.type==="and"?yield*T5(e):e.type==="or"?yield*M5(e):e.type==="const"?yield*C5(e):(()=>{throw new Ty("Unknown expression")})()}function oc(e){let t=nc(e.pattern);return Xa(t)?[...Xu(t)]:[]}function Oe(e,t){return L({[V]:"Literal",const:e,type:typeof e},t)}function yp(e){return L({[V]:"Boolean",type:"boolean"},e)}function ic(e){return L({[V]:"BigInt",type:"bigint"},e)}function Mn(e){return L({[V]:"Number",type:"number"},e)}function Rr(e){return L({[V]:"String",type:"string"},e)}function*O5(e){let t=e.trim().replace(/"|'/g,"");return t==="boolean"?yield yp():t==="number"?yield Mn():t==="bigint"?yield ic():t==="string"?yield Rr():yield(()=>{let r=t.split("|").map(n=>Oe(n.trim()));return r.length===0?_e():r.length===1?r[0]:Eo(r)})()}function*k5(e){if(e[1]!=="{"){let t=Oe("$"),r=My(e.slice(1));return yield*[t,...r]}for(let t=2;tpS(r,t)).join("|")})`:to(e)?`${t}${Hu}`:eo(e)?`${t}${Hu}`:qa(e)?`${t}${Hu}`:gi(e)?`${t}${Iy}`:cn(e)?`${t}${N5(e.const.toString())}`:hi(e)?`${t}${vy}`:(()=>{throw new Cy(`Unexpected Kind '${e[V]}'`)})()}function Oy(e){return`^${e.map(t=>pS(t,"")).join("")}$`}function Za(e){let r=oc(e).map(n=>Oe(n));return Eo(r)}function bp(e,t){let r=et(e)?Oy(lS(e)):Oy(e);return L({[V]:"TemplateLiteral",type:"string",pattern:r},t)}function R5(e){return oc(e).map(r=>r.toString())}function E5(e){let t=[];for(let r of e)t.push(...Kr(r));return t}function A5(e){return[e.toString()]}function Kr(e){return[...new Set(fn(e)?R5(e):ke(e)?E5(e.anyOf):cn(e)?A5(e.const):to(e)?["[number]"]:eo(e)?["[number]"]:[])]}function F5(e,t,r){let n={};for(let o of Object.getOwnPropertyNames(t))n[o]=sa(e,Kr(t[o]),r);return n}function $5(e,t,r){return F5(e,t.properties,r)}function mS(e,t,r){let n=$5(e,t,r);return Ne(n)}function hS(e,t){return e.map(r=>gS(r,t))}function D5(e){return e.filter(t=>!ta(t))}function L5(e,t){return xp(D5(hS(e,t)))}function V5(e){return e.some(t=>ta(t))?[]:e}function j5(e,t){return Eo(V5(hS(e,t)))}function U5(e,t){return t in e?e[t]:t==="[number]"?Eo(e):_e()}function z5(e,t){return t==="[number]"?e:_e()}function B5(e,t){return t in e?e[t]:_e()}function gS(e,t){return wt(e)?L5(e.allOf,t):ke(e)?j5(e.anyOf,t):ln(e)?U5(e.items??[],t):Xn(e)?z5(e.items,t):Rt(e)?B5(e.properties,t):_e()}function Zu(e,t){return t.map(r=>gS(e,r))}function dS(e,t){return Eo(Zu(e,t))}function sa(e,t,r){if(Pt(e)||Pt(t)){let n="Index types using Ref parameters require both Type and Key to be of TSchema";if(!yt(e)||!yt(t))throw new ge(n);return at("Index",[e,t])}return pt(t)?mS(e,t,r):un(t)?yS(e,t,r):L(yt(t)?dS(e,Kr(t)):dS(e,t),r)}function G5(e,t,r){return{[t]:sa(e,[t],ut(r))}}function K5(e,t,r){return t.reduce((n,o)=>({...n,...G5(e,o,r)}),{})}function q5(e,t,r){return K5(e,t.keys,r)}function yS(e,t,r){let n=q5(e,t,r);return Ne(n)}function ac(e,t){return L({[V]:"Iterator",type:"Iterator",items:e},t)}function H5(e){return globalThis.Object.keys(e).filter(t=>!Gr(e[t]))}function Y5(e,t){let r=H5(e),n=r.length>0?{[V]:"Object",type:"object",required:r,properties:e}:{[V]:"Object",type:"object",properties:e};return L(n,t)}var $e=Y5;function wp(e,t){return L({[V]:"Promise",type:"Promise",item:e},t)}function W5(e){return L(St(e,[Wn]))}function X5(e){return L({...e,[Wn]:"Readonly"})}function Z5(e,t){return t===!1?W5(e):X5(e)}function qr(e,t){let r=t??!0;return pt(e)?bS(e,r):Z5(e,r)}function Q5(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=qr(e[n],t);return r}function J5(e,t){return Q5(e.properties,t)}function bS(e,t){let r=J5(e,t);return Ne(r)}function Cn(e,t){return L(e.length>0?{[V]:"Tuple",type:"array",items:e,additionalItems:!1,minItems:e.length,maxItems:e.length}:{[V]:"Tuple",type:"array",minItems:e.length,maxItems:e.length},t)}function xS(e,t){return e in t?On(e,t[e]):Ne(t)}function eN(e){return{[e]:Oe(e)}}function tN(e){let t={};for(let r of e)t[r]=Oe(r);return t}function rN(e,t){return nS(t,e)?eN(e):tN(t)}function nN(e,t){let r=rN(e,t);return xS(e,r)}function Qu(e,t){return t.map(r=>On(e,r))}function oN(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(t))r[n]=On(e,t[n]);return r}function On(e,t){let r={...t};return Gr(t)?wr(On(e,St(t,[pr]))):Xs(t)?qr(On(e,St(t,[Wn]))):pt(t)?xS(e,t.properties):un(t)?nN(e,t.keys):Qn(t)?tc(Qu(e,t.parameters),On(e,t.returns),r):Jn(t)?Ro(Qu(e,t.parameters),On(e,t.returns),r):Ka(t)?ec(On(e,t.items),r):Ha(t)?ac(On(e,t.items),r):wt(t)?Sr(Qu(e,t.allOf),r):ke(t)?Fe(Qu(e,t.anyOf),r):ln(t)?Cn(Qu(e,t.items??[]),r):Rt(t)?$e(oN(e,t.properties),r):Xn(t)?Js(On(e,t.items),r):Ya(t)?wp(On(e,t.item),r):t}function iN(e,t){let r={};for(let n of e)r[n]=On(n,t);return r}function wS(e,t,r){let n=yt(e)?Kr(e):e,o=t({[V]:"MappedKey",keys:n}),i=iN(n,o);return $e(i,r)}function aN(e){return L(St(e,[pr]))}function sN(e){return L({...e,[pr]:"Optional"})}function cN(e,t){return t===!1?aN(e):sN(e)}function wr(e,t){let r=t??!0;return pt(e)?SS(e,r):cN(e,r)}function uN(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=wr(e[n],t);return r}function fN(e,t){return uN(e.properties,t)}function SS(e,t){let r=fN(e,t);return Ne(r)}function Ju(e,t={}){let r=e.every(o=>Rt(o)),n=yt(t.unevaluatedProperties)?{unevaluatedProperties:t.unevaluatedProperties}:{};return L(t.unevaluatedProperties===!1||yt(t.unevaluatedProperties)||r?{...n,[V]:"Intersect",type:"object",allOf:e}:{...n,[V]:"Intersect",allOf:e},t)}function lN(e){return e.every(t=>Gr(t))}function pN(e){return St(e,[pr])}function vS(e){return e.map(t=>Gr(t)?pN(t):t)}function mN(e,t){return lN(e)?wr(Ju(vS(e),t)):Ju(vS(e),t)}function xp(e,t={}){if(e.length===1)return L(e[0],t);if(e.length===0)return _e(t);if(e.some(r=>Ae(r)))throw new Error("Cannot intersect transform types");return mN(e,t)}function Sr(e,t){if(e.length===1)return L(e[0],t);if(e.length===0)return _e(t);if(e.some(r=>Ae(r)))throw new Error("Cannot intersect transform types");return Ju(e,t)}function Ao(...e){let[t,r]=typeof e[0]=="string"?[e[0],e[1]]:[e[0].$id,e[1]];if(typeof t!="string")throw new ge("Ref: $ref must be a string");return L({[V]:"Ref",$ref:t},r)}function dN(e,t){return at("Awaited",[at(e,t)])}function hN(e){return at("Awaited",[Ao(e)])}function gN(e){return Sr(IS(e))}function yN(e){return Fe(IS(e))}function bN(e){return sc(e)}function IS(e){return e.map(t=>sc(t))}function sc(e,t){return L(Zn(e)?dN(e.target,e.parameters):wt(e)?gN(e.allOf):ke(e)?yN(e.anyOf):Ya(e)?bN(e.item):Pt(e)?hN(e.$ref):e,t)}function _S(e){let t=[];for(let r of e)t.push(Hr(r));return t}function xN(e){let t=_S(e);return aS(t)}function wN(e){let t=_S(e);return iS(t)}function SN(e){return e.map((t,r)=>r.toString())}function vN(e){return["[number]"]}function IN(e){return globalThis.Object.getOwnPropertyNames(e)}function _N(e){return ky?globalThis.Object.getOwnPropertyNames(e).map(r=>r[0]==="^"&&r[r.length-1]==="$"?r.slice(1,r.length-1):r):[]}function Hr(e){return wt(e)?xN(e.allOf):ke(e)?wN(e.anyOf):ln(e)?SN(e.items??[]):Xn(e)?vN(e.items):Rt(e)?IN(e.properties):Wa(e)?_N(e.patternProperties):[]}var ky=!1;function cc(e){ky=!0;let t=Hr(e);return ky=!1,`^(${t.map(n=>`(${n})`).join("|")})$`}function PN(e,t){return at("KeyOf",[at(e,t)])}function TN(e){return at("KeyOf",[Ao(e)])}function MN(e,t){let r=Hr(e),n=CN(r),o=Eo(n);return L(o,t)}function CN(e){return e.map(t=>t==="[number]"?Mn():Oe(t))}function uc(e,t){return Zn(e)?PN(e.target,e.parameters):Pt(e)?TN(e.$ref):pt(e)?PS(e,t):MN(e,t)}function ON(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=uc(e[n],ut(t));return r}function kN(e,t){return ON(e.properties,t)}function PS(e,t){let r=kN(e,t);return Ne(r)}function Sp(e){let t=Hr(e),r=Zu(e,t);return t.map((n,o)=>[t[o],r[o]])}function NN(e){let t=[];for(let r of e)t.push(...Hr(r));return oS(t)}function RN(e){return e.filter(t=>!ta(t))}function EN(e,t){let r=[];for(let n of e)r.push(...Zu(n,[t]));return RN(r)}function AN(e,t){let r={};for(let n of t)r[n]=xp(EN(e,n));return r}function TS(e,t){let r=NN(e),n=AN(e,r);return $e(n,t)}function vp(e){return L({[V]:"Date",type:"Date"},e)}function Ip(e){return L({[V]:"Null",type:"null"},e)}function _p(e){return L({[V]:"Symbol",type:"symbol"},e)}function Pp(e){return L({[V]:"Undefined",type:"undefined"},e)}function Tp(e){return L({[V]:"Uint8Array",type:"Uint8Array"},e)}function no(e){return L({[V]:"Unknown"},e)}function FN(e){return e.map(t=>Ny(t,!1))}function $N(e){let t={};for(let r of globalThis.Object.getOwnPropertyNames(e))t[r]=qr(Ny(e[r],!1));return t}function Mp(e,t){return t===!0?e:qr(e)}function Ny(e,t){return uy(e)?Mp(aa(),t):ly(e)?Mp(aa(),t):kt(e)?qr(Cn(FN(e))):pi(e)?Tp():Ga(e)?vp():Ge(e)?Mp($e($N(e)),t):fy(e)?Mp(Ro([],no()),t):Nt(e)?Pp():py(e)?Ip():my(e)?_p():ju(e)?ic():an(e)?Oe(e):li(e)?Oe(e):et(e)?Oe(e):$e({})}function MS(e,t){return L(Ny(e,!0),t)}function CS(e,t){return Qn(e)?Cn(e.parameters,t):_e(t)}function OS(e,t){if(Nt(e))throw new Error("Enum undefined or empty");let r=globalThis.Object.getOwnPropertyNames(e).filter(i=>isNaN(i)).map(i=>e[i]),o=[...new Set(r)].map(i=>Oe(i));return Fe(o,{...t,[Tn]:"Enum"})}var Ey=class extends ge{},j;(function(e){e[e.Union=0]="Union",e[e.True=1]="True",e[e.False=2]="False"})(j||(j={}));function kn(e){return e===j.False?e:j.True}function fc(e){throw new Ey(e)}function Ut(e){return k.IsNever(e)||k.IsIntersect(e)||k.IsUnion(e)||k.IsUnknown(e)||k.IsAny(e)}function zt(e,t){return k.IsNever(t)?$S(e,t):k.IsIntersect(t)?Cp(e,t):k.IsUnion(t)?Dy(e,t):k.IsUnknown(t)?jS(e,t):k.IsAny(t)?$y(e,t):fc("StructuralRight")}function $y(e,t){return j.True}function DN(e,t){return k.IsIntersect(t)?Cp(e,t):k.IsUnion(t)&&t.anyOf.some(r=>k.IsAny(r)||k.IsUnknown(r))?j.True:k.IsUnion(t)?j.Union:k.IsUnknown(t)||k.IsAny(t)?j.True:j.Union}function LN(e,t){return k.IsUnknown(e)?j.False:k.IsAny(e)?j.Union:k.IsNever(e)?j.True:j.False}function VN(e,t){return k.IsObject(t)&&Op(t)?j.True:Ut(t)?zt(e,t):k.IsArray(t)?kn(qe(e.items,t.items)):j.False}function jN(e,t){return Ut(t)?zt(e,t):k.IsAsyncIterator(t)?kn(qe(e.items,t.items)):j.False}function UN(e,t){return Ut(t)?zt(e,t):k.IsObject(t)?vr(e,t):k.IsRecord(t)?Nn(e,t):k.IsBigInt(t)?j.True:j.False}function AS(e,t){return k.IsLiteralBoolean(e)||k.IsBoolean(e)?j.True:j.False}function zN(e,t){return Ut(t)?zt(e,t):k.IsObject(t)?vr(e,t):k.IsRecord(t)?Nn(e,t):k.IsBoolean(t)?j.True:j.False}function BN(e,t){return Ut(t)?zt(e,t):k.IsObject(t)?vr(e,t):k.IsConstructor(t)?e.parameters.length>t.parameters.length?j.False:e.parameters.every((r,n)=>kn(qe(t.parameters[n],r))===j.True)?kn(qe(e.returns,t.returns)):j.False:j.False}function GN(e,t){return Ut(t)?zt(e,t):k.IsObject(t)?vr(e,t):k.IsRecord(t)?Nn(e,t):k.IsDate(t)?j.True:j.False}function KN(e,t){return Ut(t)?zt(e,t):k.IsObject(t)?vr(e,t):k.IsFunction(t)?e.parameters.length>t.parameters.length?j.False:e.parameters.every((r,n)=>kn(qe(t.parameters[n],r))===j.True)?kn(qe(e.returns,t.returns)):j.False:j.False}function FS(e,t){return k.IsLiteral(e)&&xr.IsNumber(e.const)||k.IsNumber(e)||k.IsInteger(e)?j.True:j.False}function qN(e,t){return k.IsInteger(t)||k.IsNumber(t)?j.True:Ut(t)?zt(e,t):k.IsObject(t)?vr(e,t):k.IsRecord(t)?Nn(e,t):j.False}function Cp(e,t){return t.allOf.every(r=>qe(e,r)===j.True)?j.True:j.False}function HN(e,t){return e.allOf.some(r=>qe(r,t)===j.True)?j.True:j.False}function YN(e,t){return Ut(t)?zt(e,t):k.IsIterator(t)?kn(qe(e.items,t.items)):j.False}function WN(e,t){return k.IsLiteral(t)&&t.const===e.const?j.True:Ut(t)?zt(e,t):k.IsObject(t)?vr(e,t):k.IsRecord(t)?Nn(e,t):k.IsString(t)?VS(e,t):k.IsNumber(t)?DS(e,t):k.IsInteger(t)?FS(e,t):k.IsBoolean(t)?AS(e,t):j.False}function $S(e,t){return j.False}function XN(e,t){return j.True}function kS(e){let[t,r]=[e,0];for(;k.IsNot(t);)t=t.not,r+=1;return r%2===0?t:no()}function ZN(e,t){return k.IsNot(e)?qe(kS(e),t):k.IsNot(t)?qe(e,kS(t)):fc("Invalid fallthrough for Not")}function QN(e,t){return Ut(t)?zt(e,t):k.IsObject(t)?vr(e,t):k.IsRecord(t)?Nn(e,t):k.IsNull(t)?j.True:j.False}function DS(e,t){return k.IsLiteralNumber(e)||k.IsNumber(e)||k.IsInteger(e)?j.True:j.False}function JN(e,t){return Ut(t)?zt(e,t):k.IsObject(t)?vr(e,t):k.IsRecord(t)?Nn(e,t):k.IsInteger(t)||k.IsNumber(t)?j.True:j.False}function Yr(e,t){return Object.getOwnPropertyNames(e.properties).length===t}function NS(e){return Op(e)}function RS(e){return Yr(e,0)||Yr(e,1)&&"description"in e.properties&&k.IsUnion(e.properties.description)&&e.properties.description.anyOf.length===2&&(k.IsString(e.properties.description.anyOf[0])&&k.IsUndefined(e.properties.description.anyOf[1])||k.IsString(e.properties.description.anyOf[1])&&k.IsUndefined(e.properties.description.anyOf[0]))}function Ry(e){return Yr(e,0)}function ES(e){return Yr(e,0)}function eR(e){return Yr(e,0)}function tR(e){return Yr(e,0)}function rR(e){return Op(e)}function nR(e){let t=Mn();return Yr(e,0)||Yr(e,1)&&"length"in e.properties&&kn(qe(e.properties.length,t))===j.True}function oR(e){return Yr(e,0)}function Op(e){let t=Mn();return Yr(e,0)||Yr(e,1)&&"length"in e.properties&&kn(qe(e.properties.length,t))===j.True}function iR(e){let t=Ro([aa()],aa());return Yr(e,0)||Yr(e,1)&&"then"in e.properties&&kn(qe(e.properties.then,t))===j.True}function LS(e,t){return qe(e,t)===j.False||k.IsOptional(e)&&!k.IsOptional(t)?j.False:j.True}function vr(e,t){return k.IsUnknown(e)?j.False:k.IsAny(e)?j.Union:k.IsNever(e)||k.IsLiteralString(e)&&NS(t)||k.IsLiteralNumber(e)&&Ry(t)||k.IsLiteralBoolean(e)&&ES(t)||k.IsSymbol(e)&&RS(t)||k.IsBigInt(e)&&eR(t)||k.IsString(e)&&NS(t)||k.IsSymbol(e)&&RS(t)||k.IsNumber(e)&&Ry(t)||k.IsInteger(e)&&Ry(t)||k.IsBoolean(e)&&ES(t)||k.IsUint8Array(e)&&rR(t)||k.IsDate(e)&&tR(t)||k.IsConstructor(e)&&oR(t)||k.IsFunction(e)&&nR(t)?j.True:k.IsRecord(e)&&k.IsString(Ay(e))?t[Tn]==="Record"?j.True:j.False:k.IsRecord(e)&&k.IsNumber(Ay(e))?Yr(t,0)?j.True:j.False:j.False}function aR(e,t){return Ut(t)?zt(e,t):k.IsRecord(t)?Nn(e,t):k.IsObject(t)?(()=>{for(let r of Object.getOwnPropertyNames(t.properties)){if(!(r in e.properties)&&!k.IsOptional(t.properties[r]))return j.False;if(k.IsOptional(t.properties[r]))return j.True;if(LS(e.properties[r],t.properties[r])===j.False)return j.False}return j.True})():j.False}function sR(e,t){return Ut(t)?zt(e,t):k.IsObject(t)&&iR(t)?j.True:k.IsPromise(t)?kn(qe(e.item,t.item)):j.False}function Ay(e){return na in e.patternProperties?Mn():oa in e.patternProperties?Rr():fc("Unknown record key pattern")}function Fy(e){return na in e.patternProperties?e.patternProperties[na]:oa in e.patternProperties?e.patternProperties[oa]:fc("Unable to get record value schema")}function Nn(e,t){let[r,n]=[Ay(t),Fy(t)];return k.IsLiteralString(e)&&k.IsNumber(r)&&kn(qe(e,n))===j.True?j.True:k.IsUint8Array(e)&&k.IsNumber(r)||k.IsString(e)&&k.IsNumber(r)||k.IsArray(e)&&k.IsNumber(r)?qe(e,n):k.IsObject(e)?(()=>{for(let o of Object.getOwnPropertyNames(e.properties))if(LS(n,e.properties[o])===j.False)return j.False;return j.True})():j.False}function cR(e,t){return Ut(t)?zt(e,t):k.IsObject(t)?vr(e,t):k.IsRecord(t)?qe(Fy(e),Fy(t)):j.False}function uR(e,t){let r=k.IsRegExp(e)?Rr():e,n=k.IsRegExp(t)?Rr():t;return qe(r,n)}function VS(e,t){return k.IsLiteral(e)&&xr.IsString(e.const)||k.IsString(e)?j.True:j.False}function fR(e,t){return Ut(t)?zt(e,t):k.IsObject(t)?vr(e,t):k.IsRecord(t)?Nn(e,t):k.IsString(t)?j.True:j.False}function lR(e,t){return Ut(t)?zt(e,t):k.IsObject(t)?vr(e,t):k.IsRecord(t)?Nn(e,t):k.IsSymbol(t)?j.True:j.False}function pR(e,t){return k.IsTemplateLiteral(e)?qe(Za(e),t):k.IsTemplateLiteral(t)?qe(e,Za(t)):fc("Invalid fallthrough for TemplateLiteral")}function mR(e,t){return k.IsArray(t)&&e.items!==void 0&&e.items.every(r=>qe(r,t.items)===j.True)}function dR(e,t){return k.IsNever(e)?j.True:k.IsUnknown(e)?j.False:k.IsAny(e)?j.Union:j.False}function hR(e,t){return Ut(t)?zt(e,t):k.IsObject(t)&&Op(t)||k.IsArray(t)&&mR(e,t)?j.True:k.IsTuple(t)?xr.IsUndefined(e.items)&&!xr.IsUndefined(t.items)||!xr.IsUndefined(e.items)&&xr.IsUndefined(t.items)?j.False:xr.IsUndefined(e.items)&&!xr.IsUndefined(t.items)||e.items.every((r,n)=>qe(r,t.items[n])===j.True)?j.True:j.False:j.False}function gR(e,t){return Ut(t)?zt(e,t):k.IsObject(t)?vr(e,t):k.IsRecord(t)?Nn(e,t):k.IsUint8Array(t)?j.True:j.False}function yR(e,t){return Ut(t)?zt(e,t):k.IsObject(t)?vr(e,t):k.IsRecord(t)?Nn(e,t):k.IsVoid(t)?wR(e,t):k.IsUndefined(t)?j.True:j.False}function Dy(e,t){return t.anyOf.some(r=>qe(e,r)===j.True)?j.True:j.False}function bR(e,t){return e.anyOf.every(r=>qe(r,t)===j.True)?j.True:j.False}function jS(e,t){return j.True}function xR(e,t){return k.IsNever(t)?$S(e,t):k.IsIntersect(t)?Cp(e,t):k.IsUnion(t)?Dy(e,t):k.IsAny(t)?$y(e,t):k.IsString(t)?VS(e,t):k.IsNumber(t)?DS(e,t):k.IsInteger(t)?FS(e,t):k.IsBoolean(t)?AS(e,t):k.IsArray(t)?LN(e,t):k.IsTuple(t)?dR(e,t):k.IsObject(t)?vr(e,t):k.IsUnknown(t)?j.True:j.False}function wR(e,t){return k.IsUndefined(e)||k.IsUndefined(e)?j.True:j.False}function SR(e,t){return k.IsIntersect(t)?Cp(e,t):k.IsUnion(t)?Dy(e,t):k.IsUnknown(t)?jS(e,t):k.IsAny(t)?$y(e,t):k.IsObject(t)?vr(e,t):k.IsVoid(t)?j.True:j.False}function qe(e,t){return k.IsTemplateLiteral(e)||k.IsTemplateLiteral(t)?pR(e,t):k.IsRegExp(e)||k.IsRegExp(t)?uR(e,t):k.IsNot(e)||k.IsNot(t)?ZN(e,t):k.IsAny(e)?DN(e,t):k.IsArray(e)?VN(e,t):k.IsBigInt(e)?UN(e,t):k.IsBoolean(e)?zN(e,t):k.IsAsyncIterator(e)?jN(e,t):k.IsConstructor(e)?BN(e,t):k.IsDate(e)?GN(e,t):k.IsFunction(e)?KN(e,t):k.IsInteger(e)?qN(e,t):k.IsIntersect(e)?HN(e,t):k.IsIterator(e)?YN(e,t):k.IsLiteral(e)?WN(e,t):k.IsNever(e)?XN(e,t):k.IsNull(e)?QN(e,t):k.IsNumber(e)?JN(e,t):k.IsObject(e)?aR(e,t):k.IsRecord(e)?cR(e,t):k.IsString(e)?fR(e,t):k.IsSymbol(e)?lR(e,t):k.IsTuple(e)?hR(e,t):k.IsPromise(e)?sR(e,t):k.IsUint8Array(e)?gR(e,t):k.IsUndefined(e)?yR(e,t):k.IsUnion(e)?bR(e,t):k.IsUnknown(e)?xR(e,t):k.IsVoid(e)?SR(e,t):fc(`Unknown left type operand '${e[V]}'`)}function ca(e,t){return qe(e,t)}function vR(e,t,r,n,o){let i={};for(let a of globalThis.Object.getOwnPropertyNames(e))i[a]=lc(e[a],t,r,n,ut(o));return i}function IR(e,t,r,n,o){return vR(e.properties,t,r,n,o)}function US(e,t,r,n,o){let i=IR(e,t,r,n,o);return Ne(i)}function _R(e,t,r,n){let o=ca(e,t);return o===j.Union?Fe([r,n]):o===j.True?r:n}function lc(e,t,r,n,o){return pt(e)?US(e,t,r,n,o):un(e)?L(zS(e,t,r,n,o)):L(_R(e,t,r,n),o)}function PR(e,t,r,n,o){return{[e]:lc(Oe(e),t,r,n,ut(o))}}function TR(e,t,r,n,o){return e.reduce((i,a)=>({...i,...PR(a,t,r,n,o)}),{})}function MR(e,t,r,n,o){return TR(e.keys,t,r,n,o)}function zS(e,t,r,n,o){let i=MR(e,t,r,n,o);return Ne(i)}function CR(e){return e.allOf.every(t=>Qa(t))}function OR(e){return e.anyOf.some(t=>Qa(t))}function kR(e){return!Qa(e.not)}function Qa(e){return e[V]==="Intersect"?CR(e):e[V]==="Union"?OR(e):e[V]==="Not"?kR(e):e[V]==="Undefined"}function BS(e,t){return pc(Za(e),t)}function NR(e,t){let r=e.filter(n=>ca(n,t)===j.False);return r.length===1?r[0]:Fe(r)}function pc(e,t,r={}){return fn(e)?L(BS(e,t),r):pt(e)?L(GS(e,t),r):L(ke(e)?NR(e.anyOf,t):ca(e,t)!==j.False?_e():e,r)}function RR(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=pc(e[n],t);return r}function ER(e,t){return RR(e.properties,t)}function GS(e,t){let r=ER(e,t);return Ne(r)}function KS(e,t){return mc(Za(e),t)}function AR(e,t){let r=e.filter(n=>ca(n,t)!==j.False);return r.length===1?r[0]:Fe(r)}function mc(e,t,r){return fn(e)?L(KS(e,t),r):pt(e)?L(qS(e,t),r):L(ke(e)?AR(e.anyOf,t):ca(e,t)!==j.False?e:_e(),r)}function FR(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=mc(e[n],t);return r}function $R(e,t){return FR(e.properties,t)}function qS(e,t){let r=$R(e,t);return Ne(r)}function HS(e,t){return Qn(e)?L(e.returns,t):_e(t)}function kp(e){return qr(wr(e))}function Ja(e,t,r){return L({[V]:"Record",type:"object",patternProperties:{[e]:t}},r)}function Ly(e,t,r){let n={};for(let o of e)n[o]=t;return $e(n,{...r,[Tn]:"Record"})}function DR(e,t,r){return gp(e)?Ly(Kr(e),t,r):Ja(e.pattern,t,r)}function LR(e,t,r){return Ly(Kr(Fe(e)),t,r)}function VR(e,t,r){return Ly([e.toString()],t,r)}function jR(e,t,r){return Ja(e.source,t,r)}function UR(e,t,r){let n=Nt(e.pattern)?oa:e.pattern;return Ja(n,t,r)}function zR(e,t,r){return Ja(oa,t,r)}function BR(e,t,r){return Ja(rS,t,r)}function GR(e,t,r){return $e({true:t,false:t},r)}function KR(e,t,r){return Ja(na,t,r)}function qR(e,t,r){return Ja(na,t,r)}function Np(e,t,r={}){return ke(e)?LR(e.anyOf,t,r):fn(e)?DR(e,t,r):cn(e)?VR(e.const,t,r):hi(e)?GR(e,t,r):eo(e)?KR(e,t,r):to(e)?qR(e,t,r):yy(e)?jR(e,t,r):gi(e)?UR(e,t,r):hy(e)?zR(e,t,r):ta(e)?BR(e,t,r):_e(r)}function Rp(e){return globalThis.Object.getOwnPropertyNames(e.patternProperties)[0]}function YS(e){let t=Rp(e);return t===oa?Rr():t===na?Mn():Rr({pattern:t})}function Ep(e){return e.patternProperties[Rp(e)]}function HR(e,t){return t.parameters=ef(e,t.parameters),t.returns=oo(e,t.returns),t}function YR(e,t){return t.parameters=ef(e,t.parameters),t.returns=oo(e,t.returns),t}function WR(e,t){return t.allOf=ef(e,t.allOf),t}function XR(e,t){return t.anyOf=ef(e,t.anyOf),t}function ZR(e,t){return Nt(t.items)||(t.items=ef(e,t.items)),t}function QR(e,t){return t.items=oo(e,t.items),t}function JR(e,t){return t.items=oo(e,t.items),t}function e8(e,t){return t.items=oo(e,t.items),t}function t8(e,t){return t.item=oo(e,t.item),t}function r8(e,t){let r=a8(e,t.properties);return{...t,...$e(r)}}function n8(e,t){let r=oo(e,YS(t)),n=oo(e,Ep(t)),o=Np(r,n);return{...t,...o}}function o8(e,t){return t.index in e?e[t.index]:no()}function i8(e,t){let r=Xs(t),n=Gr(t),o=oo(e,t);return r&&n?kp(o):r&&!n?qr(o):!r&&n?wr(o):o}function a8(e,t){return globalThis.Object.getOwnPropertyNames(t).reduce((r,n)=>({...r,[n]:i8(e,t[n])}),{})}function ef(e,t){return t.map(r=>oo(e,r))}function oo(e,t){return Qn(t)?HR(e,t):Jn(t)?YR(e,t):wt(t)?WR(e,t):ke(t)?XR(e,t):ln(t)?ZR(e,t):Xn(t)?QR(e,t):Ka(t)?JR(e,t):Ha(t)?e8(e,t):Ya(t)?t8(e,t):Rt(t)?r8(e,t):Wa(t)?n8(e,t):gy(t)?o8(e,t):t}function WS(e,t){return oo(t,Ys(e))}function XS(e){return L({[V]:"Integer",type:"integer"},e)}function s8(e,t,r){return{[e]:io(Oe(e),t,ut(r))}}function c8(e,t,r){return e.reduce((o,i)=>({...o,...s8(i,t,r)}),{})}function u8(e,t,r){return c8(e.keys,t,r)}function ZS(e,t,r){let n=u8(e,t,r);return Ne(n)}function f8(e){let[t,r]=[e.slice(0,1),e.slice(1)];return[t.toLowerCase(),r].join("")}function l8(e){let[t,r]=[e.slice(0,1),e.slice(1)];return[t.toUpperCase(),r].join("")}function p8(e){return e.toUpperCase()}function m8(e){return e.toLowerCase()}function d8(e,t,r){let n=nc(e.pattern);if(!Xa(n))return{...e,pattern:QS(e.pattern,t)};let a=[...Xu(n)].map(u=>Oe(u)),s=JS(a,t),c=Fe(s);return bp([c],r)}function QS(e,t){return typeof e=="string"?t==="Uncapitalize"?f8(e):t==="Capitalize"?l8(e):t==="Uppercase"?p8(e):t==="Lowercase"?m8(e):e:e.toString()}function JS(e,t){return e.map(r=>io(r,t))}function io(e,t,r={}){return un(e)?ZS(e,t,r):fn(e)?d8(e,t,r):ke(e)?Fe(JS(e.anyOf,t),r):cn(e)?Oe(QS(e.const,t),r):L(e,r)}function ev(e,t={}){return io(e,"Capitalize",t)}function tv(e,t={}){return io(e,"Lowercase",t)}function rv(e,t={}){return io(e,"Uncapitalize",t)}function nv(e,t={}){return io(e,"Uppercase",t)}function h8(e,t,r){let n={};for(let o of globalThis.Object.getOwnPropertyNames(e))n[o]=ua(e[o],t,ut(r));return n}function g8(e,t,r){return h8(e.properties,t,r)}function ov(e,t,r){let n=g8(e,t,r);return Ne(n)}function y8(e,t){return e.map(r=>Vy(r,t))}function b8(e,t){return e.map(r=>Vy(r,t))}function x8(e,t){let{[t]:r,...n}=e;return n}function w8(e,t){return t.reduce((r,n)=>x8(r,n),e)}function S8(e,t,r){let n=St(e,[gt,"$id","required","properties"]),o=w8(r,t);return $e(o,n)}function v8(e){let t=e.reduce((r,n)=>mp(n)?[...r,Oe(n)]:r,[]);return Fe(t)}function Vy(e,t){return wt(e)?Sr(y8(e.allOf,t)):ke(e)?Fe(b8(e.anyOf,t)):Rt(e)?S8(e,t,e.properties):$e({})}function ua(e,t,r){let n=kt(t)?v8(t):t,o=yt(t)?Kr(t):t,i=Pt(e),a=Pt(t);return pt(e)?ov(e,o,r):un(t)?iv(e,t,r):i&&a?at("Omit",[e,n],r):!i&&a?at("Omit",[e,n],r):i&&!a?at("Omit",[e,n],r):L({...Vy(e,o),...r})}function I8(e,t,r){return{[t]:ua(e,[t],ut(r))}}function _8(e,t,r){return t.reduce((n,o)=>({...n,...I8(e,o,r)}),{})}function P8(e,t,r){return _8(e,t.keys,r)}function iv(e,t,r){let n=P8(e,t,r);return Ne(n)}function T8(e,t,r){let n={};for(let o of globalThis.Object.getOwnPropertyNames(e))n[o]=fa(e[o],t,ut(r));return n}function M8(e,t,r){return T8(e.properties,t,r)}function av(e,t,r){let n=M8(e,t,r);return Ne(n)}function C8(e,t){return e.map(r=>jy(r,t))}function O8(e,t){return e.map(r=>jy(r,t))}function k8(e,t){let r={};for(let n of t)n in e&&(r[n]=e[n]);return r}function N8(e,t,r){let n=St(e,[gt,"$id","required","properties"]),o=k8(r,t);return $e(o,n)}function R8(e){let t=e.reduce((r,n)=>mp(n)?[...r,Oe(n)]:r,[]);return Fe(t)}function jy(e,t){return wt(e)?Sr(C8(e.allOf,t)):ke(e)?Fe(O8(e.anyOf,t)):Rt(e)?N8(e,t,e.properties):$e({})}function fa(e,t,r){let n=kt(t)?R8(t):t,o=yt(t)?Kr(t):t,i=Pt(e),a=Pt(t);return pt(e)?av(e,o,r):un(t)?sv(e,t,r):i&&a?at("Pick",[e,n],r):!i&&a?at("Pick",[e,n],r):i&&!a?at("Pick",[e,n],r):L({...jy(e,o),...r})}function E8(e,t,r){return{[t]:fa(e,[t],ut(r))}}function A8(e,t,r){return t.reduce((n,o)=>({...n,...E8(e,o,r)}),{})}function F8(e,t,r){return A8(e,t.keys,r)}function sv(e,t,r){let n=F8(e,t,r);return Ne(n)}function $8(e,t){return at("Partial",[at(e,t)])}function D8(e){return at("Partial",[Ao(e)])}function L8(e){let t={};for(let r of globalThis.Object.getOwnPropertyNames(e))t[r]=wr(e[r]);return t}function V8(e,t){let r=St(e,[gt,"$id","required","properties"]),n=L8(t);return $e(n,r)}function cv(e){return e.map(t=>uv(t))}function uv(e){return Zn(e)?$8(e.target,e.parameters):Pt(e)?D8(e.$ref):wt(e)?Sr(cv(e.allOf)):ke(e)?Fe(cv(e.anyOf)):Rt(e)?V8(e,e.properties):qa(e)||hi(e)||eo(e)||cn(e)||Bu(e)||to(e)||gi(e)||Gu(e)||yi(e)?e:$e({})}function dc(e,t){return pt(e)?fv(e,t):L({...uv(e),...t})}function j8(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=dc(e[n],ut(t));return r}function U8(e,t){return j8(e.properties,t)}function fv(e,t){let r=U8(e,t);return Ne(r)}function z8(e,t){return at("Required",[at(e,t)])}function B8(e){return at("Required",[Ao(e)])}function G8(e){let t={};for(let r of globalThis.Object.getOwnPropertyNames(e))t[r]=St(e[r],[pr]);return t}function K8(e,t){let r=St(e,[gt,"$id","required","properties"]),n=G8(t);return $e(n,r)}function lv(e){return e.map(t=>pv(t))}function pv(e){return Zn(e)?z8(e.target,e.parameters):Pt(e)?B8(e.$ref):wt(e)?Sr(lv(e.allOf)):ke(e)?Fe(lv(e.anyOf)):Rt(e)?K8(e,e.properties):qa(e)||hi(e)||eo(e)||cn(e)||Bu(e)||to(e)||gi(e)||Gu(e)||yi(e)?e:$e({})}function hc(e,t){return pt(e)?mv(e,t):L({...pv(e),...t})}function q8(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=hc(e[n],t);return r}function H8(e,t){return q8(e.properties,t)}function mv(e,t){let r=H8(e,t);return Ne(r)}function Y8(e,t){return t.map(r=>Pt(r)?Uy(e,r.$ref):pn(e,r))}function Uy(e,t){return t in e?Pt(e[t])?Uy(e,e[t].$ref):pn(e,e[t]):_e()}function W8(e){return sc(e[0])}function X8(e){return sa(e[0],e[1])}function Z8(e){return uc(e[0])}function Q8(e){return dc(e[0])}function J8(e){return ua(e[0],e[1])}function e3(e){return fa(e[0],e[1])}function t3(e){return hc(e[0])}function r3(e,t,r){let n=Y8(e,r);return t==="Awaited"?W8(n):t==="Index"?X8(n):t==="KeyOf"?Z8(n):t==="Partial"?Q8(n):t==="Omit"?J8(n):t==="Pick"?e3(n):t==="Required"?t3(n):_e()}function n3(e,t){return Js(pn(e,t))}function o3(e,t){return ec(pn(e,t))}function i3(e,t,r){return tc(tf(e,t),pn(e,r))}function a3(e,t,r){return Ro(tf(e,t),pn(e,r))}function s3(e,t){return Sr(tf(e,t))}function c3(e,t){return ac(pn(e,t))}function u3(e,t){return $e(globalThis.Object.keys(t).reduce((r,n)=>({...r,[n]:pn(e,t[n])}),{}))}function f3(e,t){let[r,n]=[pn(e,Ep(t)),Rp(t)],o=Ys(t);return o.patternProperties[n]=r,o}function l3(e,t){return Pt(t)?{...Uy(e,t.$ref),[gt]:t[gt]}:t}function p3(e,t){return Cn(tf(e,t))}function m3(e,t){return Fe(tf(e,t))}function tf(e,t){return t.map(r=>pn(e,r))}function pn(e,t){return Gr(t)?L(pn(e,St(t,[pr])),t):Xs(t)?L(pn(e,St(t,[Wn])),t):Ae(t)?L(l3(e,t),t):Xn(t)?L(n3(e,t.items),t):Ka(t)?L(o3(e,t.items),t):Zn(t)?L(r3(e,t.target,t.parameters)):Qn(t)?L(i3(e,t.parameters,t.returns),t):Jn(t)?L(a3(e,t.parameters,t.returns),t):wt(t)?L(s3(e,t.allOf),t):Ha(t)?L(c3(e,t.items),t):Rt(t)?L(u3(e,t.properties),t):Wa(t)?L(f3(e,t)):ln(t)?L(p3(e,t.items||[]),t):ke(t)?L(m3(e,t.anyOf),t):t}function d3(e,t){return t in e?pn(e,e[t]):_e()}function dv(e){return globalThis.Object.getOwnPropertyNames(e).reduce((t,r)=>({...t,[r]:d3(e,r)}),{})}var zy=class{constructor(t){let r=dv(t),n=this.WithIdentifiers(r);this.$defs=n}Import(t,r){let n={...this.$defs,[t]:L(this.$defs[t],r)};return L({[V]:"Import",$defs:n,$ref:t})}WithIdentifiers(t){return globalThis.Object.getOwnPropertyNames(t).reduce((r,n)=>({...r,[n]:{...t[n],$id:n}}),{})}};function hv(e){return new zy(e)}function gv(e,t){return L({[V]:"Not",not:e},t)}function yv(e,t){return Jn(e)?Cn(e.parameters,t):_e()}var h3=0;function bv(e,t={}){Nt(t.$id)&&(t.$id=`T${h3++}`);let r=Ys(e({[V]:"This",$ref:`${t.$id}`}));return r.$id=t.$id,L({[Tn]:"Recursive",...r},t)}function xv(e,t){let r=et(e)?new globalThis.RegExp(e):e;return L({[V]:"RegExp",type:"RegExp",source:r.source,flags:r.flags},t)}function g3(e){return wt(e)?e.allOf:ke(e)?e.anyOf:ln(e)?e.items??[]:[]}function wv(e){return g3(e)}function Sv(e,t){return Jn(e)?L(e.returns,t):_e(t)}var By=class{constructor(t){this.schema=t}Decode(t){return new Gy(this.schema,t)}},Gy=class{constructor(t,r){this.schema=t,this.decode=r}EncodeTransform(t,r){let i={Encode:a=>r[gt].Encode(t(a)),Decode:a=>this.decode(r[gt].Decode(a))};return{...r,[gt]:i}}EncodeSchema(t,r){let n={Decode:this.decode,Encode:t};return{...r,[gt]:n}}Encode(t){return Ae(this.schema)?this.EncodeTransform(t,this.schema):this.EncodeSchema(t,this.schema)}};function vv(e){return new By(e)}function Iv(e={}){return L({[V]:e[V]??"Unsafe"},e)}function _v(e){return L({[V]:"Void",type:"void"},e)}var Ky={};Ba(Ky,{Any:()=>aa,Argument:()=>sS,Array:()=>Js,AsyncIterator:()=>ec,Awaited:()=>sc,BigInt:()=>ic,Boolean:()=>yp,Capitalize:()=>ev,Composite:()=>TS,Const:()=>MS,Constructor:()=>tc,ConstructorParameters:()=>CS,Date:()=>vp,Enum:()=>OS,Exclude:()=>pc,Extends:()=>lc,Extract:()=>mc,Function:()=>Ro,Index:()=>sa,InstanceType:()=>HS,Instantiate:()=>WS,Integer:()=>XS,Intersect:()=>Sr,Iterator:()=>ac,KeyOf:()=>uc,Literal:()=>Oe,Lowercase:()=>tv,Mapped:()=>wS,Module:()=>hv,Never:()=>_e,Not:()=>gv,Null:()=>Ip,Number:()=>Mn,Object:()=>$e,Omit:()=>ua,Optional:()=>wr,Parameters:()=>yv,Partial:()=>dc,Pick:()=>fa,Promise:()=>wp,Readonly:()=>qr,ReadonlyOptional:()=>kp,Record:()=>Np,Recursive:()=>bv,Ref:()=>Ao,RegExp:()=>xv,Required:()=>hc,Rest:()=>wv,ReturnType:()=>Sv,String:()=>Rr,Symbol:()=>_p,TemplateLiteral:()=>bp,Transform:()=>vv,Tuple:()=>Cn,Uint8Array:()=>Tp,Uncapitalize:()=>rv,Undefined:()=>Pp,Union:()=>Fe,Unknown:()=>no,Unsafe:()=>Iv,Uppercase:()=>nv,Void:()=>_v});var d=Ky;var ao=d.Object({label:d.String(),domain:d.Optional(d.Tuple([d.Number(),d.Number()]))}),rf=d.Object({type:d.Union([d.Literal("identity"),d.Literal("horizontal"),d.Literal("vertical")]),value:d.Optional(d.Number())}),yee=d.Object({schemaVersion:d.Literal("1.0"),title:d.Optional(d.String()),xAxis:ao,yAxis:ao,references:d.Optional(d.Array(rf))});var y3=d.Object({model:d.String(),population:d.Optional(d.String()),horizon:d.Optional(d.Number()),predicted:d.Number({minimum:0,maximum:1}),observed:d.Number({minimum:0,maximum:1}),method:d.Union([d.Literal("discrete"),d.Literal("smooth")]),events:d.Optional(d.Number({minimum:0})),total:d.Optional(d.Number({minimum:0}))}),b3=d.Object({model:d.String(),population:d.Optional(d.String()),horizon:d.Optional(d.Number()),midpoint:d.Number({minimum:0,maximum:1}),count:d.Number({minimum:0}),binWidth:d.Number({exclusiveMinimum:0,maximum:1})}),qy=d.Object({schemaVersion:d.Literal("1.0"),type:d.Literal("calibration"),data:d.Array(y3),distribution:d.Optional(d.Array(b3)),x:d.Literal("predicted"),y:d.Literal("observed"),xAxis:ao,yAxis:ao,references:d.Optional(d.Array(rf))});var x3=d.Object({model:d.String(),population:d.Optional(d.String()),horizon:d.Optional(d.Number()),cutoff:d.Number(),sensitivity:d.Number({minimum:0,maximum:1}),specificity:d.Number({minimum:0,maximum:1})}),Hy=d.Object({schemaVersion:d.Literal("1.0"),type:d.Literal("roc"),data:d.Array(x3),x:d.Literal("false_positive_rate"),y:d.Literal("sensitivity"),xAxis:ao,yAxis:ao,references:d.Optional(d.Array(rf))});var w3=d.Union([Hy,qy],{$id:"https://rtichoke.dev/schema/viz/1.0.json",title:"rtichoke visualization specification"});var Er=d.Object({id:d.String(),model:d.Optional(d.String()),population:d.String(),label:d.Optional(d.String())}),Pv=d.Union([d.Literal("model"),d.Literal("population"),d.Literal("evaluation"),d.Literal("context")]),Tv=d.Object({label:d.String(),group:d.String(),role:Pv}),gc=d.Object({id:d.String(),evaluationId:d.String(),horizon:d.Optional(d.Number({minimum:0})),display:Tv}),S3=d.Object({x:d.Number(),y:d.Number()}),Yy=d.Union([d.Object({type:d.Literal("identity"),label:d.Optional(d.String())}),d.Object({type:d.Literal("horizontal"),value:d.Number(),label:d.Optional(d.String())}),d.Object({type:d.Literal("vertical"),value:d.Number(),label:d.Optional(d.String())}),d.Object({type:d.Literal("path"),points:d.Array(S3,{minItems:2}),label:d.Optional(d.String())})]),v3=d.Intersect([Yy,d.Object({scope:d.Literal("global")})]),I3=d.Intersect([Yy,d.Object({scope:d.Literal("population"),population:d.String()})]),_3=d.Intersect([Yy,d.Object({scope:d.Literal("population_horizon"),population:d.String(),horizon:d.Number({minimum:0})})]),Mv=d.Union([v3,I3,_3]),Wr=d.Object({schemaVersion:d.Literal("2.0"),title:d.Optional(d.String()),evaluations:d.Array(Er),series:d.Array(gc),xAxis:ao,yAxis:ao,references:d.Optional(d.Array(Mv))}),nf=d.Union([d.Literal("probability_threshold"),d.Literal("ppcr")]),wi=d.Object({operatingPoint:d.Optional(d.Object({dimension:nf}))}),Ap=d.Object({operatingPoint:d.Optional(d.Object({dimension:d.Literal("probability_threshold")}))});var Cv=d.Object({seriesId:d.String(),predicted:d.Number({minimum:0,maximum:1}),observed:d.Number({minimum:0,maximum:1}),method:d.Literal("discrete"),events:d.Optional(d.Number({minimum:0})),total:d.Optional(d.Number({minimum:0}))}),Ov=d.Object({seriesId:d.String(),predicted:d.Number({minimum:0,maximum:1}),observed:d.Number(),method:d.Literal("smooth"),events:d.Optional(d.Number({minimum:0})),total:d.Optional(d.Number({minimum:0}))}),kv=d.Union([Cv,Ov]),P3=d.Object({seriesId:d.String(),midpoint:d.Number({minimum:0,maximum:1}),count:d.Number({minimum:0}),binWidth:d.Number({exclusiveMinimum:0,maximum:1})}),Wy=d.Intersect([Wr,d.Object({type:d.Literal("calibration"),data:d.Array(kv),distribution:d.Optional(d.Array(P3)),x:d.Literal("predicted"),y:d.Literal("observed")})]);var Xy=d.Union([d.Literal("true_positives"),d.Literal("true_negatives"),d.Literal("false_positives"),d.Literal("false_negatives"),d.Literal("sensitivity"),d.Literal("specificity"),d.Literal("false_positive_rate"),d.Literal("ppv"),d.Literal("npv"),d.Literal("lift"),d.Literal("predicted_positives"),d.Literal("ppcr"),d.Literal("net_benefit"),d.Literal("net_benefit_interventions_avoided")]),Nv=d.Object({id:Xy,label:d.String()}),Ir=d.Object({metricId:Xy,estimate:d.Union([d.Number(),d.Null()]),lower:d.Optional(d.Union([d.Number(),d.Null()])),upper:d.Optional(d.Union([d.Number(),d.Null()]))}),Rv=d.Union([d.Object({type:d.Literal("probability_threshold"),value:d.Number()}),d.Object({type:d.Literal("ppcr"),value:d.Number({minimum:0,maximum:1})})]),Ev=d.Object({censoringHeuristic:d.Optional(d.String()),competingEventHeuristic:d.Optional(d.String())}),Av=d.Object({evaluationId:d.String(),horizon:d.Optional(d.Number({minimum:0})),operatingPoint:Rv,context:d.Optional(Ev),values:d.Array(Ir)}),Zy=d.Object({schemaVersion:d.Literal("2.0"),type:d.Literal("performance_table"),title:d.Optional(d.String()),evaluations:d.Array(Er),metrics:d.Array(Nv),rows:d.Array(Av)});var $v=d.Object({seriesId:d.String(),threshold:d.Number({minimum:0,maximum:1}),netBenefit:d.Number(),performance:d.Optional(d.Array(Ir))}),Dv=d.Intersect([Er,d.Object({id:d.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),Lv=d.Intersect([gc,d.Object({id:d.String({pattern:"^series-[1-9][0-9]*$"}),evaluationId:d.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),Vv=d.Object({type:d.Literal("horizontal"),value:d.Literal(0),label:d.Optional(d.String()),scope:d.Literal("global"),benchmark:d.Literal("treat_none")}),Fv={type:d.Literal("path"),points:d.Array(d.Object({x:d.Number(),y:d.Number()}),{minItems:2}),label:d.Optional(d.String()),benchmark:d.Literal("treat_all")},jv=d.Union([d.Object({...Fv,scope:d.Literal("population"),population:d.String()}),d.Object({...Fv,scope:d.Literal("population_horizon"),population:d.String(),horizon:d.Number({minimum:0})})]),Uv=d.Union([Vv,jv]),Qy=d.Intersect([Wr,Ap,d.Object({type:d.Literal("decision_curve"),evaluations:d.Array(Dv,{minItems:1}),series:d.Array(Lv,{minItems:1}),data:d.Array($v),x:d.Literal("threshold"),y:d.Literal("netBenefit"),references:d.Array(Uv,{minItems:2})})]);var T3=d.Object({seriesId:d.String(),cutoff:d.Number(),ppcr:d.Number({minimum:0,maximum:1}),sensitivity:d.Number({minimum:0,maximum:1}),performance:d.Optional(d.Array(Ir))}),Jy=d.Intersect([Wr,wi,d.Object({type:d.Literal("gains"),data:d.Array(T3),x:d.Literal("ppcr"),y:d.Literal("sensitivity")})]);var Bv=d.Object({seriesId:d.String(),threshold:d.Number({minimum:0,maximum:1}),interventionsAvoided:d.Number(),performance:d.Optional(d.Array(Ir))}),Gv=d.Intersect([Er,d.Object({id:d.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),Kv=d.Intersect([gc,d.Object({id:d.String({pattern:"^series-[1-9][0-9]*$"}),evaluationId:d.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),qv=d.Object({type:d.Literal("horizontal"),value:d.Literal(0),label:d.Optional(d.String()),scope:d.Literal("global"),benchmark:d.Literal("treat_all")}),zv={type:d.Literal("path"),points:d.Array(d.Object({x:d.Number(),y:d.Number()}),{minItems:2}),label:d.Optional(d.String()),benchmark:d.Literal("treat_none")},Hv=d.Union([d.Object({...zv,scope:d.Literal("population"),population:d.String()}),d.Object({...zv,scope:d.Literal("population_horizon"),population:d.String(),horizon:d.Number({minimum:0})})]),Yv=d.Union([qv,Hv]),eb=d.Intersect([Wr,Ap,d.Object({type:d.Literal("interventions_avoided"),evaluations:d.Array(Gv,{minItems:1}),series:d.Array(Kv,{minItems:1}),data:d.Array(Bv),x:d.Literal("threshold"),y:d.Literal("interventionsAvoided"),references:d.Array(Yv,{minItems:2})})]);var M3=d.Object({seriesId:d.String(),cutoff:d.Number(),ppcr:d.Number({minimum:0,maximum:1}),lift:d.Number(),performance:d.Optional(d.Array(Ir))}),tb=d.Intersect([Wr,wi,d.Object({type:d.Literal("lift"),data:d.Array(M3),x:d.Literal("ppcr"),y:d.Literal("lift")})]);var C3=d.Object({seriesId:d.String(),cutoff:d.Number(),ppcr:d.Optional(d.Number({minimum:0,maximum:1})),sensitivity:d.Number({minimum:0,maximum:1}),ppv:d.Number({minimum:0,maximum:1}),performance:d.Optional(d.Array(Ir))}),rb=d.Intersect([Wr,wi,d.Object({type:d.Literal("precision_recall"),data:d.Array(C3),x:d.Literal("sensitivity"),y:d.Literal("ppv")})]);var Wv=d.Object({stateId:d.String(),label:d.Optional(d.String()),estimate:d.Optional(d.Union([d.Number(),d.Null()])),mass:d.Optional(d.Union([d.Number(),d.Null()])),count:d.Optional(d.Union([d.Integer(),d.Null()])),lower:d.Optional(d.Union([d.Number(),d.Null()])),upper:d.Optional(d.Union([d.Number(),d.Null()]))}),Xv=d.Object({type:d.String(),lower:d.Optional(d.Union([d.Number(),d.Null()])),upper:d.Optional(d.Union([d.Number(),d.Null()])),includeLower:d.Optional(d.Boolean()),includeUpper:d.Optional(d.Boolean()),rankLower:d.Optional(d.Union([d.Number(),d.Null()])),rankUpper:d.Optional(d.Union([d.Number(),d.Null()])),operatingPointType:d.Optional(d.String()),cutoff:d.Optional(d.Union([d.Number(),d.Null()])),value:d.Optional(d.Union([d.Number(),d.Null()])),realizedPpcr:d.Optional(d.Union([d.Number(),d.Null()]))}),of=d.Object({evaluationId:d.String(),horizon:d.Optional(d.Union([d.Number(),d.Null()])),estimator:d.String(),estimateOrigin:d.Optional(d.Union([d.Literal("event_table"),d.Literal("fixed_time_horizon")])),stratum:d.Optional(Xv),region:d.Optional(d.String()),censoringHeuristic:d.Optional(d.String()),competingHeuristic:d.Optional(d.String()),states:d.Array(Wv,{minItems:1}),regimeId:d.Optional(d.String()),interventionId:d.Optional(d.String()),estimand:d.Optional(d.String()),contrastId:d.Optional(d.String())});var Zv=d.Object({evaluationId:d.String(),lower:d.Number({minimum:0,maximum:1}),upper:d.Number({minimum:0,maximum:1}),includeLower:d.Boolean(),includeUpper:d.Boolean(),nPositive:d.Integer({minimum:0}),nNegative:d.Integer({minimum:0})}),O3=d.Object({evaluationId:d.String(),rankLower:d.Number({minimum:0,maximum:1}),rankUpper:d.Number({minimum:0,maximum:1}),positiveMass:d.Number({minimum:0}),negativeMass:d.Number({minimum:0})}),Qv=d.Object({evaluationId:d.String(),type:nf,value:d.Number({minimum:0,maximum:1}),cutoff:d.Number({minimum:0,maximum:1}),realizedPpcr:d.Number({minimum:0,maximum:1}),performance:d.Optional(d.Array(Ir))}),af=d.Object({schemaVersion:d.Literal("2.0"),type:d.Literal("prediction_distribution"),title:d.Optional(d.String()),evaluations:d.Array(Er,{minItems:1}),operatingPoint:d.Optional(d.Object({dimension:nf})),bins:d.Array(Zv,{minItems:1}),rankBins:d.Optional(d.Array(O3)),operatingPoints:d.Array(Qv,{minItems:1}),stateDistributions:d.Optional(d.Array(of))});var k3=d.Object({seriesId:d.String(),cutoff:d.Number(),ppcr:d.Optional(d.Number({minimum:0,maximum:1})),sensitivity:d.Number({minimum:0,maximum:1}),specificity:d.Number({minimum:0,maximum:1}),performance:d.Optional(d.Array(Ir))}),nb=d.Intersect([Wr,wi,d.Object({type:d.Literal("roc"),data:d.Array(k3),x:d.Literal("false_positive_rate"),y:d.Literal("sensitivity")})]);var ob=d.Union([nb,Wy,rb,Jy,tb,Qy,eb,af],{$id:"https://rtichoke.dev/schema/viz/2.0.json",title:"rtichoke visualization specification v2"});var ib=d.Object({id:d.String(),label:d.String()}),ab=d.Object({metric:d.Literal("auroc"),owner:d.Object({type:d.Literal("evaluation"),evaluationId:d.String()}),estimate:d.Union([d.Number(),d.Null()])}),sb=d.Object({metric:d.Literal("prevalence"),owner:d.Object({type:d.Literal("population"),populationId:d.String()}),estimate:d.Union([d.Number(),d.Null()])}),N3=d.Object({metric:d.Literal("event_risk"),owner:d.Object({type:d.Literal("population"),populationId:d.String()}),horizon:d.Number({minimum:0}),estimate:d.Union([d.Number(),d.Null()])}),R3=d.Union([ab,sb]),Jv=d.Union([ab,sb,N3]),E3=Jv,A3=d.Object({schemaVersion:d.Literal("1.0"),type:d.Literal("summary_metrics"),title:d.Optional(d.String()),evaluations:d.Array(Er),populations:d.Array(ib),metrics:d.Array(R3)}),F3=d.Object({schemaVersion:d.Literal("1.1"),type:d.Literal("summary_metrics"),title:d.Optional(d.String()),evaluations:d.Array(Er),populations:d.Array(ib),metrics:d.Array(Jv)}),cb=d.Union([A3,F3],{$id:"https://rtichoke.dev/schema/viz/summary-metrics.json",title:"rtichoke summary metrics specification"});var ub=d.Object({schemaVersion:d.Literal("2.0"),type:d.Literal("outcome_distribution"),title:d.Optional(d.String()),evaluations:d.Array(Er,{minItems:1}),stateDistributions:d.Array(of,{minItems:1})});var fb=d.Union([ob,Zy,cb,af,ub]),eI=d.Object({id:d.String(),title:d.Optional(d.String()),spec:fb}),Fp=d.Object({schemaVersion:d.Literal("1.0"),type:d.Literal("report"),title:d.Optional(d.String()),components:d.Array(eI,{minItems:1})}),lb=d.Object({type:d.Literal("component"),id:d.String(),title:d.Optional(d.String()),spec:fb}),tI=d.Object({type:d.Literal("group"),id:d.String(),title:d.String(),components:d.Array(lb,{minItems:1})}),rI=d.Object({id:d.String(),title:d.String(),items:d.Array(d.Union([lb,tI]),{minItems:1})}),$p=d.Object({schemaVersion:d.Literal("1.1"),type:d.Literal("report"),title:d.Optional(d.String()),sections:d.Array(rI,{minItems:1})}),$3=d.Union([Fp,$p],{$id:"https://rtichoke.dev/schema/viz/report.json",title:"rtichoke report specification"});function Dp(e){let t=new Set,r=i=>{if(t.has(i.id))throw new Error(`duplicate component id: ${i.id}`);t.add(i.id)};if(e.schemaVersion==="1.0"){for(let i of e.components)r(i);return}let n=new Set,o=new Set;for(let i of e.sections){if(n.has(i.id))throw new Error(`duplicate section id: ${i.id}`);n.add(i.id);for(let a of i.items){if(a.type==="component"){r(a);continue}if(o.has(a.id))throw new Error(`duplicate group id: ${a.id}`);o.add(a.id);for(let s of a.components)r(s)}}}function pb(e){let t=new Set;for(let n of e.evaluations){if(t.has(n.id))throw new Error(`duplicate evaluation id: ${n.id}`);t.add(n.id)}let r=new Set;for(let n of e.metrics){if(r.has(n.id))throw new Error(`duplicate metric id: ${n.id}`);r.add(n.id)}for(let n of e.rows){if(!t.has(n.evaluationId))throw new Error(`unknown evaluation id: ${n.evaluationId}`);for(let o of n.values)if(!r.has(o.metricId))throw new Error(`unknown metric id: ${o.metricId}`)}}function Lp(e,t){if(t&&!t.has(e.evaluationId))throw new Error(`unknown evaluation id: ${e.evaluationId}`);if(e.horizon!==void 0&&e.horizon!==null&&(!Number.isFinite(e.horizon)||e.horizon<0))throw new Error(`horizon must be finite and non-negative for evaluation ${e.evaluationId}`);if(e.estimateOrigin!==void 0&&e.estimateOrigin!==null&&e.estimateOrigin!=="event_table"&&e.estimateOrigin!=="fixed_time_horizon")throw new Error(`invalid estimateOrigin '${e.estimateOrigin}' for evaluation ${e.evaluationId}`);if(!e.states||e.states.length===0)throw new Error(`states must be non-empty for evaluation ${e.evaluationId}`);for(let r of e.states){if(r.estimate!==void 0&&r.estimate!==null&&(!Number.isFinite(r.estimate)||r.estimate<0||r.estimate>1))throw new Error(`estimate must be a finite probability in [0, 1] for state ${r.stateId}`);if(r.lower!==void 0&&r.lower!==null&&(!Number.isFinite(r.lower)||r.lower<0||r.lower>1))throw new Error(`lower bound must be a finite probability in [0, 1] for state ${r.stateId}`);if(r.upper!==void 0&&r.upper!==null&&(!Number.isFinite(r.upper)||r.upper<0||r.upper>1))throw new Error(`upper bound must be a finite probability in [0, 1] for state ${r.stateId}`);if(r.lower!==void 0&&r.lower!==null&&r.upper!==void 0&&r.upper!==null&&r.lower>r.upper)throw new Error(`lower bound ${r.lower} cannot exceed upper bound ${r.upper} for state ${r.stateId}`);if(r.mass!==void 0&&r.mass!==null&&(!Number.isFinite(r.mass)||r.mass<0))throw new Error(`mass must be finite and non-negative for state ${r.stateId}`);if(r.count!==void 0&&r.count!==null&&(!Number.isInteger(r.count)||r.count<0))throw new Error(`count must be a non-negative integer for state ${r.stateId}`)}if(e.stratum){let r=e.stratum;if(r.lower!==void 0&&r.lower!==null&&r.upper!==void 0&&r.upper!==null&&r.lower>r.upper)throw new Error(`stratum lower bound ${r.lower} cannot exceed upper bound ${r.upper} for evaluation ${e.evaluationId}`);if(r.rankLower!==void 0&&r.rankLower!==null&&r.rankUpper!==void 0&&r.rankUpper!==null&&r.rankLower>r.rankUpper)throw new Error(`stratum rankLower ${r.rankLower} cannot exceed rankUpper ${r.rankUpper} for evaluation ${e.evaluationId}`)}}function mb(e){let t=new Set;for(let r of e.evaluations){if(t.has(r.id))throw new Error(`duplicate evaluation id: ${r.id}`);t.add(r.id)}if(!e.stateDistributions||e.stateDistributions.length===0)throw new Error("stateDistributions must be non-empty");for(let r of e.stateDistributions)Lp(r,t)}function sf(e){if(e.operatingPoint?.dimension){let i=e.operatingPoint.dimension;if(!e.operatingPoints.some(s=>s.type===i))throw new Error(`configured operatingPoint dimension ${i} is not present in operatingPoints`)}let t=new Set;for(let i of e.evaluations){if(t.has(i.id))throw new Error(`duplicate evaluation id: ${i.id}`);t.add(i.id)}if(e.stateDistributions)for(let i of e.stateDistributions)Lp(i,t);let r=new Map;for(let i of e.bins){if(!t.has(i.evaluationId))throw new Error(`unknown evaluation id: ${i.evaluationId}`);let a=r.get(i.evaluationId);a||(a=[],r.set(i.evaluationId,a)),a.push(i)}let n=new Map,o=new Set;for(let i of e.operatingPoints){if(!t.has(i.evaluationId))throw new Error(`unknown evaluation id: ${i.evaluationId}`);let a=`${i.evaluationId}\0${i.type}\0${i.value}`;if(o.has(a))throw new Error(`duplicate operating point: evaluationId=${i.evaluationId}, type=${i.type}, value=${i.value}`);if(o.add(a),!Number.isFinite(i.value)||i.value<0||i.value>1||!Number.isFinite(i.cutoff)||i.cutoff<0||i.cutoff>1||!Number.isFinite(i.realizedPpcr)||i.realizedPpcr<0||i.realizedPpcr>1)throw new Error(`invalid operating point bounds for evaluation ${i.evaluationId}`);if(i.type==="probability_threshold"&&Math.abs(i.value-i.cutoff)>1e-9)throw new Error(`probability_threshold value ${i.value} must equal cutoff ${i.cutoff} for evaluation ${i.evaluationId}`);let s=n.get(i.evaluationId);s||(s=[],n.set(i.evaluationId,s)),s.push(i)}for(let i of t){let a=r.get(i);if(!a||a.length===0)throw new Error(`evaluation ${i} has no bins`);let s=n.get(i);if(!s||s.length===0)throw new Error(`evaluation ${i} has no operating points`);let c=a[0];if(c.lower!==0||c.upper!==0||c.includeLower!==!0||c.includeUpper!==!0)throw new Error(`first bin for evaluation ${i} must be [0, 0]`);let u=new Set([0]),f=c.nPositive+c.nNegative;if(!Number.isInteger(c.nPositive)||c.nPositive<0||!Number.isInteger(c.nNegative)||c.nNegative<0)throw new Error(`invalid bin counts for evaluation ${i}`);for(let p=1;p1||!Number.isFinite(l.upper)||l.upper<0||l.upper>1)throw new Error(`invalid bin bounds for evaluation ${i}`);if(!Number.isInteger(l.nPositive)||l.nPositive<0||!Number.isInteger(l.nNegative)||l.nNegative<0)throw new Error(`invalid bin counts for evaluation ${i}`);if(l.includeLower!==!1||l.includeUpper!==!0)throw new Error(`bin ${p} for evaluation ${i} must be (lower, upper]`);if(l.lower>=l.upper)throw new Error(`bin ${p} for evaluation ${i} must be nondegenerate`);if(l.lower!==a[p-1].upper)throw new Error(`bins for evaluation ${i} must be contiguous and ascending`);u.add(l.upper),f+=l.nPositive+l.nNegative}if(a[a.length-1].upper!==1)throw new Error(`final bin upper bound for evaluation ${i} must be 1`);if(f<=0)throw new Error(`total count for evaluation ${i} must be positive`);for(let p of s)if(p.type==="probability_threshold"){if(p.cutoff!==0&&!u.has(p.cutoff))throw new Error(`operating point cutoff ${p.cutoff} for evaluation ${i} does not match any bin upper boundary`);let l=0;if(p.cutoff===0)l=f;else for(let h of a)h.upper>p.cutoff&&(l+=h.nPositive+h.nNegative);let m=l/f;if(Math.abs(p.realizedPpcr-m)>1e-6)throw new Error(`operating point realizedPpcr ${p.realizedPpcr} for evaluation ${i} does not match reconstructed count fraction ${m}`)}}}function db(e){let t=new Set;for(let o of e.evaluations){if(t.has(o.id))throw new Error(`duplicate evaluation id: ${o.id}`);t.add(o.id)}let r=new Set;for(let o of e.populations){if(r.has(o.id))throw new Error(`duplicate population id: ${o.id}`);r.add(o.id)}let n=new Set;for(let o of e.metrics){if(o.estimate!==null&&!Number.isFinite(o.estimate))throw new Error(`non-finite metric estimate: ${o.estimate}`);if("horizon"in o&&o.horizon!==void 0&&(!Number.isFinite(o.horizon)||o.horizon<0))throw new Error(`invalid horizon: ${o.horizon}`);if(o.metric==="auroc"){if("horizon"in o&&o.horizon!==void 0)throw new Error("auroc metric cannot specify horizon");if(!t.has(o.owner.evaluationId))throw new Error(`unknown evaluation id: ${o.owner.evaluationId}`);let i=`auroc:${o.owner.evaluationId}`;if(n.has(i))throw new Error(`duplicate metric ownership: auroc for evaluation ${o.owner.evaluationId}`);n.add(i)}else if(o.metric==="prevalence"){if("horizon"in o&&o.horizon!==void 0)throw new Error("prevalence metric cannot specify horizon");if(!r.has(o.owner.populationId))throw new Error(`unknown population id: ${o.owner.populationId}`);let i=`prevalence:${o.owner.populationId}`;if(n.has(i))throw new Error(`duplicate metric ownership: prevalence for population ${o.owner.populationId}`);n.add(i)}else if(o.metric==="event_risk"){if(e.schemaVersion!=="1.1")throw new Error(`event_risk metric requires schemaVersion 1.1, got ${e.schemaVersion}`);if(!("horizon"in o)||o.horizon===void 0)throw new Error("event_risk metric requires horizon");if(!r.has(o.owner.populationId))throw new Error(`unknown population id: ${o.owner.populationId}`);let i=`event_risk:${o.owner.populationId}:${o.horizon}`;if(n.has(i))throw new Error(`duplicate metric ownership: event_risk for population ${o.owner.populationId} at horizon ${o.horizon}`);n.add(i)}}}function Si(e){if(e.type==="prediction_distribution"){sf(e);return}let t=new Set(e.evaluations.map(o=>o.id)),r=new Set;if(t.size!==e.evaluations.length)throw new Error("duplicate evaluation id");for(let o of e.series){if(r.has(o.id))throw new Error(`duplicate series id: ${o.id}`);if(r.add(o.id),!t.has(o.evaluationId))throw new Error(`unknown evaluation id: ${o.evaluationId}`)}for(let o of e.data)if(!r.has(o.seriesId))throw new Error(`unknown series id: ${o.seriesId}`);if(e.type==="calibration"){for(let o of e.distribution??[])if(!r.has(o.seriesId))throw new Error(`unknown distribution series id: ${o.seriesId}`)}let n=new Set(e.evaluations.map(o=>o.population));for(let o of e.references??[])if((o.scope==="population"||o.scope==="population_horizon")&&!n.has(o.population))throw new Error(`unknown reference population: ${o.population}`);if(e.type==="decision_curve"){let o=e,i=o.references;o.evaluations.forEach((h,b)=>{let y=`evaluation-${b+1}`;if(h.id!==y)throw new Error(`decision curve evaluation ids must be ordinal: expected ${y}`)});let a=o.series.filter(h=>h.horizon!==void 0).length;if(a!==0&&a!==o.series.length)throw new Error("decision curve cannot mix static and horizon-qualified series");let s=a>0,c=[...new Set(o.series.map(h=>h.horizon).filter(h=>h!==void 0))],u=new Set;if(o.series.forEach((h,b)=>{if(h.id!==`series-${b+1}`)throw new Error(`decision curve series ids must be ordinal: expected series-${b+1}`);let y=o.evaluations.find(w=>w.id===h.evaluationId),x=y.model??y.population,g=y.model===void 0?"population":"model";if(h.display.label!==x||h.display.group!==x||h.display.role!==g)throw new Error("decision curve display must follow evaluation semantics");let S=`${h.evaluationId}\0${h.horizon??"static"}`;if(u.has(S))throw new Error(`duplicate decision curve evaluation-horizon series: ${h.evaluationId}`);u.add(S)}),s){if(!o.evaluations.every(b=>c.every(y=>u.has(`${b.id}\0${y}`)))||o.series.length!==o.evaluations.length*c.length)throw new Error("decision curve requires exactly one series per evaluation and horizon")}else if(o.series.length!==o.evaluations.length||o.evaluations.some(h=>!u.has(`${h.id}\0static`)))throw new Error("decision curve requires exactly one series per evaluation");if(i.filter(h=>"benchmark"in h&&h.benchmark==="treat_none").length!==1)throw new Error("decision curve requires exactly one Treat None reference");let p=i.filter(h=>"benchmark"in h&&h.benchmark==="treat_all"),l=new Set;for(let h of p){if(s&&h.scope!=="population_horizon")throw new Error("time-dependent decision curve Treat All must use population_horizon scope");if(!s&&h.scope!=="population")throw new Error("static decision curve Treat All must use population scope");let b=h.scope==="population_horizon"?`${h.population}\0${h.horizon}`:h.population;if(l.has(b))throw new Error(`duplicate Treat All owner: ${h.population}`);l.add(b)}let m=s?[...n].flatMap(h=>c.map(b=>`${h}\0${b}`)):[...n];if(l.size!==m.length||m.some(h=>!l.has(h)))throw new Error(s?"decision curve requires exactly one Treat All reference per population and horizon":"decision curve requires exactly one Treat All reference per population")}if(e.type==="interventions_avoided"){let o=e,i=o.references;o.evaluations.forEach((h,b)=>{let y=`evaluation-${b+1}`;if(h.id!==y)throw new Error(`interventions avoided evaluation ids must be ordinal: expected ${y}`)});let a=o.series.filter(h=>h.horizon!==void 0).length;if(a!==0&&a!==o.series.length)throw new Error("interventions avoided cannot mix static and horizon-qualified series");let s=a>0,c=[...new Set(o.series.map(h=>h.horizon).filter(h=>h!==void 0))],u=new Set;if(o.series.forEach((h,b)=>{if(h.id!==`series-${b+1}`)throw new Error(`interventions avoided series ids must be ordinal: expected series-${b+1}`);let y=o.evaluations.find(w=>w.id===h.evaluationId);if(!y)throw new Error(`unknown evaluation id: ${h.evaluationId}`);let x=y.model??y.population,g=y.model===void 0?"population":"model";if(h.display.label!==x||h.display.group!==x||h.display.role!==g)throw new Error("interventions avoided display must follow evaluation semantics");let S=`${h.evaluationId}\0${h.horizon??"static"}`;if(u.has(S))throw new Error(`duplicate interventions avoided evaluation-horizon series: ${h.evaluationId}`);u.add(S)}),s){if(!o.evaluations.every(b=>c.every(y=>u.has(`${b.id}\0${y}`)))||o.series.length!==o.evaluations.length*c.length)throw new Error("interventions avoided requires exactly one series per evaluation and horizon")}else if(o.series.length!==o.evaluations.length||o.evaluations.some(h=>!u.has(`${h.id}\0static`)))throw new Error("interventions avoided requires exactly one series per evaluation");let f=i.filter(h=>"benchmark"in h&&h.benchmark==="treat_all");if(f.length!==1)throw new Error("interventions avoided requires exactly one Treat All reference");if(f[0].scope!=="global"||f[0].type!=="horizontal"||f[0].value!==0)throw new Error("interventions avoided Treat All must be the global zero reference");let p=i.filter(h=>"benchmark"in h&&h.benchmark==="treat_none"),l=new Set;for(let h of p){if(s&&h.scope!=="population_horizon")throw new Error("time-dependent interventions avoided Treat None must use population_horizon scope");if(!s&&h.scope!=="population")throw new Error("static interventions avoided Treat None must use population scope");let b=h.scope==="population_horizon"?`${h.population}\0${h.horizon}`:h.population;if(l.has(b))throw new Error(`duplicate Treat None owner: ${h.population}`);l.add(b)}let m=s?[...n].flatMap(h=>c.map(b=>`${h}\0${b}`)):[...n];if(l.size!==m.length||m.some(h=>!l.has(h)))throw new Error(s?"interventions avoided requires exactly one Treat None reference per population and horizon":"interventions avoided requires exactly one Treat None reference per population")}}function nI(e){return{schemaVersion:"1.0",type:"roc",data:e,x:"false_positive_rate",y:"sensitivity",xAxis:{label:"1 - Specificity",domain:[0,1]},yAxis:{label:"Sensitivity",domain:[0,1]},references:[{type:"identity"}]}}function D3(e){return nI(e.map(t=>({model:t.model,cutoff:t.probability_threshold,sensitivity:t.sensitivity,specificity:t.specificity})))}function L3(e){return nI(e.map(t=>({model:t.reference_group,cutoff:t.chosen_cutoff,sensitivity:t.sensitivity,specificity:t.specificity})))}function V3(e,t,r){let n=e.map(i=>{let a=i.sum_reals??i.n_reals,s=i.total_obs??i.n;return{model:i.reference_group,predicted:i.x,observed:i.y,method:t,...t==="discrete"&&a!==void 0?{events:a}:{},...t==="discrete"&&s!==void 0?{total:s}:{}}}),o=r?.map(i=>({model:i.reference_group,midpoint:i.mids,count:i.counts,binWidth:.01}));return{schemaVersion:"1.0",type:"calibration",data:n,...o?{distribution:o}:{},x:"predicted",y:"observed",xAxis:{label:"Predicted probability",domain:[0,1]},yAxis:{label:"Observed probability",domain:[0,1]},references:[{type:"identity"}]}}function j3(e,t){let r=t.role==="model"?t.population??"population":e,n=`evaluation:${e}`;return{evaluation:{id:n,...t.role==="model"?{model:e}:{},population:r,label:e},series:{id:`series:${e}`,evaluationId:n,display:{label:e,group:e,role:t.role}}}}function hb(e,t){return[...new Set(e)].map(n=>j3(n,t))}function U3(e,t="population"){let r=hb(e.map(n=>n.model),{role:"model",population:t});return{schemaVersion:"2.0",type:"roc",evaluations:r.map(n=>n.evaluation),series:r.map(n=>n.series),data:e.map(n=>({seriesId:`series:${n.model}`,cutoff:n.probability_threshold,sensitivity:n.sensitivity,specificity:n.specificity})),x:"false_positive_rate",y:"sensitivity",xAxis:{label:"1 - Specificity",domain:[0,1]},yAxis:{label:"Sensitivity",domain:[0,1]},references:[{type:"identity",scope:"global",label:"Random Guess"}]}}function z3(e,t){let r=hb(e.map(n=>n.reference_group),t);return{schemaVersion:"2.0",type:"roc",evaluations:r.map(n=>n.evaluation),series:r.map(n=>n.series),data:e.map(n=>({seriesId:`series:${n.reference_group}`,cutoff:n.chosen_cutoff,sensitivity:n.sensitivity,specificity:n.specificity})),x:"false_positive_rate",y:"sensitivity",xAxis:{label:"1 - Specificity",domain:[0,1]},yAxis:{label:"Sensitivity",domain:[0,1]},references:[{type:"identity",scope:"global",label:"Random Guess"}]}}function B3(e,t,r,n){let o=hb(e.map(c=>c.reference_group),r),i=e.map(c=>c.y).filter(Number.isFinite),a=Math.min(0,...i),s=Math.max(1,...i);return{schemaVersion:"2.0",type:"calibration",evaluations:o.map(c=>c.evaluation),series:o.map(c=>c.series),data:e.map(c=>{let u=c.sum_reals??c.n_reals,f=c.total_obs??c.n;return{seriesId:`series:${c.reference_group}`,predicted:c.x,observed:c.y,method:t,...t==="discrete"&&u!==void 0?{events:u}:{},...t==="discrete"&&f!==void 0?{total:f}:{}}}),...n?{distribution:n.map(c=>({seriesId:`series:${c.reference_group}`,midpoint:c.mids,count:c.counts,binWidth:.01}))}:{},x:"predicted",y:"observed",xAxis:{label:"Predicted probability",domain:[0,1]},yAxis:{label:"Observed probability",domain:[a,s]},references:[{type:"identity",scope:"global",label:"Perfectly Calibrated"}]}}function vt(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function Rn(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function vi(e){let t,r,n;e.length!==2?(t=vt,r=(s,c)=>vt(e(s),c),n=(s,c)=>e(s)-c):(t=e===vt||e===Rn?e:G3,r=e,n=e);function o(s,c,u=0,f=s.length){if(u>>1;r(s[p],c)<0?u=p+1:f=p}while(u>>1;r(s[p],c)<=0?u=p+1:f=p}while(uu&&n(s[p-1],c)>-n(s[p],c)?p-1:p}return{left:o,center:a,right:i}}function G3(){return 0}function cf(e){return e===null?NaN:+e}function*oI(e,t){if(t===void 0)for(let r of e)r!=null&&(r=+r)>=r&&(yield r);else{let r=-1;for(let n of e)(n=t(n,++r,e))!=null&&(n=+n)>=n&&(yield n)}}var iI=vi(vt),aI=iI.right,K3=iI.left,q3=vi(cf).center,Ii=aI;function es(e,t){let r=0;if(t===void 0)for(let n of e)n!=null&&(n=+n)>=n&&++r;else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(o=+o)>=o&&++r}return r}function H3(e){return e.length|0}function Y3(e){return!(e>0)}function W3(e){return typeof e!="object"||"length"in e?e:Array.from(e)}function X3(e){return t=>e(...t)}function Vp(...e){let t=typeof e[e.length-1]=="function"&&X3(e.pop());e=e.map(W3);let r=e.map(H3),n=e.length-1,o=new Array(n+1).fill(0),i=[];if(n<0||r.some(Y3))return i;for(;;){i.push(o.map((s,c)=>e[c][s]));let a=n;for(;++o[a]===r[a];){if(a===0)return t?i.map(t):i;o[a--]=0}}}function jp(e,t){var r=0,n=0;return Float64Array.from(e,t===void 0?o=>r+=+o||0:o=>r+=+t(o,n++,e)||0)}function yc(e,t){let r=0,n,o=0,i=0;if(t===void 0)for(let a of e)a!=null&&(a=+a)>=a&&(n=a-o,o+=n/++r,i+=n*(a-o));else{let a=-1;for(let s of e)(s=t(s,++a,e))!=null&&(s=+s)>=s&&(n=s-o,o+=n/++r,i+=n*(s-o))}if(r>1)return i/(r-1)}function bc(e,t){let r=yc(e,t);return r&&Math.sqrt(r)}function Yt(e,t){let r,n;if(t===void 0)for(let o of e)o!=null&&(r===void 0?o>=o&&(r=n=o):(r>o&&(r=o),n=i&&(r=n=i):(r>i&&(r=i),n0){for(a=t[--r];r>0&&(n=a,o=t[--r],a=n+o,i=o-(a-n),!i););r>0&&(i<0&&t[r-1]<0||i>0&&t[r-1]>0)&&(o=i*2,n=a+o,o==n-a&&(a=n))}return a}};var Ar=class extends Map{constructor(t,r=uI){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let[n,o]of t)this.set(n,o)}get(t){return super.get(gb(this,t))}has(t){return super.has(gb(this,t))}set(t,r){return super.set(sI(this,t),r)}delete(t){return super.delete(cI(this,t))}},so=class extends Set{constructor(t,r=uI){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let n of t)this.add(n)}has(t){return super.has(gb(this,t))}add(t){return super.add(sI(this,t))}delete(t){return super.delete(cI(this,t))}};function gb({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function sI({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function cI({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function uI(e){return e!==null&&typeof e=="object"?e.valueOf():e}function uf(e){return e}function Fo(e,...t){return bb(e,uf,uf,t)}function co(e,t,...r){return bb(e,uf,t,r)}function yb(e,t,...r){return bb(e,Array.from,t,r)}function bb(e,t,r,n){return(function o(i,a){if(a>=n.length)return r(i);let s=new Ar,c=n[a++],u=-1;for(let f of i){let p=c(f,++u,i),l=s.get(p);l?l.push(f):s.set(p,[f])}for(let[f,p]of s)s.set(f,o(p,a));return t(s)})(e,0)}function xb(e,t){return Array.from(t,r=>e[r])}function _i(e,...t){if(typeof e[Symbol.iterator]!="function")throw new TypeError("values is not iterable");e=Array.from(e);let[r]=t;if(r&&r.length!==2||t.length>1){let n=Uint32Array.from(e,(o,i)=>i);return t.length>1?(t=t.map(o=>e.map(o)),n.sort((o,i)=>{for(let a of t){let s=ff(a[o],a[i]);if(s)return s}})):(r=e.map(r),n.sort((o,i)=>ff(r[o],r[i]))),xb(e,n)}return e.sort(wb(r))}function wb(e=vt){if(e===vt)return ff;if(typeof e!="function")throw new TypeError("compare is not a function");return(t,r)=>{let n=e(t,r);return n||n===0?n:(e(r,r)===0)-(e(t,t)===0)}}function ff(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}function xc(e,t,r){return(t.length!==2?_i(co(e,t,r),(([n,o],[i,a])=>vt(o,a)||vt(n,i))):_i(Fo(e,r),(([n,o],[i,a])=>t(o,a)||vt(n,i)))).map(([n])=>n)}var Z3=Math.sqrt(50),Q3=Math.sqrt(10),J3=Math.sqrt(2);function Up(e,t,r){let n=(t-e)/Math.max(0,r),o=Math.floor(Math.log10(n)),i=n/Math.pow(10,o),a=i>=Z3?10:i>=Q3?5:i>=J3?2:1,s,c,u;return o<0?(u=Math.pow(10,-o)/a,s=Math.round(e*u),c=Math.round(t*u),s/ut&&--c,u=-u):(u=Math.pow(10,o)*a,s=Math.round(e/u),c=Math.round(t/u),s*ut&&--c),c0))return[];if(e===t)return[e];let n=t=o))return[];let s=i-o+1,c=new Array(s);if(n)if(a<0)for(let u=0;u=n)&&(r=n);else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(r=o)&&(r=o)}return r}function Bp(e,t){let r,n=-1,o=-1;if(t===void 0)for(let i of e)++o,i!=null&&(r=i)&&(r=i,n=o);else for(let i of e)(i=t(i,++o,e))!=null&&(r=i)&&(r=i,n=o);return n}function Fr(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(r>o||r===void 0&&o>=o)&&(r=o)}return r}function Gp(e,t){let r,n=-1,o=-1;if(t===void 0)for(let i of e)++o,i!=null&&(r>i||r===void 0&&i>=i)&&(r=i,n=o);else for(let i of e)(i=t(i,++o,e))!=null&&(r>i||r===void 0&&i>=i)&&(r=i,n=o);return n}function Kp(e,t,r=0,n=1/0,o){if(t=Math.floor(t),r=Math.floor(Math.max(0,r)),n=Math.floor(Math.min(e.length-1,n)),!(r<=t&&t<=n))return e;for(o=o===void 0?ff:wb(o);n>r;){if(n-r>600){let c=n-r+1,u=t-r+1,f=Math.log(c),p=.5*Math.exp(2*f/3),l=.5*Math.sqrt(f*p*(c-p)/c)*(u-c/2<0?-1:1),m=Math.max(r,Math.floor(t-u*p/c+l)),h=Math.min(n,Math.floor(t+(c-u)*p/c+l));Kp(e,t,m,h,o)}let i=e[t],a=r,s=n;for(lf(e,r,t),o(e[n],i)>0&&lf(e,r,n);a0;)--s}o(e[r],i)===0?lf(e,r,s):(++s,lf(e,s,n)),s<=t&&(r=s+1),t<=s&&(n=s-1)}return e}function lf(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}function pf(e,t=vt){let r,n=!1;if(t.length===1){let o;for(let i of e){let a=t(i);(n?vt(a,o)>0:vt(a,a)===0)&&(r=i,o=a,n=!0)}}else for(let o of e)(n?t(o,r)>0:t(o,o)===0)&&(r=o,n=!0);return r}function En(e,t,r){if(e=Float64Array.from(oI(e,r)),!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return Fr(e);if(t>=1)return er(e);var n,o=(n-1)*t,i=Math.floor(o),a=er(Kp(e,i).subarray(0,i+1)),s=Fr(e.subarray(i+1));return a+(s-a)*(o-i)}}function Sb(e,t,r=cf){if(!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return+r(e[0],0,e);if(t>=1)return+r(e[n-1],n-1,e);var n,o=(n-1)*t,i=Math.floor(o),a=+r(e[i],i,e),s=+r(e[i+1],i+1,e);return a+(s-a)*(o-i)}}function qp(e,t,r){let n=es(e),o=En(e,.75)-En(e,.25);return n&&o?Math.ceil((r-t)/(2*o*Math.pow(n,-1/3))):1}function mf(e,t,r){let n=es(e),o=bc(e);return n&&o?Math.ceil((r-t)*Math.cbrt(n)/(3.49*o)):1}function Hp(e,t){let r=0,n=0;if(t===void 0)for(let o of e)o!=null&&(o=+o)>=o&&(++r,n+=o);else{let o=-1;for(let i of e)(i=t(i,++o,e))!=null&&(i=+i)>=i&&(++r,n+=i)}if(r)return n/r}function rs(e,t){return En(e,.5,t)}function*tE(e){for(let t of e)yield*t}function Sc(e){return Array.from(tE(e))}function Yp(e,t){let r=new Ar;if(t===void 0)for(let i of e)i!=null&&i>=i&&r.set(i,(r.get(i)||0)+1);else{let i=-1;for(let a of e)(a=t(a,++i,e))!=null&&a>=a&&r.set(a,(r.get(a)||0)+1)}let n,o=0;for(let[i,a]of r)a>o&&(o=a,n=i);return n}function Wp(e,t=rE){let r=[],n,o=!1;for(let i of e)o&&r.push(t(n,i)),n=i,o=!0;return r}function rE(e,t){return[e,t]}function ns(e,t,r){e=+e,t=+t,r=(o=arguments.length)<2?(t=e,e=0,1):o<3?1:+r;for(var n=-1,o=Math.max(0,Math.ceil((t-e)/r))|0,i=new Array(o);++n+e(t)}function aE(e,t){return t=Math.max(0,e.bandwidth()-t*2)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function sE(){return!this.__axis}function cE(e,t){var r=[],n=null,o=null,i=6,a=6,s=3,c=typeof window<"u"&&window.devicePixelRatio>1?0:.5,u=e===vb||e===Xp?-1:1,f=e===Xp||e===Ib?"x":"y",p=e===vb||e===_b?nE:oE;function l(m){var h=n??(t.ticks?t.ticks.apply(t,r):t.domain()),b=o??(t.tickFormat?t.tickFormat.apply(t,r):fI),y=Math.max(i,0)+s,x=t.range(),g=+x[0]+c,S=+x[x.length-1]+c,w=(t.bandwidth?aE:iE)(t.copy(),c),_=m.selection?m.selection():m,v=_.selectAll(".domain").data([null]),I=_.selectAll(".tick").data(h,t).order(),T=I.exit(),P=I.enter().append("g").attr("class","tick"),R=I.select("line"),C=I.select("text");v=v.merge(v.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),I=I.merge(P),R=R.merge(P.append("line").attr("stroke","currentColor").attr(f+"2",u*i)),C=C.merge(P.append("text").attr("fill","currentColor").attr(f,u*y).attr("dy",e===vb?"0em":e===_b?"0.71em":"0.32em")),m!==_&&(v=v.transition(m),I=I.transition(m),R=R.transition(m),C=C.transition(m),T=T.transition(m).attr("opacity",lI).attr("transform",function(N){return isFinite(N=w(N))?p(N+c):this.getAttribute("transform")}),P.attr("opacity",lI).attr("transform",function(N){var G=this.parentNode.__axis;return p((G&&isFinite(G=G(N))?G:w(N))+c)})),T.remove(),v.attr("d",e===Xp||e===Ib?a?"M"+u*a+","+g+"H"+c+"V"+S+"H"+u*a:"M"+c+","+g+"V"+S:a?"M"+g+","+u*a+"V"+c+"H"+S+"V"+u*a:"M"+g+","+c+"H"+S),I.attr("opacity",1).attr("transform",function(N){return p(w(N)+c)}),R.attr(f+"2",u*i),C.attr(f,u*y).text(b),_.filter(sE).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",e===Ib?"start":e===Xp?"end":"middle"),_.each(function(){this.__axis=w})}return l.scale=function(m){return arguments.length?(t=m,l):t},l.ticks=function(){return r=Array.from(arguments),l},l.tickArguments=function(m){return arguments.length?(r=m==null?[]:Array.from(m),l):r.slice()},l.tickValues=function(m){return arguments.length?(n=m==null?null:Array.from(m),l):n&&n.slice()},l.tickFormat=function(m){return arguments.length?(o=m,l):o},l.tickSize=function(m){return arguments.length?(i=a=+m,l):i},l.tickSizeInner=function(m){return arguments.length?(i=+m,l):i},l.tickSizeOuter=function(m){return arguments.length?(a=+m,l):a},l.tickPadding=function(m){return arguments.length?(s=+m,l):s},l.offset=function(m){return arguments.length?(c=+m,l):c},l}function Pb(e){return cE(_b,e)}var uE={value:()=>{}};function mI(){for(var e=0,t=arguments.length,r={},n;e=0&&(n=r.slice(o+1),r=r.slice(0,o)),r&&!t.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}Zp.prototype=mI.prototype={constructor:Zp,on:function(e,t){var r=this._,n=fE(e+"",r),o,i=-1,a=n.length;if(arguments.length<2){for(;++i0)for(var r=new Array(o),n=0,o,i;n=0&&(t=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),$o.hasOwnProperty(t)?{space:$o[t],local:e}:e}function pE(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===Qp&&t.documentElement.namespaceURI===Qp?t.createElement(e):t.createElementNS(r,e)}}function mE(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Ti(e){var t=Pi(e);return(t.local?mE:pE)(t)}function dE(){}function os(e){return e==null?dE:function(){return this.querySelector(e)}}function dI(e){typeof e!="function"&&(e=os(e));for(var t=this._groups,r=t.length,n=new Array(r),o=0;o=S&&(S=g+1);!(_=y[S])&&++S=0;)(a=n[o])&&(i&&a.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(a,i),i=a);return this}function TI(e){e||(e=ME);function t(p,l){return p&&l?e(p.__data__,l.__data__):!p-!l}for(var r=this._groups,n=r.length,o=new Array(n),i=0;it?1:e>=t?0:NaN}function MI(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function CI(){return Array.from(this)}function OI(){for(var e=this._groups,t=0,r=e.length;t1?this.each((t==null?AE:typeof t=="function"?$E:FE)(e,t,r??"")):pa(this.node(),e)}function pa(e,t){return e.style.getPropertyValue(t)||tm(e).getComputedStyle(e,null).getPropertyValue(t)}function DE(e){return function(){delete this[e]}}function LE(e,t){return function(){this[e]=t}}function VE(e,t){return function(){var r=t.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function FI(e,t){return arguments.length>1?this.each((t==null?DE:typeof t=="function"?VE:LE)(e,t)):this.node()[e]}function $I(e){return e.trim().split(/^|\s+/)}function Cb(e){return e.classList||new DI(e)}function DI(e){this._node=e,this._names=$I(e.getAttribute("class")||"")}DI.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function LI(e,t){for(var r=Cb(e),n=-1,o=t.length;++n=0&&(r=t.slice(n+1),t=t.slice(0,n)),{type:t,name:r}})}function nA(e){return function(){var t=this.__on;if(t){for(var r=0,n=-1,o=t.length,i;r>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?rm(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?rm(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=uA.exec(e))?new Bt(t[1],t[2],t[3],1):(t=fA.exec(e))?new Bt(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=lA.exec(e))?rm(t[1],t[2],t[3],t[4]):(t=pA.exec(e))?rm(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=mA.exec(e))?c_(t[1],t[2]/100,t[3]/100,1):(t=dA.exec(e))?c_(t[1],t[2]/100,t[3]/100,t[4]):r_.hasOwnProperty(e)?i_(r_[e]):e==="transparent"?new Bt(NaN,NaN,NaN,0):null}function i_(e){return new Bt(e>>16&255,e>>8&255,e&255,1)}function rm(e,t,r,n){return n<=0&&(e=t=r=NaN),new Bt(e,t,r,n)}function bf(e){return e instanceof Lo||(e=hn(e)),e?(e=e.rgb(),new Bt(e.r,e.g,e.b,e.opacity)):new Bt}function An(e,t,r,n){return arguments.length===1?bf(e):new Bt(e,t,r,n??1)}function Bt(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}Ci(Bt,An,da(Lo,{brighter(e){return e=e==null?ss:Math.pow(ss,e),new Bt(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?ha:Math.pow(ha,e),new Bt(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Bt(as(this.r),as(this.g),as(this.b),om(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:a_,formatHex:a_,formatHex8:yA,formatRgb:s_,toString:s_}));function a_(){return`#${is(this.r)}${is(this.g)}${is(this.b)}`}function yA(){return`#${is(this.r)}${is(this.g)}${is(this.b)}${is((isNaN(this.opacity)?1:this.opacity)*255)}`}function s_(){let e=om(this.opacity);return`${e===1?"rgb(":"rgba("}${as(this.r)}, ${as(this.g)}, ${as(this.b)}${e===1?")":`, ${e})`}`}function om(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function as(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function is(e){return e=as(e),(e<16?"0":"")+e.toString(16)}function c_(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new fo(e,t,r,n)}function f_(e){if(e instanceof fo)return new fo(e.h,e.s,e.l,e.opacity);if(e instanceof Lo||(e=hn(e)),!e)return new fo;if(e instanceof fo)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,o=Math.min(t,r,n),i=Math.max(t,r,n),a=NaN,s=i-o,c=(i+o)/2;return s?(t===i?a=(r-n)/s+(r0&&c<1?0:a,new fo(a,s,c,e.opacity)}function xf(e,t,r,n){return arguments.length===1?f_(e):new fo(e,t,r,n??1)}function fo(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}Ci(fo,xf,da(Lo,{brighter(e){return e=e==null?ss:Math.pow(ss,e),new fo(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?ha:Math.pow(ha,e),new fo(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,o=2*r-n;return new Bt(kb(e>=240?e-240:e+120,o,n),kb(e,o,n),kb(e<120?e+240:e-120,o,n),this.opacity)},clamp(){return new fo(u_(this.h),nm(this.s),nm(this.l),om(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=om(this.opacity);return`${e===1?"hsl(":"hsla("}${u_(this.h)}, ${nm(this.s)*100}%, ${nm(this.l)*100}%${e===1?")":`, ${e})`}`}}));function u_(e){return e=(e||0)%360,e<0?e+360:e}function nm(e){return Math.max(0,Math.min(1,e||0))}function kb(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}var im=Math.PI/180,am=180/Math.PI;var sm=18,l_=.96422,p_=1,m_=.82521,d_=4/29,Ic=6/29,h_=3*Ic*Ic,bA=Ic*Ic*Ic;function g_(e){if(e instanceof Vo)return new Vo(e.l,e.a,e.b,e.opacity);if(e instanceof Oi)return y_(e);e instanceof Bt||(e=bf(e));var t=Ab(e.r),r=Ab(e.g),n=Ab(e.b),o=Nb((.2225045*t+.7168786*r+.0606169*n)/p_),i,a;return t===r&&r===n?i=a=o:(i=Nb((.4360747*t+.3850649*r+.1430804*n)/l_),a=Nb((.0139322*t+.0971045*r+.7141733*n)/m_)),new Vo(116*o-16,500*(i-o),200*(o-a),e.opacity)}function _c(e,t,r,n){return arguments.length===1?g_(e):new Vo(e,t,r,n??1)}function Vo(e,t,r,n){this.l=+e,this.a=+t,this.b=+r,this.opacity=+n}Ci(Vo,_c,da(Lo,{brighter(e){return new Vo(this.l+sm*(e??1),this.a,this.b,this.opacity)},darker(e){return new Vo(this.l-sm*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return t=l_*Rb(t),e=p_*Rb(e),r=m_*Rb(r),new Bt(Eb(3.1338561*t-1.6168667*e-.4906146*r),Eb(-.9787684*t+1.9161415*e+.033454*r),Eb(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}}));function Nb(e){return e>bA?Math.pow(e,1/3):e/h_+d_}function Rb(e){return e>Ic?e*e*e:h_*(e-d_)}function Eb(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function Ab(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function xA(e){if(e instanceof Oi)return new Oi(e.h,e.c,e.l,e.opacity);if(e instanceof Vo||(e=g_(e)),e.a===0&&e.b===0)return new Oi(NaN,0=1?(r=1,t-1):Math.floor(r*t),o=e[n],i=e[n+1],a=n>0?e[n-1]:2*o-i,s=n()=>e;function __(e,t){return function(r){return e+r*t}}function SA(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function Tc(e,t){var r=t-e;return r?__(e,r>180||r<-180?r-360*Math.round(r/360):r):Pc(isNaN(e)?t:e)}function P_(e){return(e=+e)==1?bt:function(t,r){return r-t?SA(t,r,e):Pc(isNaN(t)?r:t)}}function bt(e,t){var r=t-e;return r?__(e,r):Pc(isNaN(e)?t:e)}var Fn=(function e(t){var r=P_(t);function n(o,i){var a=r((o=An(o)).r,(i=An(i)).r),s=r(o.g,i.g),c=r(o.b,i.b),u=bt(o.opacity,i.opacity);return function(f){return o.r=a(f),o.g=s(f),o.b=c(f),o.opacity=u(f),o+""}}return n.gamma=e,n})(1);function T_(e){return function(t){var r=t.length,n=new Array(r),o=new Array(r),i=new Array(r),a,s;for(a=0;ar&&(i=t.slice(r,i),s[a]?s[a]+=i:s[++a]=i),(n=n[0])===(o=o[0])?s[a]?s[a]+=o:s[++a]=o:(s[++a]=null,c.push({i:a,x:mt(n,o)})),r=Vb.lastIndex;return r180?f+=360:f-u>180&&(u+=360),l.push({i:p.push(o(p)+"rotate(",null,n)-2,x:mt(u,f)})):f&&p.push(o(p)+"rotate("+f+n)}function s(u,f,p,l){u!==f?l.push({i:p.push(o(p)+"skewX(",null,n)-2,x:mt(u,f)}):f&&p.push(o(p)+"skewX("+f+n)}function c(u,f,p,l,m,h){if(u!==p||f!==l){var b=m.push(o(m)+"scale(",null,",",null,")");h.push({i:b-4,x:mt(u,p)},{i:b-2,x:mt(f,l)})}else(p!==1||l!==1)&&m.push(o(m)+"scale("+p+","+l+")")}return function(u,f){var p=[],l=[];return u=e(u),f=e(f),i(u.translateX,u.translateY,f.translateX,f.translateY,p,l),a(u.rotate,f.rotate,p,l),s(u.skewX,f.skewX,p,l),c(u.scaleX,u.scaleY,f.scaleX,f.scaleY,p,l),u=f=null,function(m){for(var h=-1,b=l.length,y;++h=0&&e._call.call(void 0,t),e=e._next;--Cc}function V_(){fs=(mm=Tf.now())+dm,Cc=_f=0;try{z_()}finally{Cc=0,kA(),fs=0}}function OA(){var e=Tf.now(),t=e-mm;t>j_&&(dm-=t,mm=e)}function kA(){for(var e,t=pm,r,n=1/0;t;)t._call?(n>t._time&&(n=t._time),e=t,t=t._next):(r=t._next,t._next=null,t=e?e._next=r:pm=r);Pf=e,qb(n)}function qb(e){if(!Cc){_f&&(_f=clearTimeout(_f));var t=e-fs;t>24?(e<1/0&&(_f=setTimeout(V_,e-Tf.now()-dm)),If&&(If=clearInterval(If))):(If||(mm=Tf.now(),If=setInterval(OA,j_)),Cc=1,U_(V_))}}function gm(e,t,r){var n=new Mf;return t=t==null?0:+t,n.restart(o=>{n.stop(),e(o+t)},t,r),n}var NA=Tb("start","end","cancel","interrupt"),RA=[],K_=0,B_=1,bm=2,ym=3,G_=4,xm=5,Of=6;function ga(e,t,r,n,o,i){var a=e.__transition;if(!a)e.__transition={};else if(r in a)return;EA(e,r,{name:t,index:n,group:o,on:NA,tween:RA,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:K_})}function kf(e,t){var r=Wt(e,t);if(r.state>K_)throw new Error("too late; already scheduled");return r}function mr(e,t){var r=Wt(e,t);if(r.state>ym)throw new Error("too late; already running");return r}function Wt(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function EA(e,t,r){var n=e.__transition,o;n[t]=r,r.timer=hm(i,0,r.time);function i(u){r.state=B_,r.timer.restart(a,r.delay,r.time),r.delay<=u&&a(u-r.delay)}function a(u){var f,p,l,m;if(r.state!==B_)return c();for(f in n)if(m=n[f],m.name===r.name){if(m.state===ym)return gm(a);m.state===G_?(m.state=Of,m.timer.stop(),m.on.call("interrupt",e,e.__data__,m.index,m.group),delete n[f]):+fbm&&n.state=0&&(t=t.slice(0,r)),!t||t==="start"})}function JA(e,t,r){var n,o,i=QA(t)?kf:mr;return function(){var a=i(this,e),s=a.on;s!==n&&(o=(n=s).copy()).on(t,r),a.on=o}}function rP(e,t){var r=this._id;return arguments.length<2?Wt(this.node(),r).on.on(e):this.each(JA(r,e,t))}function e4(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}function nP(){return this.on("end.remove",e4(this._id))}function oP(e){var t=this._name,r=this._id;typeof e!="function"&&(e=os(e));for(var n=this._groups,o=n.length,i=new Array(o),a=0;a=0))throw new Error(`invalid digits: ${e}`);if(t>15)return yP;let r=10**t;return function(n){this._+=n[0];for(let o=1,i=n.length;ols)if(!(Math.abs(p*c-u*f)>ls)||!i)this._append`L${this._x1=t},${this._y1=r}`;else{let m=n-a,h=o-s,b=c*c+u*u,y=m*m+h*h,x=Math.sqrt(b),g=Math.sqrt(l),S=i*Math.tan((Yb-Math.acos((b+l-y)/(2*x*g)))/2),w=S/g,_=S/x;Math.abs(w-1)>ls&&this._append`L${t+w*f},${r+w*p}`,this._append`A${i},${i},0,0,${+(p*m>f*h)},${this._x1=t+_*c},${this._y1=r+_*u}`}}arc(t,r,n,o,i,a){if(t=+t,r=+r,n=+n,a=!!a,n<0)throw new Error(`negative radius: ${n}`);let s=n*Math.cos(o),c=n*Math.sin(o),u=t+s,f=r+c,p=1^a,l=a?o-i:i-o;this._x1===null?this._append`M${u},${f}`:(Math.abs(this._x1-u)>ls||Math.abs(this._y1-f)>ls)&&this._append`L${u},${f}`,n&&(l<0&&(l=l%Wb+Wb),l>g4?this._append`A${n},${n},0,1,${p},${t-s},${r-c}A${n},${n},0,1,${p},${this._x1=u},${this._y1=f}`:l>ls&&this._append`A${n},${n},0,${+(l>=Yb)},${p},${this._x1=t+n*Math.cos(i)},${this._y1=r+n*Math.sin(i)}`)}rect(t,r,n,o){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+o}h${-n}Z`}toString(){return this._}};function bP(){return new ya}bP.prototype=ya.prototype;function po(e=3){return new ya(+e)}function xP(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function ps(e,t){if(!isFinite(e)||e===0)return null;var r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"),n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function Uo(e){return e=ps(Math.abs(e)),e?e[1]:NaN}function wP(e,t){return function(r,n){for(var o=r.length,i=[],a=0,s=e[0],c=0;o>0&&s>0&&(c+s+1>n&&(s=Math.max(1,n-c)),i.push(r.substring(o-=s,o+s)),!((c+=s+1)>n));)s=e[a=(a+1)%e.length];return i.reverse().join(t)}}function SP(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var b4=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function zo(e){if(!(t=b4.exec(e)))throw new Error("invalid format: "+e);var t;return new _m({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}zo.prototype=_m.prototype;function _m(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}_m.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function vP(e){e:for(var t=e.length,r=1,n=-1,o;r0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(o+1):e}var Nf;function IP(e,t){var r=ps(e,t);if(!r)return Nf=void 0,e.toPrecision(t);var n=r[0],o=r[1],i=o-(Nf=Math.max(-8,Math.min(8,Math.floor(o/3)))*3)+1,a=n.length;return i===a?n:i>a?n+new Array(i-a+1).join("0"):i>0?n.slice(0,i)+"."+n.slice(i):"0."+new Array(1-i).join("0")+ps(e,Math.max(0,t+i-1))[0]}function Xb(e,t){var r=ps(e,t);if(!r)return e+"";var n=r[0],o=r[1];return o<0?"0."+new Array(-o).join("0")+n:n.length>o+1?n.slice(0,o+1)+"."+n.slice(o+1):n+new Array(o-n.length+2).join("0")}var Zb={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:xP,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Xb(e*100,t),r:Xb,s:IP,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function Qb(e){return e}var _P=Array.prototype.map,PP=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function TP(e){var t=e.grouping===void 0||e.thousands===void 0?Qb:wP(_P.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",o=e.decimal===void 0?".":e.decimal+"",i=e.numerals===void 0?Qb:SP(_P.call(e.numerals,String)),a=e.percent===void 0?"%":e.percent+"",s=e.minus===void 0?"\u2212":e.minus+"",c=e.nan===void 0?"NaN":e.nan+"";function u(p,l){p=zo(p);var m=p.fill,h=p.align,b=p.sign,y=p.symbol,x=p.zero,g=p.width,S=p.comma,w=p.precision,_=p.trim,v=p.type;v==="n"?(S=!0,v="g"):Zb[v]||(w===void 0&&(w=12),_=!0,v="g"),(x||m==="0"&&h==="=")&&(x=!0,m="0",h="=");var I=(l&&l.prefix!==void 0?l.prefix:"")+(y==="$"?r:y==="#"&&/[boxX]/.test(v)?"0"+v.toLowerCase():""),T=(y==="$"?n:/[%p]/.test(v)?a:"")+(l&&l.suffix!==void 0?l.suffix:""),P=Zb[v],R=/[defgprs%]/.test(v);w=w===void 0?6:/[gprs]/.test(v)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function C(N){var G=I,D=T,O,z,U;if(v==="c")D=P(N)+D,N="";else{N=+N;var W=N<0||1/N<0;if(N=isNaN(N)?c:P(Math.abs(N),w),_&&(N=vP(N)),W&&+N==0&&b!=="+"&&(W=!1),G=(W?b==="("?b:s:b==="-"||b==="("?"":b)+G,D=(v==="s"&&!isNaN(N)&&Nf!==void 0?PP[8+Nf/3]:"")+D+(W&&b==="("?")":""),R){for(O=-1,z=N.length;++OU||U>57){D=(U===46?o+N.slice(O+1):N.slice(O))+D,N=N.slice(0,O);break}}}S&&!x&&(N=t(N,1/0));var B=G.length+N.length+D.length,q=B>1)+G+N+D+q.slice(B);break;default:N=q+G+N+D;break}return i(N)}return C.toString=function(){return p+""},C}function f(p,l){var m=Math.max(-8,Math.min(8,Math.floor(Uo(l)/3)))*3,h=Math.pow(10,-m),b=u((p=zo(p),p.type="f",p),{suffix:PP[8+m/3]});return function(y){return b(h*y)}}return{format:u,formatPrefix:f}}var Pm,$n,Tm;Jb({thousands:",",grouping:[3],currency:["$",""]});function Jb(e){return Pm=TP(e),$n=Pm.format,Tm=Pm.formatPrefix,Pm}function e0(e){return Math.max(0,-Uo(Math.abs(e)))}function t0(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Uo(t)/3)))*3-Uo(Math.abs(e)))}function r0(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Uo(t)-Uo(e))+1}var ce=1e-6,Mm=1e-12,ye=Math.PI,He=ye/2,n0=ye/4,tr=ye*2,Xt=180/ye,Ye=ye/180,ve=Math.abs,Dn=Math.atan,dr=Math.atan2,se=Math.cos;var Cm=Math.exp;var ms=Math.log,Om=Math.pow,ae=Math.sin,Pr=Math.sign||function(e){return e>0?1:e<0?-1:0},st=Math.sqrt,kc=Math.tan;function km(e){return e>1?0:e<-1?ye:Math.acos(e)}function Mt(e){return e>1?He:e<-1?-He:Math.asin(e)}function rr(){}function Nm(e,t){e&&CP.hasOwnProperty(e.type)&&CP[e.type](e,t)}var MP={Feature:function(e,t){Nm(e.geometry,t)},FeatureCollection:function(e,t){for(var r=e.features,n=-1,o=r.length;++nye&&(e-=Math.round(e/tr)*tr),[e,t]}i0.invert=i0;function a0(e,t,r){return(e%=tr)?t||r?$f(NP(e),RP(t,r)):NP(e):t||r?RP(t,r):i0}function kP(e){return function(t,r){return t+=e,ve(t)>ye&&(t-=Math.round(t/tr)*tr),[t,r]}}function NP(e){var t=kP(e);return t.invert=kP(-e),t}function RP(e,t){var r=se(e),n=ae(e),o=se(t),i=ae(t);function a(s,c){var u=se(c),f=se(s)*u,p=ae(s)*u,l=ae(c),m=l*r+f*n;return[dr(p*o-m*i,f*r-l*n),Mt(m*o+p*i)]}return a.invert=function(s,c){var u=se(c),f=se(s)*u,p=ae(s)*u,l=ae(c),m=l*o-p*i;return[dr(p*o+l*i,f*r+m*n),Mt(m*r-f*n)]},a}function EP(e){e=a0(e[0]*Ye,e[1]*Ye,e.length>2?e[2]*Ye:0);function t(r){return r=e(r[0]*Ye,r[1]*Ye),r[0]*=Xt,r[1]*=Xt,r}return t.invert=function(r){return r=e.invert(r[0]*Ye,r[1]*Ye),r[0]*=Xt,r[1]*=Xt,r},t}function FP(e,t,r,n,o,i){if(r){var a=se(t),s=ae(t),c=n*r;o==null?(o=t+n*tr,i=t-c/2):(o=AP(a,o),i=AP(a,i),(n>0?oi)&&(o+=n*tr));for(var u,f=o;n>0?f>i:f1&&e.push(e.pop().concat(e.shift()))},result:function(){var r=e;return e=[],t=null,r}}}function Rc(e,t){return ve(e[0]-t[0])=0;--s)o.point((p=f[s])[0],p[1]);else n(l.x,l.p.x,-1,o);l=l.p}l=l.o,f=l.z,m=!m}while(!l.v);o.lineEnd()}}}function $P(e){if(t=e.length){for(var t,r=0,n=e[0],o;++r=0?1:-1,R=P*T,C=R>ye,N=y*v;if(c.add(dr(N*P*ae(R),x*I+N*se(R))),a+=C?T+P*tr:T,C^h>=r^w>=r){var G=Nc(Bo(m),Bo(S));Ff(G);var D=Nc(i,G);Ff(D);var O=(C^T>=0?-1:1)*Mt(D[2]);(n>O||n===O&&(G[0]||G[1]))&&(s+=C^T>=0?1:-1)}}return(a<-ce||a0){for(c||(o.polygonStart(),c=!0),o.lineStart(),v=0;v1&&w&2&&_.push(_.pop().concat(_.shift())),f.push(_.filter(x4))}}return l}}function x4(e){return e.length>1}function w4(e,t){return((e=e.x)[0]<0?e[1]-He-ce:He-e[1])-((t=t.x)[0]<0?t[1]-He-ce:He-t[1])}var c0=$m(function(){return!0},S4,I4,[-ye,-He]);function S4(e){var t=NaN,r=NaN,n=NaN,o;return{lineStart:function(){e.lineStart(),o=1},point:function(i,a){var s=i>0?ye:-ye,c=ve(i-t);ve(c-ye)0?He:-He),e.point(n,r),e.lineEnd(),e.lineStart(),e.point(s,r),e.point(i,r),o=0):n!==s&&c>=ye&&(ve(t-n)ce?Dn((ae(t)*(i=se(n))*ae(r)-ae(n)*(o=se(t))*ae(e))/(o*i*a)):(t+n)/2}function I4(e,t,r,n){var o;if(e==null)o=r*He,n.point(-ye,o),n.point(0,o),n.point(ye,o),n.point(ye,0),n.point(ye,-o),n.point(0,-o),n.point(-ye,-o),n.point(-ye,0),n.point(-ye,o);else if(ve(e[0]-t[0])>ce){var i=e[0]0,o=ve(t)>ce;function i(f,p,l,m){FP(m,e,r,l,f,p)}function a(f,p){return se(f)*se(p)>t}function s(f){var p,l,m,h,b;return{lineStart:function(){h=m=!1,b=1},point:function(y,x){var g=[y,x],S,w=a(y,x),_=n?w?0:u(y,x):w?u(y+(y<0?ye:-ye),x):0;if(!p&&(h=m=w)&&f.lineStart(),w!==m&&(S=c(p,g),(!S||Rc(p,S)||Rc(g,S))&&(g[2]=1)),w!==m)b=0,w?(f.lineStart(),S=c(g,p),f.point(S[0],S[1])):(S=c(p,g),f.point(S[0],S[1],2),f.lineEnd()),p=S;else if(o&&p&&n^w){var v;!(_&l)&&(v=c(g,p,!0))&&(b=0,n?(f.lineStart(),f.point(v[0][0],v[0][1]),f.point(v[1][0],v[1][1]),f.lineEnd()):(f.point(v[1][0],v[1][1]),f.lineEnd(),f.lineStart(),f.point(v[0][0],v[0][1],3)))}w&&(!p||!Rc(p,g))&&f.point(g[0],g[1]),p=g,m=w,l=_},lineEnd:function(){m&&f.lineEnd(),p=null},clean:function(){return b|(h&&m)<<1}}}function c(f,p,l){var m=Bo(f),h=Bo(p),b=[1,0,0],y=Nc(m,h),x=Ef(y,y),g=y[0],S=x-g*g;if(!S)return!l&&f;var w=t*x/S,_=-t*g/S,v=Nc(b,y),I=Af(b,w),T=Af(y,_);Rm(I,T);var P=v,R=Ef(I,P),C=Ef(P,P),N=R*R-C*(Ef(I,I)-1);if(!(N<0)){var G=st(N),D=Af(P,(-R-G)/C);if(Rm(D,I),D=Rf(D),!l)return D;var O=f[0],z=p[0],U=f[1],W=p[1],B;z0^D[1]<(ve(D[0]-O)ye^(O<=D[0]&&D[0]<=z)){var A=Af(P,(-R+G)/C);return Rm(A,I),[D,Rf(A)]}}}function u(f,p){var l=n?e:ye-e,m=0;return f<-l?m|=1:f>l&&(m|=2),p<-l?m|=4:p>l&&(m|=8),m}return $m(a,s,i,n?[0,-e]:[-ye,e-ye])}function VP(e,t,r,n,o,i){var a=e[0],s=e[1],c=t[0],u=t[1],f=0,p=1,l=c-a,m=u-s,h;if(h=r-a,!(!l&&h>0)){if(h/=l,l<0){if(h0){if(h>p)return;h>f&&(f=h)}if(h=o-a,!(!l&&h<0)){if(h/=l,l<0){if(h>p)return;h>f&&(f=h)}else if(l>0){if(h0)){if(h/=m,m<0){if(h0){if(h>p)return;h>f&&(f=h)}if(h=i-s,!(!m&&h<0)){if(h/=m,m<0){if(h>p)return;h>f&&(f=h)}else if(m>0){if(h0&&(e[0]=a+f*l,e[1]=s+f*m),p<1&&(t[0]=a+p*l,t[1]=s+p*m),!0}}}}}var Df=1e9,Dm=-Df;function Ec(e,t,r,n){function o(u,f){return e<=u&&u<=r&&t<=f&&f<=n}function i(u,f,p,l){var m=0,h=0;if(u==null||(m=a(u,p))!==(h=a(f,p))||c(u,f)<0^p>0)do l.point(m===0||m===3?e:r,m>1?n:t);while((m=(m+p+4)%4)!==h);else l.point(f[0],f[1])}function a(u,f){return ve(u[0]-e)0?0:3:ve(u[0]-r)0?2:1:ve(u[1]-t)0?1:0:f>0?3:2}function s(u,f){return c(u.x,f.x)}function c(u,f){var p=a(u,1),l=a(f,1);return p!==l?p-l:p===0?f[1]-u[1]:p===1?u[0]-f[0]:p===2?u[1]-f[1]:f[0]-u[0]}return function(u){var f=u,p=Em(),l,m,h,b,y,x,g,S,w,_,v,I={point:T,lineStart:N,lineEnd:G,polygonStart:R,polygonEnd:C};function T(O,z){o(O,z)&&f.point(O,z)}function P(){for(var O=0,z=0,U=m.length;zn&&(K-J)*(n-A)>(Y-A)*(e-J)&&++O:Y<=n&&(K-J)*(n-A)<(Y-A)*(e-J)&&--O;return O}function R(){f=p,l=[],m=[],v=!0}function C(){var O=P(),z=v&&O,U=(l=Sc(l)).length;(z||U)&&(u.polygonStart(),z&&(u.lineStart(),i(null,null,1,u),u.lineEnd()),U&&Fm(l,s,O,i,u),u.polygonEnd()),f=u,l=m=h=null}function N(){I.point=D,m&&m.push(h=[]),_=!0,w=!1,g=S=NaN}function G(){l&&(D(b,y),x&&w&&p.rejoin(),l.push(p.result())),I.point=T,w&&f.lineEnd()}function D(O,z){var U=o(O,z);if(m&&h.push([O,z]),_)b=O,y=z,x=U,_=!1,U&&(f.lineStart(),f.point(O,z));else if(U&&w)f.point(O,z);else{var W=[g=Math.max(Dm,Math.min(Df,g)),S=Math.max(Dm,Math.min(Df,S))],B=[O=Math.max(Dm,Math.min(Df,O)),z=Math.max(Dm,Math.min(Df,z))];VP(W,B,e,t,r,n)?(w||(f.lineStart(),f.point(W[0],W[1])),f.point(B[0],B[1]),U||f.lineEnd(),v=!1):U&&(f.lineStart(),f.point(O,z),v=!1)}g=O,S=z,w=U}return I}}var Lf=e=>e;var u0=new mn,f0=new mn,jP,UP,l0,p0,ba={point:rr,lineStart:rr,lineEnd:rr,polygonStart:function(){ba.lineStart=_4,ba.lineEnd=T4},polygonEnd:function(){ba.lineStart=ba.lineEnd=ba.point=rr,u0.add(ve(f0)),f0=new mn},result:function(){var e=u0/2;return u0=new mn,e}};function _4(){ba.point=P4}function P4(e,t){ba.point=zP,jP=l0=e,UP=p0=t}function zP(e,t){f0.add(p0*e-l0*t),l0=e,p0=t}function T4(){zP(jP,UP)}var m0=ba;var Ac=1/0,Lm=Ac,Vf=-Ac,Vm=Vf,M4={point:C4,lineStart:rr,lineEnd:rr,polygonStart:rr,polygonEnd:rr,result:function(){var e=[[Ac,Lm],[Vf,Vm]];return Vf=Vm=-(Lm=Ac=1/0),e}};function C4(e,t){eVf&&(Vf=e),tVm&&(Vm=t)}var Fc=M4;var d0=0,h0=0,jf=0,jm=0,Um=0,$c=0,g0=0,y0=0,Uf=0,KP,qP,Go,Ko,ho={point:ds,lineStart:BP,lineEnd:GP,polygonStart:function(){ho.lineStart=N4,ho.lineEnd=R4},polygonEnd:function(){ho.point=ds,ho.lineStart=BP,ho.lineEnd=GP},result:function(){var e=Uf?[g0/Uf,y0/Uf]:$c?[jm/$c,Um/$c]:jf?[d0/jf,h0/jf]:[NaN,NaN];return d0=h0=jf=jm=Um=$c=g0=y0=Uf=0,e}};function ds(e,t){d0+=e,h0+=t,++jf}function BP(){ho.point=O4}function O4(e,t){ho.point=k4,ds(Go=e,Ko=t)}function k4(e,t){var r=e-Go,n=t-Ko,o=st(r*r+n*n);jm+=o*(Go+e)/2,Um+=o*(Ko+t)/2,$c+=o,ds(Go=e,Ko=t)}function GP(){ho.point=ds}function N4(){ho.point=E4}function R4(){HP(KP,qP)}function E4(e,t){ho.point=HP,ds(KP=Go=e,qP=Ko=t)}function HP(e,t){var r=e-Go,n=t-Ko,o=st(r*r+n*n);jm+=o*(Go+e)/2,Um+=o*(Ko+t)/2,$c+=o,o=Ko*e-Go*t,g0+=o*(Go+e),y0+=o*(Ko+t),Uf+=o*3,ds(Go=e,Ko=t)}var b0=ho;function zm(e){this._context=e}zm.prototype={_radius:4.5,pointRadius:function(e){return this._radius=e,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(e,t){switch(this._point){case 0:{this._context.moveTo(e,t),this._point=1;break}case 1:{this._context.lineTo(e,t);break}default:{this._context.moveTo(e+this._radius,t),this._context.arc(e,t,this._radius,0,tr);break}}},result:rr};var w0=new mn,x0,YP,WP,zf,Bf,Bm={point:rr,lineStart:function(){Bm.point=A4},lineEnd:function(){x0&&XP(YP,WP),Bm.point=rr},polygonStart:function(){x0=!0},polygonEnd:function(){x0=null},result:function(){var e=+w0;return w0=new mn,e}};function A4(e,t){Bm.point=XP,YP=zf=e,WP=Bf=t}function XP(e,t){zf-=e,Bf-=t,w0.add(st(zf*zf+Bf*Bf)),zf=e,Bf=t}var S0=Bm;var ZP,Gm,QP,JP,Dc=class{constructor(t){this._append=t==null?eT:F4(t),this._radius=4.5,this._=""}pointRadius(t){return this._radius=+t,this}polygonStart(){this._line=0}polygonEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){this._line===0&&(this._+="Z"),this._point=NaN}point(t,r){switch(this._point){case 0:{this._append`M${t},${r}`,this._point=1;break}case 1:{this._append`L${t},${r}`;break}default:{if(this._append`M${t},${r}`,this._radius!==QP||this._append!==Gm){let n=this._radius,o=this._;this._="",this._append`m0,${n}a${n},${n} 0 1,1 0,${-2*n}a${n},${n} 0 1,1 0,${2*n}z`,QP=n,Gm=this._append,JP=this._,this._=o}this._+=JP;break}}}result(){let t=this._;return this._="",t.length?t:null}};function eT(e){let t=1;this._+=e[0];for(let r=e.length;t=0))throw new RangeError(`invalid digits: ${e}`);if(t>15)return eT;if(t!==ZP){let r=10**t;ZP=t,Gm=function(o){let i=1;this._+=o[0];for(let a=o.length;i=0))throw new RangeError(`invalid digits: ${s}`);r=c}return t===null&&(i=new Dc(r)),a},a.projection(e).digits(r).context(t)}function Vc(e){return{stream:jc(e)}}function jc(e){return function(t){var r=new v0;for(var n in e)r[n]=e[n];return r.stream=t,r}}function v0(){}v0.prototype={constructor:v0,point:function(e,t){this.stream.point(e,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function I0(e,t,r){var n=e.clipExtent&&e.clipExtent();return e.scale(150).translate([0,0]),n!=null&&e.clipExtent(null),mo(r,e.stream(Fc)),t(Fc.result()),n!=null&&e.clipExtent(n),e}function Gf(e,t,r){return I0(e,function(n){var o=t[1][0]-t[0][0],i=t[1][1]-t[0][1],a=Math.min(o/(n[1][0]-n[0][0]),i/(n[1][1]-n[0][1])),s=+t[0][0]+(o-a*(n[1][0]+n[0][0]))/2,c=+t[0][1]+(i-a*(n[1][1]+n[0][1]))/2;e.scale(150*a).translate([s,c])},r)}function Km(e,t,r){return Gf(e,[[0,0],t],r)}function qm(e,t,r){return I0(e,function(n){var o=+t,i=o/(n[1][0]-n[0][0]),a=(o-i*(n[1][0]+n[0][0]))/2,s=-i*n[0][1];e.scale(150*i).translate([a,s])},r)}function Hm(e,t,r){return I0(e,function(n){var o=+t,i=o/(n[1][1]-n[0][1]),a=-i*n[0][0],s=(o-i*(n[1][1]+n[0][1]))/2;e.scale(150*i).translate([a,s])},r)}var tT=16,$4=se(30*Ye);function _0(e,t){return+t?L4(e,t):D4(e)}function D4(e){return jc({point:function(t,r){t=e(t,r),this.stream.point(t[0],t[1])}})}function L4(e,t){function r(n,o,i,a,s,c,u,f,p,l,m,h,b,y){var x=u-n,g=f-o,S=x*x+g*g;if(S>4*t&&b--){var w=a+l,_=s+m,v=c+h,I=st(w*w+_*_+v*v),T=Mt(v/=I),P=ve(ve(v)-1)t||ve((x*G+g*D)/S-.5)>.3||a*l+s*m+c*h<$4)&&(r(n,o,i,a,s,c,C,N,P,w/=I,_/=I,v,b,y),y.point(C,N),r(C,N,P,w,_,v,u,f,p,l,m,h,b,y))}}return function(n){var o,i,a,s,c,u,f,p,l,m,h,b,y={point:x,lineStart:g,lineEnd:w,polygonStart:function(){n.polygonStart(),y.lineStart=_},polygonEnd:function(){n.polygonEnd(),y.lineStart=g}};function x(T,P){T=e(T,P),n.point(T[0],T[1])}function g(){p=NaN,y.point=S,n.lineStart()}function S(T,P){var R=Bo([T,P]),C=e(T,P);r(p,l,f,m,h,b,p=C[0],l=C[1],f=T,m=R[0],h=R[1],b=R[2],tT,n),n.point(p,l)}function w(){y.point=x,n.lineEnd()}function _(){g(),y.point=v,y.lineEnd=I}function v(T,P){S(o=T,P),i=p,a=l,s=m,c=h,u=b,y.point=S}function I(){r(p,l,f,m,h,b,i,a,o,s,c,u,tT,n),y.lineEnd=w,w()}return y}}var V4=jc({point:function(e,t){this.stream.point(e*Ye,t*Ye)}});function j4(e){return jc({point:function(t,r){var n=e(t,r);return this.stream.point(n[0],n[1])}})}function U4(e,t,r,n,o){function i(a,s){return a*=n,s*=o,[t+e*a,r-e*s]}return i.invert=function(a,s){return[(a-t)/e*n,(r-s)/e*o]},i}function rT(e,t,r,n,o,i){if(!i)return U4(e,t,r,n,o);var a=se(i),s=ae(i),c=a*e,u=s*e,f=a/e,p=s/e,l=(s*r-a*t)/e,m=(s*t+a*r)/e;function h(b,y){return b*=n,y*=o,[c*b-u*y+t,r-u*b-c*y]}return h.invert=function(b,y){return[n*(f*b-p*y+l),o*(m-p*b-f*y)]},h}function hr(e){return P0(function(){return e})()}function P0(e){var t,r=150,n=480,o=250,i=0,a=0,s=0,c=0,u=0,f,p=0,l=1,m=1,h=null,b=c0,y=null,x,g,S,w=Lf,_=.5,v,I,T,P,R;function C(O){return T(O[0]*Ye,O[1]*Ye)}function N(O){return O=T.invert(O[0],O[1]),O&&[O[0]*Xt,O[1]*Xt]}C.stream=function(O){return P&&R===O?P:P=V4(j4(f)(b(v(w(R=O)))))},C.preclip=function(O){return arguments.length?(b=O,h=void 0,D()):b},C.postclip=function(O){return arguments.length?(w=O,y=x=g=S=null,D()):w},C.clipAngle=function(O){return arguments.length?(b=+O?LP(h=O*Ye):(h=null,c0),D()):h*Xt},C.clipExtent=function(O){return arguments.length?(w=O==null?(y=x=g=S=null,Lf):Ec(y=+O[0][0],x=+O[0][1],g=+O[1][0],S=+O[1][1]),D()):y==null?null:[[y,x],[g,S]]},C.scale=function(O){return arguments.length?(r=+O,G()):r},C.translate=function(O){return arguments.length?(n=+O[0],o=+O[1],G()):[n,o]},C.center=function(O){return arguments.length?(i=O[0]%360*Ye,a=O[1]%360*Ye,G()):[i*Xt,a*Xt]},C.rotate=function(O){return arguments.length?(s=O[0]%360*Ye,c=O[1]%360*Ye,u=O.length>2?O[2]%360*Ye:0,G()):[s*Xt,c*Xt,u*Xt]},C.angle=function(O){return arguments.length?(p=O%360*Ye,G()):p*Xt},C.reflectX=function(O){return arguments.length?(l=O?-1:1,G()):l<0},C.reflectY=function(O){return arguments.length?(m=O?-1:1,G()):m<0},C.precision=function(O){return arguments.length?(v=_0(I,_=O*O),D()):st(_)},C.fitExtent=function(O,z){return Gf(C,O,z)},C.fitSize=function(O,z){return Km(C,O,z)},C.fitWidth=function(O,z){return qm(C,O,z)},C.fitHeight=function(O,z){return Hm(C,O,z)};function G(){var O=rT(r,0,0,l,m,p).apply(null,t(i,a)),z=rT(r,n-O[0],o-O[1],l,m,p);return f=a0(s,c,u),I=$f(t,z),T=$f(f,I),v=_0(I,_),D()}function D(){return P=R=null,C}return function(){return t=e.apply(this,arguments),C.invert=t.invert&&N,G()}}function Uc(e){var t=0,r=ye/3,n=P0(e),o=n(t,r);return o.parallels=function(i){return arguments.length?n(t=i[0]*Ye,r=i[1]*Ye):[t*Xt,r*Xt]},o}function nT(e){var t=se(e);function r(n,o){return[n*t,ae(o)/t]}return r.invert=function(n,o){return[n/t,Mt(o*t)]},r}function oT(e,t){var r=ae(e),n=(r+ae(t))/2;if(ve(n)=.12&&y<.234&&b>=-.425&&b<-.214?o:y>=.166&&y<.234&&b>=-.214&&b<-.115?a:r).invert(l)},f.stream=function(l){return e&&t===l?e:e=z4([r.stream(t=l),o.stream(l),a.stream(l)])},f.precision=function(l){return arguments.length?(r.precision(l),o.precision(l),a.precision(l),p()):r.precision()},f.scale=function(l){return arguments.length?(r.scale(l),o.scale(l*.35),a.scale(l),f.translate(r.translate())):r.scale()},f.translate=function(l){if(!arguments.length)return r.translate();var m=r.scale(),h=+l[0],b=+l[1];return n=r.translate(l).clipExtent([[h-.455*m,b-.238*m],[h+.455*m,b+.238*m]]).stream(u),i=o.translate([h-.307*m,b+.201*m]).clipExtent([[h-.425*m+ce,b+.12*m+ce],[h-.214*m-ce,b+.234*m-ce]]).stream(u),s=a.translate([h-.205*m,b+.212*m]).clipExtent([[h-.214*m+ce,b+.166*m+ce],[h-.115*m-ce,b+.234*m-ce]]).stream(u),p()},f.fitExtent=function(l,m){return Gf(f,l,m)},f.fitSize=function(l,m){return Km(f,l,m)},f.fitWidth=function(l,m){return qm(f,l,m)},f.fitHeight=function(l,m){return Hm(f,l,m)};function p(){return e=t=null,f}return f.scale(1070)}function Ym(e){return function(t,r){var n=se(t),o=se(r),i=e(n*o);return i===1/0?[2,0]:[i*o*ae(t),i*ae(r)]}}function qo(e){return function(t,r){var n=st(t*t+r*r),o=e(n),i=ae(o),a=se(o);return[dr(t*i,n*a),Mt(n&&r*i/n)]}}var M0=Ym(function(e){return st(2/(1+e))});M0.invert=qo(function(e){return 2*Mt(e/2)});function C0(){return hr(M0).scale(124.75).clipAngle(180-.001)}var O0=Ym(function(e){return(e=km(e))&&e/ae(e)});O0.invert=qo(function(e){return e});function k0(){return hr(O0).scale(79.4188).clipAngle(180-.001)}function zc(e,t){return[e,ms(kc((He+t)/2))]}zc.invert=function(e,t){return[e,2*Dn(Cm(t))-He]};function N0(){return R0(zc).scale(961/tr)}function R0(e){var t=hr(e),r=t.center,n=t.scale,o=t.translate,i=t.clipExtent,a=null,s,c,u;t.scale=function(p){return arguments.length?(n(p),f()):n()},t.translate=function(p){return arguments.length?(o(p),f()):o()},t.center=function(p){return arguments.length?(r(p),f()):r()},t.clipExtent=function(p){return arguments.length?(p==null?a=s=c=u=null:(a=+p[0][0],s=+p[0][1],c=+p[1][0],u=+p[1][1]),f()):a==null?null:[[a,s],[c,u]]};function f(){var p=ye*n(),l=t(EP(t.rotate()).invert([0,0]));return i(a==null?[[l[0]-p,l[1]-p],[l[0]+p,l[1]+p]]:e===zc?[[Math.max(l[0]-p,a),s],[Math.min(l[0]+p,c),u]]:[[a,Math.max(l[1]-p,s)],[c,Math.min(l[1]+p,u)]])}return f()}function Wm(e){return kc((He+e)/2)}function iT(e,t){var r=se(e),n=e===t?ae(e):ms(r/se(t))/ms(Wm(t)/Wm(e)),o=r*Om(Wm(e),n)/n;if(!n)return zc;function i(a,s){o>0?s<-He+ce&&(s=-He+ce):s>He-ce&&(s=He-ce);var c=o/Om(Wm(s),n);return[c*ae(n*a),o-c*se(n*a)]}return i.invert=function(a,s){var c=o-s,u=Pr(n)*st(a*a+c*c),f=dr(a,ve(c))*Pr(c);return c*n<0&&(f-=ye*Pr(a)*Pr(c)),[f/n,2*Dn(Om(o/u,1/n))-He]},i}function E0(){return Uc(iT).scale(109.5).parallels([30,30])}function Bc(e,t){return[e,t]}Bc.invert=Bc;function A0(){return hr(Bc).scale(152.63)}function aT(e,t){var r=se(e),n=e===t?ae(e):(r-se(t))/(t-e),o=r/n+e;if(ve(n)2?n[2]+90:90]):(n=r(),[n[0],n[1],n[2]-90])},r([0,0,90]).scale(159.155)}function Gt(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function Xf(e,t){switch(arguments.length){case 0:break;case 1:{typeof e=="function"?this.interpolator(e):this.range(e);break}default:{this.domain(e),typeof t=="function"?this.interpolator(t):this.range(t);break}}return this}var Zf=Symbol("implicit");function hs(){var e=new Ar,t=[],r=[],n=Zf;function o(i){let a=e.get(i);if(a===void 0){if(n!==Zf)return n;e.set(i,a=t.push(i)-1)}return r[a%r.length]}return o.domain=function(i){if(!arguments.length)return t.slice();t=[],e=new Ar;for(let a of i)e.has(a)||e.set(a,t.push(a)-1);return o},o.range=function(i){return arguments.length?(r=Array.from(i),o):r.slice()},o.unknown=function(i){return arguments.length?(n=i,o):n},o.copy=function(){return hs(t,r).unknown(n)},Gt.apply(o,arguments),o}function wa(){var e=hs().unknown(void 0),t=e.domain,r=e.range,n=0,o=1,i,a,s=!1,c=0,u=0,f=.5;delete e.unknown;function p(){var l=t().length,m=ot&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function K4(e,t,r){var n=e[0],o=e[1],i=t[0],a=t[1];return o2?q4:K4,c=u=null,p}function p(l){return l==null||isNaN(l=+l)?i:(c||(c=s(e.map(n),t,r)))(n(a(l)))}return p.invert=function(l){return a(o((u||(u=s(t,e.map(n),mt)))(l)))},p.domain=function(l){return arguments.length?(e=Array.from(l,Gc),f()):e.slice()},p.range=function(l){return arguments.length?(t=Array.from(l),f()):t.slice()},p.rangeRound=function(l){return t=Array.from(l),r=us,f()},p.clamp=function(l){return arguments.length?(a=l?!0:Xr,f()):a!==Xr},p.interpolate=function(l){return arguments.length?(r=l,f()):r},p.unknown=function(l){return arguments.length?(i=l,p):i},function(l,m){return n=l,o=m,f()}}function Qf(){return gs()(Xr,Xr)}function W0(e,t,r,n){var o=wc(e,t,r),i;switch(n=zo(n??",f"),n.type){case"s":{var a=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(i=t0(o,a))&&(n.precision=i),Tm(n,a)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(i=r0(o,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=i-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(i=e0(o))&&(n.precision=i-(n.type==="%")*2);break}}return $n(n)}function Ni(e){var t=e.domain;return e.ticks=function(r){var n=t();return uo(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var o=t();return W0(o[0],o[o.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),o=0,i=n.length-1,a=n[o],s=n[i],c,u,f=10;for(s0;){if(u=ts(a,s,r),u===c)return n[o]=a,n[i]=s,t(n);if(u>0)a=Math.floor(a/u)*u,s=Math.ceil(s/u)*u;else if(u<0)a=Math.ceil(a*u)/u,s=Math.floor(s*u)/u;else break;c=u}return e},e}function ys(){var e=Qf();return e.copy=function(){return Ho(e,ys())},Gt.apply(e,arguments),Ni(e)}function Jf(e){var t;function r(n){return n==null||isNaN(n=+n)?t:n}return r.invert=r,r.domain=r.range=function(n){return arguments.length?(e=Array.from(n,Gc),r):e.slice()},r.unknown=function(n){return arguments.length?(t=n,r):t},r.copy=function(){return Jf(e).unknown(t)},e=arguments.length?Array.from(e,Gc):[0,1],Ni(r)}function el(e,t){e=e.slice();var r=0,n=e.length-1,o=e[r],i=e[n],a;return iMath.pow(e,t)}function Z4(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function lT(e){return(t,r)=>-e(-t,r)}function X0(e){let t=e(uT,fT),r=t.domain,n=10,o,i;function a(){return o=Z4(n),i=X4(n),r()[0]<0?(o=lT(o),i=lT(i),e(H4,Y4)):e(uT,fT),t}return t.base=function(s){return arguments.length?(n=+s,a()):n},t.domain=function(s){return arguments.length?(r(s),a()):r()},t.ticks=s=>{let c=r(),u=c[0],f=c[c.length-1],p=f0){for(;l<=m;++l)for(h=1;hf)break;x.push(b)}}else for(;l<=m;++l)for(h=n-1;h>=1;--h)if(b=l>0?h/i(-l):h*i(l),!(bf)break;x.push(b)}x.length*2{if(s==null&&(s=10),c==null&&(c=n===10?"s":","),typeof c!="function"&&(!(n%1)&&(c=zo(c)).precision==null&&(c.trim=!0),c=$n(c)),s===1/0)return c;let u=Math.max(1,n*s/t.ticks().length);return f=>{let p=f/i(Math.round(o(f)));return p*nr(el(r(),{floor:s=>i(Math.floor(o(s))),ceil:s=>i(Math.ceil(o(s)))})),t}function tl(){let e=X0(gs()).domain([1,10]);return e.copy=()=>Ho(e,tl()).base(e.base()),Gt.apply(e,arguments),e}function pT(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function mT(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Z0(e){var t=1,r=e(pT(t),mT(t));return r.constant=function(n){return arguments.length?e(pT(t=+n),mT(t)):t},Ni(r)}function rl(){var e=Z0(gs());return e.copy=function(){return Ho(e,rl()).constant(e.constant())},Gt.apply(e,arguments)}function dT(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function Q4(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function J4(e){return e<0?-e*e:e*e}function Q0(e){var t=e(Xr,Xr),r=1;function n(){return r===1?e(Xr,Xr):r===.5?e(Q4,J4):e(dT(r),dT(1/r))}return t.exponent=function(o){return arguments.length?(r=+o,n()):r},Ni(t)}function nl(){var e=Q0(gs());return e.copy=function(){return Ho(e,nl()).exponent(e.exponent())},Gt.apply(e,arguments),e}function ol(){var e=[],t=[],r=[],n;function o(){var a=0,s=Math.max(1,t.length);for(r=new Array(s-1);++a0?r[s-1]:e[0],s(e(i=new Date(+i)),i),o.ceil=i=>(e(i=new Date(i-1)),t(i,1),e(i),i),o.round=i=>{let a=o(i),s=o.ceil(i);return i-a(t(i=new Date(+i),a==null?1:Math.floor(a)),i),o.range=(i,a,s)=>{let c=[];if(i=o.ceil(i),s=s==null?1:Math.floor(s),!(i0))return c;let u;do c.push(u=new Date(+i)),t(i,s),e(i);while(urt(a=>{if(a>=a)for(;e(a),!i(a);)a.setTime(a-1)},(a,s)=>{if(a>=a)if(s<0)for(;++s<=0;)for(;t(a,-1),!i(a););else for(;--s>=0;)for(;t(a,1),!i(a););}),r&&(o.count=(i,a)=>(J0.setTime(+i),ex.setTime(+a),e(J0),e(ex),Math.floor(r(J0,ex))),o.every=i=>(i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?o.filter(n?a=>n(a)%i===0:a=>o.count(0,a)%i===0):o)),o}var al=rt(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);al.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?rt(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):al);var Jde=al.range;var nr=rt(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),hT=nr.range;var Ri=rt(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),e7=Ri.range,Ei=rt(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),t7=Ei.range;var Ai=rt(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3-e.getMinutes()*6e4)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getHours()),r7=Ai.range,Fi=rt(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),n7=Fi.range;var Ln=rt(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/864e5,e=>e.getDate()-1),o7=Ln.range,ws=rt(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),i7=ws.range,Ss=rt(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),a7=Ss.range;function vs(e){return rt(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5)}var gn=vs(0),Sa=vs(1),Zm=vs(2),Qm=vs(3),Wo=vs(4),Jm=vs(5),ed=vs(6),yT=gn.range,s7=Sa.range,c7=Zm.range,u7=Qm.range,f7=Wo.range,l7=Jm.range,p7=ed.range;function Is(e){return rt(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/6048e5)}var yn=Is(0),va=Is(1),td=Is(2),rd=Is(3),Xo=Is(4),nd=Is(5),od=Is(6),bT=yn.range,m7=va.range,d7=td.range,h7=rd.range,g7=Xo.range,y7=nd.range,b7=od.range;var $i=rt(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth()),x7=$i.range,Di=rt(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth()),w7=Di.range;var Tr=rt(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());Tr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:rt(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});var S7=Tr.range,Mr=rt(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Mr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:rt(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});var v7=Mr.range;function wT(e,t,r,n,o,i){let a=[[nr,1,1e3],[nr,5,5*1e3],[nr,15,15*1e3],[nr,30,30*1e3],[i,1,6e4],[i,5,5*6e4],[i,15,15*6e4],[i,30,30*6e4],[o,1,36e5],[o,3,3*36e5],[o,6,6*36e5],[o,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[t,1,2592e6],[t,3,3*2592e6],[e,1,31536e6]];function s(u,f,p){let l=fy).right(a,l);if(m===a.length)return e.every(wc(u/31536e6,f/31536e6,p));if(m===0)return al.every(Math.max(wc(u,f,p),1));let[h,b]=a[l/a[m-1][2]53)return null;"w"in E||(E.w=1),"Z"in E?(oe=ix(ul(E.y,0,1)),be=oe.getUTCDay(),oe=be>4||be===0?va.ceil(oe):va(oe),oe=ws.offset(oe,(E.V-1)*7),E.y=oe.getUTCFullYear(),E.m=oe.getUTCMonth(),E.d=oe.getUTCDate()+(E.w+6)%7):(oe=ox(ul(E.y,0,1)),be=oe.getDay(),oe=be>4||be===0?Sa.ceil(oe):Sa(oe),oe=Ln.offset(oe,(E.V-1)*7),E.y=oe.getFullYear(),E.m=oe.getMonth(),E.d=oe.getDate()+(E.w+6)%7)}else("W"in E||"U"in E)&&("w"in E||(E.w="u"in E?E.u%7:"W"in E?1:0),be="Z"in E?ix(ul(E.y,0,1)).getUTCDay():ox(ul(E.y,0,1)).getDay(),E.m=0,E.d="W"in E?(E.w+6)%7+E.W*7-(be+5)%7:E.w+E.U*7-(be+6)%7);return"Z"in E?(E.H+=E.Z/100|0,E.M+=E.Z%100,ix(E)):ox(E)}}function T(M,$,H,E){for(var re=0,oe=$.length,be=H.length,we,Ve;re=be)return-1;if(we=$.charCodeAt(re++),we===37){if(we=$.charAt(re++),Ve=_[we in ST?$.charAt(re++):we],!Ve||(E=Ve(M,H,E))<0)return-1}else if(we!=H.charCodeAt(E++))return-1}return E}function P(M,$,H){var E=u.exec($.slice(H));return E?(M.p=f.get(E[0].toLowerCase()),H+E[0].length):-1}function R(M,$,H){var E=m.exec($.slice(H));return E?(M.w=h.get(E[0].toLowerCase()),H+E[0].length):-1}function C(M,$,H){var E=p.exec($.slice(H));return E?(M.w=l.get(E[0].toLowerCase()),H+E[0].length):-1}function N(M,$,H){var E=x.exec($.slice(H));return E?(M.m=g.get(E[0].toLowerCase()),H+E[0].length):-1}function G(M,$,H){var E=b.exec($.slice(H));return E?(M.m=y.get(E[0].toLowerCase()),H+E[0].length):-1}function D(M,$,H){return T(M,t,$,H)}function O(M,$,H){return T(M,r,$,H)}function z(M,$,H){return T(M,n,$,H)}function U(M){return a[M.getDay()]}function W(M){return i[M.getDay()]}function B(M){return c[M.getMonth()]}function q(M){return s[M.getMonth()]}function X(M){return o[+(M.getHours()>=12)]}function J(M){return 1+~~(M.getMonth()/3)}function A(M){return a[M.getUTCDay()]}function K(M){return i[M.getUTCDay()]}function Y(M){return c[M.getUTCMonth()]}function ee(M){return s[M.getUTCMonth()]}function Z(M){return o[+(M.getUTCHours()>=12)]}function ne(M){return 1+~~(M.getUTCMonth()/3)}return{format:function(M){var $=v(M+="",S);return $.toString=function(){return M},$},parse:function(M){var $=I(M+="",!1);return $.toString=function(){return M},$},utcFormat:function(M){var $=v(M+="",w);return $.toString=function(){return M},$},utcParse:function(M){var $=I(M+="",!0);return $.toString=function(){return M},$}}}var ST={"-":"",_:" ",0:"0"},or=/^\s*\d+/,_7=/^%/,P7=/[\\^$*+?|[\]().{}]/g;function je(e,t,r){var n=e<0?"-":"",o=(n?-e:e)+"",i=o.length;return n+(i[t.toLowerCase(),r]))}function M7(e,t,r){var n=or.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function C7(e,t,r){var n=or.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function O7(e,t,r){var n=or.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function k7(e,t,r){var n=or.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function N7(e,t,r){var n=or.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function vT(e,t,r){var n=or.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function IT(e,t,r){var n=or.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function R7(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function E7(e,t,r){var n=or.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function A7(e,t,r){var n=or.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function _T(e,t,r){var n=or.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function F7(e,t,r){var n=or.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function PT(e,t,r){var n=or.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function $7(e,t,r){var n=or.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function D7(e,t,r){var n=or.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function L7(e,t,r){var n=or.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function V7(e,t,r){var n=or.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function j7(e,t,r){var n=_7.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function U7(e,t,r){var n=or.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function z7(e,t,r){var n=or.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function TT(e,t){return je(e.getDate(),t,2)}function B7(e,t){return je(e.getHours(),t,2)}function G7(e,t){return je(e.getHours()%12||12,t,2)}function K7(e,t){return je(1+Ln.count(Tr(e),e),t,3)}function NT(e,t){return je(e.getMilliseconds(),t,3)}function q7(e,t){return NT(e,t)+"000"}function H7(e,t){return je(e.getMonth()+1,t,2)}function Y7(e,t){return je(e.getMinutes(),t,2)}function W7(e,t){return je(e.getSeconds(),t,2)}function X7(e){var t=e.getDay();return t===0?7:t}function Z7(e,t){return je(gn.count(Tr(e)-1,e),t,2)}function RT(e){var t=e.getDay();return t>=4||t===0?Wo(e):Wo.ceil(e)}function Q7(e,t){return e=RT(e),je(Wo.count(Tr(e),e)+(Tr(e).getDay()===4),t,2)}function J7(e){return e.getDay()}function eF(e,t){return je(Sa.count(Tr(e)-1,e),t,2)}function tF(e,t){return je(e.getFullYear()%100,t,2)}function rF(e,t){return e=RT(e),je(e.getFullYear()%100,t,2)}function nF(e,t){return je(e.getFullYear()%1e4,t,4)}function oF(e,t){var r=e.getDay();return e=r>=4||r===0?Wo(e):Wo.ceil(e),je(e.getFullYear()%1e4,t,4)}function iF(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+je(t/60|0,"0",2)+je(t%60,"0",2)}function MT(e,t){return je(e.getUTCDate(),t,2)}function aF(e,t){return je(e.getUTCHours(),t,2)}function sF(e,t){return je(e.getUTCHours()%12||12,t,2)}function cF(e,t){return je(1+ws.count(Mr(e),e),t,3)}function ET(e,t){return je(e.getUTCMilliseconds(),t,3)}function uF(e,t){return ET(e,t)+"000"}function fF(e,t){return je(e.getUTCMonth()+1,t,2)}function lF(e,t){return je(e.getUTCMinutes(),t,2)}function pF(e,t){return je(e.getUTCSeconds(),t,2)}function mF(e){var t=e.getUTCDay();return t===0?7:t}function dF(e,t){return je(yn.count(Mr(e)-1,e),t,2)}function AT(e){var t=e.getUTCDay();return t>=4||t===0?Xo(e):Xo.ceil(e)}function hF(e,t){return e=AT(e),je(Xo.count(Mr(e),e)+(Mr(e).getUTCDay()===4),t,2)}function gF(e){return e.getUTCDay()}function yF(e,t){return je(va.count(Mr(e)-1,e),t,2)}function bF(e,t){return je(e.getUTCFullYear()%100,t,2)}function xF(e,t){return e=AT(e),je(e.getUTCFullYear()%100,t,2)}function wF(e,t){return je(e.getUTCFullYear()%1e4,t,4)}function SF(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Xo(e):Xo.ceil(e),je(e.getUTCFullYear()%1e4,t,4)}function vF(){return"+0000"}function CT(){return"%"}function OT(e){return+e}function kT(e){return Math.floor(+e/1e3)}var Kc,qc,FT,Zo,$T;sx({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function sx(e){return Kc=ax(e),qc=Kc.format,FT=Kc.parse,Zo=Kc.utcFormat,$T=Kc.utcParse,Kc}function IF(e){return new Date(e)}function _F(e){return e instanceof Date?+e:+new Date(+e)}function id(e,t,r,n,o,i,a,s,c,u){var f=Qf(),p=f.invert,l=f.domain,m=u(".%L"),h=u(":%S"),b=u("%I:%M"),y=u("%I %p"),x=u("%a %d"),g=u("%b %d"),S=u("%B"),w=u("%Y");function _(v){return(c(v)Lb(e[e.length-1]);var pd=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(Q),md=ue(pd);var dd=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(Q),hd=ue(dd);var gd=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(Q),yd=ue(gd);var bd=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(Q),xd=ue(bd);var dl=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(Q),Hc=ue(dl);var wd=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(Q),Sd=ue(wd);var hl=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(Q),Yc=ue(hl);var vd=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(Q),Id=ue(vd);var _d=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(Q),Pd=ue(_d);var Td=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(Q),Md=ue(Td);var Cd=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(Q),Od=ue(Cd);var kd=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(Q),Nd=ue(kd);var Rd=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(Q),Ed=ue(Rd);var Ad=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(Q),Fd=ue(Ad);var $d=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(Q),Dd=ue($d);var Ld=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(Q),Vd=ue(Ld);var jd=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(Q),Ud=ue(jd);var zd=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(Q),Bd=ue(zd);var Gd=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(Q),Kd=ue(Gd);var qd=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(Q),Hd=ue(qd);var Yd=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(Q),Wd=ue(Yd);var Xd=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(Q),Zd=ue(Xd);var Qd=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(Q),Jd=ue(Qd);var eh=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(Q),th=ue(eh);var rh=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(Q),nh=ue(rh);var oh=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(Q),ih=ue(oh);var ah=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(Q),sh=ue(ah);function ch(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-e*(35.34-e*(2381.73-e*(6402.7-e*(7024.72-e*2710.57)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+e*(170.73+e*(52.82-e*(131.46-e*(176.58-e*67.37)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+e*(442.36-e*(2482.43-e*(6167.24-e*(6614.94-e*2475.67)))))))+")"}var uh=Mc(Dr(300,.5,0),Dr(-240,.5,1));var lh=Mc(Dr(-100,.75,.35),Dr(80,1.5,.8)),ph=Mc(Dr(260,.75,.35),Dr(80,1.5,.8)),fh=Dr();function mh(e){(e<0||e>1)&&(e-=Math.floor(e));var t=Math.abs(e-.5);return fh.h=360*e-100,fh.s=1.5-1.5*t,fh.l=.8-.9*t,fh+""}var dh=An(),PF=Math.PI/3,TF=Math.PI*2/3;function hh(e){var t;return e=(.5-e)*Math.PI,dh.r=255*(t=Math.sin(e))*t,dh.g=255*(t=Math.sin(e+PF))*t,dh.b=255*(t=Math.sin(e+TF))*t,dh+""}function gh(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+e*(1172.33-e*(10793.56-e*(33300.12-e*(38394.49-e*14825.05)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+e*(557.33+e*(1225.33-e*(3574.96-e*(1073.77+e*707.56)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+e*(3211.1-e*(15327.97-e*(27814-e*(22569.18-e*6838.66)))))))+")"}function yh(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}}var bh=yh(Q("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),xh=yh(Q("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),wh=yh(Q("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),Sh=yh(Q("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function Kt(e){return function(){return e}}var xx=Math.cos;var Wc=Math.min,gl=Math.sin,Ue=Math.sqrt,wx=1e-12,_s=Math.PI,_0e=_s/2,Xc=2*_s;function vh(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new ya(t)}var C0e=Array.prototype.slice;function Ih(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function DT(e){this._context=e}DT.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function Li(e){return new DT(e)}function _h(e){return e[0]}function Ph(e){return e[1]}function yl(e,t){var r=Kt(!0),n=null,o=Li,i=null,a=vh(s);e=typeof e=="function"?e:e===void 0?_h:Kt(e),t=typeof t=="function"?t:t===void 0?Ph:Kt(t);function s(c){var u,f=(c=Ih(c)).length,p,l=!1,m;for(n==null&&(i=o(m=a())),u=0;u<=f;++u)!(u=m;--h)s.point(S[h],w[h]);s.lineEnd(),s.areaEnd()}x&&(S[l]=+e(y,l,p),w[l]=+t(y,l,p),s.point(n?+n(y,l,p):S[l],r?+r(y,l,p):w[l]))}if(g)return s=null,g+""||null}function f(){return yl().defined(o).curve(a).context(i)}return u.x=function(p){return arguments.length?(e=typeof p=="function"?p:Kt(+p),n=null,u):e},u.x0=function(p){return arguments.length?(e=typeof p=="function"?p:Kt(+p),u):e},u.x1=function(p){return arguments.length?(n=p==null?null:typeof p=="function"?p:Kt(+p),u):n},u.y=function(p){return arguments.length?(t=typeof p=="function"?p:Kt(+p),r=null,u):t},u.y0=function(p){return arguments.length?(t=typeof p=="function"?p:Kt(+p),u):t},u.y1=function(p){return arguments.length?(r=p==null?null:typeof p=="function"?p:Kt(+p),u):r},u.lineX0=u.lineY0=function(){return f().x(e).y(t)},u.lineY1=function(){return f().x(e).y(r)},u.lineX1=function(){return f().x(n).y(t)},u.defined=function(p){return arguments.length?(o=typeof p=="function"?p:Kt(!!p),u):o},u.curve=function(p){return arguments.length?(a=p,i!=null&&(s=a(i)),u):a},u.context=function(p){return arguments.length?(p==null?i=s=null:s=a(i=p),u):i},u}var Th=class{constructor(t,r){this._context=t,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,r){switch(t=+t,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,r):this._context.moveTo(t,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,r,t,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,t,this._y0,t,r);break}}this._x0=t,this._y0=r}};function vx(e){return new Th(e,!0)}function Ix(e){return new Th(e,!1)}var MF=Ue(3),bl={draw(e,t){let r=Ue(t+Wc(t/28,.75))*.59436,n=r/2,o=n*MF;e.moveTo(0,r),e.lineTo(0,-r),e.moveTo(-o,-n),e.lineTo(o,n),e.moveTo(-o,n),e.lineTo(o,-n)}};var Vi={draw(e,t){let r=Ue(t/_s);e.moveTo(r,0),e.arc(0,0,r,0,Xc)}};var xl={draw(e,t){let r=Ue(t/5)/2;e.moveTo(-3*r,-r),e.lineTo(-r,-r),e.lineTo(-r,-3*r),e.lineTo(r,-3*r),e.lineTo(r,-r),e.lineTo(3*r,-r),e.lineTo(3*r,r),e.lineTo(r,r),e.lineTo(r,3*r),e.lineTo(-r,3*r),e.lineTo(-r,r),e.lineTo(-3*r,r),e.closePath()}};var LT=Ue(1/3),CF=LT*2,wl={draw(e,t){let r=Ue(t/CF),n=r*LT;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}};var Sl={draw(e,t){let r=Ue(t)*.62625;e.moveTo(0,-r),e.lineTo(r,0),e.lineTo(0,r),e.lineTo(-r,0),e.closePath()}};var vl={draw(e,t){let r=Ue(t-Wc(t/7,2))*.87559;e.moveTo(-r,0),e.lineTo(r,0),e.moveTo(0,r),e.lineTo(0,-r)}};var Il={draw(e,t){let r=Ue(t),n=-r/2;e.rect(n,n,r,r)}};var _l={draw(e,t){let r=Ue(t)*.4431;e.moveTo(r,r),e.lineTo(r,-r),e.lineTo(-r,-r),e.lineTo(-r,r),e.closePath()}};var OF=.8908130915292852,VT=gl(_s/10)/gl(7*_s/10),kF=gl(Xc/10)*VT,NF=-xx(Xc/10)*VT,Pl={draw(e,t){let r=Ue(t*OF),n=kF*r,o=NF*r;e.moveTo(0,-r),e.lineTo(n,o);for(let i=1;i<5;++i){let a=Xc*i/5,s=xx(a),c=gl(a);e.lineTo(c*r,-s*r),e.lineTo(s*n-c*o,c*n+s*o)}e.closePath()}};var _x=Ue(3),Tl={draw(e,t){let r=-Ue(t/(_x*3));e.moveTo(0,r*2),e.lineTo(-_x*r,-r),e.lineTo(_x*r,-r),e.closePath()}};var RF=Ue(3),Ml={draw(e,t){let r=Ue(t)*.6824,n=r/2,o=r*RF/2;e.moveTo(0,-r),e.lineTo(o,n),e.lineTo(-o,n),e.closePath()}};var Vn=-.5,jn=Ue(3)/2,Px=1/Ue(12),EF=(Px/2+1)*3,Cl={draw(e,t){let r=Ue(t/EF),n=r/2,o=r*Px,i=n,a=r*Px+r,s=-i,c=a;e.moveTo(n,o),e.lineTo(i,a),e.lineTo(s,c),e.lineTo(Vn*n-jn*o,jn*n+Vn*o),e.lineTo(Vn*i-jn*a,jn*i+Vn*a),e.lineTo(Vn*s-jn*c,jn*s+Vn*c),e.lineTo(Vn*n+jn*o,Vn*o-jn*n),e.lineTo(Vn*i+jn*a,Vn*a-jn*i),e.lineTo(Vn*s+jn*c,Vn*c-jn*s),e.closePath()}};var Zc={draw(e,t){let r=Ue(t-Wc(t/6,1.7))*.6189;e.moveTo(-r,-r),e.lineTo(r,r),e.moveTo(-r,r),e.lineTo(r,-r)}};var Mh=[Vi,xl,wl,Il,Pl,Tl,Cl],Tx=[Vi,vl,Zc,Ml,bl,_l,Sl];function Un(){}function Qc(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function Ol(e){this._context=e}Ol.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Qc(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Qc(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function Mx(e){return new Ol(e)}function jT(e){this._context=e}jT.prototype={areaStart:Un,areaEnd:Un,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:Qc(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function Cx(e){return new jT(e)}function UT(e){this._context=e}UT.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,n=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:Qc(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function Ox(e){return new UT(e)}function zT(e,t){this._basis=new Ol(e),this._beta=t}zT.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var e=this._x,t=this._y,r=e.length-1;if(r>0)for(var n=e[0],o=t[0],i=e[r]-n,a=t[r]-o,s=-1,c;++s<=r;)c=s/r,this._basis.point(this._beta*e[s]+(1-this._beta)*(n+c*i),this._beta*t[s]+(1-this._beta)*(o+c*a));this._x=this._y=null,this._basis.lineEnd()},point:function(e,t){this._x.push(+e),this._y.push(+t)}};var kx=(function e(t){function r(n){return t===1?new Ol(n):new zT(n,t)}return r.beta=function(n){return e(+n)},r})(.85);function Jc(e,t,r){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-r),e._x2,e._y2)}function Ch(e,t){this._context=e,this._k=(1-t)/6}Ch.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Jc(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:Jc(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Nx=(function e(t){function r(n){return new Ch(n,t)}return r.tension=function(n){return e(+n)},r})(0);function Oh(e,t){this._context=e,this._k=(1-t)/6}Oh.prototype={areaStart:Un,areaEnd:Un,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:Jc(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Rx=(function e(t){function r(n){return new Oh(n,t)}return r.tension=function(n){return e(+n)},r})(0);function kh(e,t){this._context=e,this._k=(1-t)/6}kh.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Jc(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Ex=(function e(t){function r(n){return new kh(n,t)}return r.tension=function(n){return e(+n)},r})(0);function kl(e,t,r){var n=e._x1,o=e._y1,i=e._x2,a=e._y2;if(e._l01_a>wx){var s=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,c=3*e._l01_a*(e._l01_a+e._l12_a);n=(n*s-e._x0*e._l12_2a+e._x2*e._l01_2a)/c,o=(o*s-e._y0*e._l12_2a+e._y2*e._l01_2a)/c}if(e._l23_a>wx){var u=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,f=3*e._l23_a*(e._l23_a+e._l12_a);i=(i*u+e._x1*e._l23_2a-t*e._l12_2a)/f,a=(a*u+e._y1*e._l23_2a-r*e._l12_2a)/f}e._context.bezierCurveTo(n,o,i,a,e._x2,e._y2)}function BT(e,t){this._context=e,this._alpha=t}BT.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:kl(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Ax=(function e(t){function r(n){return t?new BT(n,t):new Ch(n,0)}return r.alpha=function(n){return e(+n)},r})(.5);function GT(e,t){this._context=e,this._alpha=t}GT.prototype={areaStart:Un,areaEnd:Un,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:kl(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Fx=(function e(t){function r(n){return t?new GT(n,t):new Oh(n,0)}return r.alpha=function(n){return e(+n)},r})(.5);function KT(e,t){this._context=e,this._alpha=t}KT.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:kl(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var $x=(function e(t){function r(n){return t?new KT(n,t):new kh(n,0)}return r.alpha=function(n){return e(+n)},r})(.5);function qT(e){this._context=e}qT.prototype={areaStart:Un,areaEnd:Un,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function Dx(e){return new qT(e)}function HT(e){return e<0?-1:1}function YT(e,t,r){var n=e._x1-e._x0,o=t-e._x1,i=(e._y1-e._y0)/(n||o<0&&-0),a=(r-e._y1)/(o||n<0&&-0),s=(i*o+a*n)/(n+o);return(HT(i)+HT(a))*Math.min(Math.abs(i),Math.abs(a),.5*Math.abs(s))||0}function WT(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function Lx(e,t,r){var n=e._x0,o=e._y0,i=e._x1,a=e._y1,s=(i-n)/3;e._context.bezierCurveTo(n+s,o+s*t,i-s,a-s*r,i,a)}function Nh(e){this._context=e}Nh.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Lx(this,this._t0,WT(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,Lx(this,WT(this,r=YT(this,e,t)),r);break;default:Lx(this,this._t0,r=YT(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function XT(e){this._context=new ZT(e)}(XT.prototype=Object.create(Nh.prototype)).point=function(e,t){Nh.prototype.point.call(this,t,e)};function ZT(e){this._context=e}ZT.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,o,i){this._context.bezierCurveTo(t,e,n,r,i,o)}};function Vx(e){return new Nh(e)}function jx(e){return new XT(e)}function JT(e){this._context=e}JT.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),r===2)this._context.lineTo(e[1],t[1]);else for(var n=QT(e),o=QT(t),i=0,a=1;a=0;--t)o[t]=(a[t]-o[t+1])/i[t];for(i[r-1]=(e[r]+o[r-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t}};function zx(e){return new Rh(e,.5)}function Bx(e){return new Rh(e,0)}function Gx(e){return new Rh(e,1)}function Ia(e,t,r){this.k=e,this.x=t,this.y=r}Ia.prototype={constructor:Ia,scale:function(e){return e===1?this:new Ia(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Ia(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Kx=new Ia(1,0,0);qx.prototype=Ia.prototype;function qx(e){for(;!e.__zoom;)if(!(e=e.parentNode))return Kx;return e.__zoom}function zn(e){return e!=null&&!Number.isNaN(e)}function Cr(e,t){return+zn(t)-+zn(e)||vt(e,t)}function Ps(e,t){return+zn(t)-+zn(e)||Rn(e,t)}function Nl(e){return e!=null&&`${e}`!=""}function Hx(e){return isFinite(e)?e:NaN}function Ts(e){return e>0&&isFinite(e)?e:NaN}function eu(e){return e<0&&isFinite(e)?e:NaN}function Eh(e,t){if(e instanceof Date||(e=new Date(+e)),isNaN(e))return typeof t=="function"?t(e):t;let r=e.getUTCHours(),n=e.getUTCMinutes(),o=e.getUTCSeconds(),i=e.getUTCMilliseconds();return`${AF(e.getUTCFullYear(),4)}-${ji(e.getUTCMonth()+1,2)}-${ji(e.getUTCDate(),2)}${r||n||o||i?`T${ji(r,2)}:${ji(n,2)}${o||i?`:${ji(o,2)}${i?`.${ji(i,3)}`:""}`:""}Z`:""}`}function AF(e){return e<0?`-${ji(-e,6)}`:e>9999?`+${ji(e,6)}`:ji(e,4)}function ji(e,t){return`${e}`.padStart(t,"0")}var FF=/^(?:[-+]\d{2})?\d{4}(?:-\d{2}(?:-\d{2})?)?(?:T\d{2}:\d{2}(?::\d{2}(?:\.\d{3})?)?(?:Z|[-+]\d{2}:?\d{2})?)?$/;function Rl(e,t){return FF.test(e+="")?new Date(e):typeof t=="function"?t(e):t}function Ui(e){if(e==null)return;let t=e[0],r=e[e.length-1];return Rn(t,r)}var ru=1e3,Pa=ru*60,Ta=Pa*60,Jo=Ta*24,Qo=Jo*7,Ms=Jo*30,_a=Jo*365,Yx=[["millisecond",1],["2 milliseconds",2],["5 milliseconds",5],["10 milliseconds",10],["20 milliseconds",20],["50 milliseconds",50],["100 milliseconds",100],["200 milliseconds",200],["500 milliseconds",500],["second",ru],["5 seconds",5*ru],["15 seconds",15*ru],["30 seconds",30*ru],["minute",Pa],["5 minutes",5*Pa],["15 minutes",15*Pa],["30 minutes",30*Pa],["hour",Ta],["3 hours",3*Ta],["6 hours",6*Ta],["12 hours",12*Ta],["day",Jo],["2 days",2*Jo],["week",Qo],["2 weeks",2*Qo],["month",Ms],["3 months",3*Ms],["6 months",6*Ms],["year",_a],["2 years",2*_a],["5 years",5*_a],["10 years",10*_a],["20 years",20*_a],["50 years",50*_a],["100 years",100*_a]],Wx=new Map([["second",ru],["minute",Pa],["hour",Ta],["day",Jo],["monday",Qo],["tuesday",Qo],["wednesday",Qo],["thursday",Qo],["friday",Qo],["saturday",Qo],["sunday",Qo],["week",Qo],["month",Ms],["year",_a]]),tM=new Map([["second",nr],["minute",Ri],["hour",Ai],["day",Ln],["monday",Sa],["tuesday",Zm],["wednesday",Qm],["thursday",Wo],["friday",Jm],["saturday",ed],["sunday",gn],["week",gn],["month",$i],["year",Tr]]),Xx=new Map([["second",nr],["minute",Ei],["hour",Fi],["day",Ss],["monday",va],["tuesday",td],["wednesday",rd],["thursday",Xo],["friday",nd],["saturday",od],["sunday",yn],["week",yn],["month",Di],["year",Mr]]),nu=Symbol("intervalDuration"),Fh=Symbol("intervalType");for(let[e,t]of tM)t[nu]=Wx.get(e),t[Fh]="time";for(let[e,t]of Xx)t[nu]=Wx.get(e),t[Fh]="utc";var El=[["year",Mr,"utc"],["month",Di,"utc"],["day",Ss,"utc",6*Ms],["hour",Fi,"utc",3*Jo],["minute",Ei,"utc",6*Ta],["second",nr,"utc",30*Pa]],Ah=[["year",Tr,"time"],["month",$i,"time"],["day",Ln,"time",6*Ms],["hour",Ai,"time",3*Jo],["minute",Ri,"time",6*Ta],["second",nr,"time",30*Pa]],$F=[El[0],Ah[0],El[1],Ah[1],El[2],Ah[2],...El.slice(3)];function rM(e){let t=`${e}`.toLowerCase();t.endsWith("s")&&(t=t.slice(0,-1));let r=1,n=/^(?:(\d+)\s+)/.exec(t);switch(n&&(t=t.slice(n[0].length),r=+n[1]),t){case"quarter":t="month",r*=3;break;case"half":t="month",r*=6;break}let o=Xx.get(t);if(!o)throw new Error(`unknown interval: ${e}`);if(r>1&&!o.every)throw new Error(`non-periodic interval: ${t}`);return[t,r]}function Zx(e){return nM(rM(e),"time")}function Al(e){return nM(rM(e),"utc")}function nM([e,t],r){let n=(r==="time"?tM:Xx).get(e);return t>1&&(n=n.every(t),n[nu]=Wx.get(e)*t,n[Fh]=r),n}function Qx(e,t){if(!(t>1))return;let r=e[nu];if(!Yx.some(([,o])=>o===r)||r%Jo===0&&JoMath.log(o)).center(Yx,Math.log(r*t))];return(e[Fh]==="time"?Zx:Al)(n)}function eM(e,t,r){let n=t==="time"?qc:Zo;if(r==null)return n(e==="year"?"%Y":e==="month"?"%Y-%m":e==="day"?"%Y-%m-%d":e==="hour"||e==="minute"?"%Y-%m-%dT%H:%M":e==="second"?"%Y-%m-%dT%H:%M:%S":"%Y-%m-%dT%H:%M:%S.%L");let o=DF(r);switch(e){case"millisecond":return tu(n(".%L"),n(":%M:%S"),o);case"second":return tu(n(":%S"),n("%-I:%M"),o);case"minute":return tu(n("%-I:%M"),n("%p"),o);case"hour":return tu(n("%-I %p"),n("%b %-d"),o);case"day":return tu(n("%-d"),n("%b"),o);case"month":return tu(n("%b"),n("%Y"),o);case"year":return n("%Y")}throw new Error("unable to format time ticks")}function DF(e){return e==="left"||e==="right"?(t,r)=>` +var k6=Object.defineProperty;var Ga=(e,t)=>{for(var r in t)k6(e,r,{get:t[r],enumerable:!0})};var vr={};Ga(vr,{HasPropertyKey:()=>fp,IsArray:()=>Nt,IsAsyncIterator:()=>pb,IsBigInt:()=>ju,IsBoolean:()=>pi,IsDate:()=>Ka,IsFunction:()=>mb,IsIterator:()=>db,IsNull:()=>hb,IsNumber:()=>sn,IsObject:()=>Ke,IsRegExp:()=>Uu,IsString:()=>tt,IsSymbol:()=>gb,IsUint8Array:()=>mi,IsUndefined:()=>Rt});function fp(e,t){return t in e}function pb(e){return Ke(e)&&!Nt(e)&&!mi(e)&&Symbol.asyncIterator in e}function Nt(e){return Array.isArray(e)}function ju(e){return typeof e=="bigint"}function pi(e){return typeof e=="boolean"}function Ka(e){return e instanceof globalThis.Date}function mb(e){return typeof e=="function"}function db(e){return Ke(e)&&!Nt(e)&&!mi(e)&&Symbol.iterator in e}function hb(e){return e===null}function sn(e){return typeof e=="number"}function Ke(e){return typeof e=="object"&&e!==null}function Uu(e){return e instanceof globalThis.RegExp}function tt(e){return typeof e=="string"}function gb(e){return typeof e=="symbol"}function mi(e){return e instanceof globalThis.Uint8Array}function Rt(e){return e===void 0}function N6(e){return e.map(t=>lp(t))}function R6(e){return new Date(e.getTime())}function E6(e){return new Uint8Array(e)}function A6(e){return new RegExp(e.source,e.flags)}function F6(e){let t={};for(let r of Object.getOwnPropertyNames(e))t[r]=lp(e[r]);for(let r of Object.getOwnPropertySymbols(e))t[r]=lp(e[r]);return t}function lp(e){return Nt(e)?N6(e):Ka(e)?R6(e):mi(e)?E6(e):Uu(e)?A6(e):Ke(e)?F6(e):e}function ut(e){return lp(e)}function Ys(e,t){return t===void 0?ut(e):ut({...t,...e})}function pp(e){return we(e)&&globalThis.Symbol.asyncIterator in e}function mp(e){return we(e)&&globalThis.Symbol.iterator in e}function bb(e){return we(e)&&(globalThis.Object.getPrototypeOf(e)===Object.prototype||globalThis.Object.getPrototypeOf(e)===null)}function dp(e){return e instanceof globalThis.Promise}function Ar(e){return e instanceof Date&&globalThis.Number.isFinite(e.getTime())}function y2(e){return e instanceof globalThis.Map}function x2(e){return e instanceof globalThis.Set}function Pn(e){return globalThis.ArrayBuffer.isView(e)}function Ws(e){return e instanceof globalThis.Uint8Array}function pe(e,t){return t in e}function we(e){return e!==null&&typeof e=="object"}function de(e){return globalThis.Array.isArray(e)&&!globalThis.ArrayBuffer.isView(e)}function ft(e){return e===void 0}function di(e){return e===null}function Eo(e){return typeof e=="boolean"}function lt(e){return typeof e=="number"}function hp(e){return globalThis.Number.isInteger(e)}function Yn(e){return typeof e=="bigint"}function Be(e){return typeof e=="string"}function ea(e){return typeof e=="function"}function hi(e){return typeof e=="symbol"}function cn(e){return Yn(e)||Eo(e)||di(e)||lt(e)||Be(e)||hi(e)||ft(e)}var zt;(function(e){e.InstanceMode="default",e.ExactOptionalPropertyTypes=!1,e.AllowArrayObject=!1,e.AllowNaN=!1,e.AllowNullVoid=!1;function t(a,s){return e.ExactOptionalPropertyTypes?s in a:a[s]!==void 0}e.IsExactOptionalProperty=t;function r(a){let s=we(a);return e.AllowArrayObject?s:s&&!de(a)}e.IsObjectLike=r;function n(a){return r(a)&&!(a instanceof Date)&&!(a instanceof Uint8Array)}e.IsRecordLike=n;function o(a){return e.AllowNaN?lt(a):Number.isFinite(a)}e.IsNumberLike=o;function i(a){let s=ft(a);return e.AllowNullVoid?s||a===null:s}e.IsVoidLike=i})(zt||(zt={}));function $6(e){return globalThis.Object.freeze(e).map(t=>Bu(t))}function D6(e){let t={};for(let r of Object.getOwnPropertyNames(e))t[r]=Bu(e[r]);for(let r of Object.getOwnPropertySymbols(e))t[r]=Bu(e[r]);return globalThis.Object.freeze(t)}function Bu(e){return Nt(e)?$6(e):Ka(e)?e:mi(e)?e:Uu(e)?e:Ke(e)?D6(e):e}function j(e,t){let r=t!==void 0?{...t,...e}:e;switch(zt.InstanceMode){case"freeze":return Bu(r);case"clone":return ut(r);default:return r}}var be=class extends Error{constructor(t){super(t)}};var gt=Symbol.for("TypeBox.Transform"),Wn=Symbol.for("TypeBox.Readonly"),hr=Symbol.for("TypeBox.Optional"),Mn=Symbol.for("TypeBox.Hint"),U=Symbol.for("TypeBox.Kind");function Xs(e){return Ke(e)&&e[Wn]==="Readonly"}function qr(e){return Ke(e)&&e[hr]==="Optional"}function yb(e){return Ce(e,"Any")}function xb(e){return Ce(e,"Argument")}function Xn(e){return Ce(e,"Array")}function qa(e){return Ce(e,"AsyncIterator")}function Ha(e){return Ce(e,"BigInt")}function gi(e){return Ce(e,"Boolean")}function Zn(e){return Ce(e,"Computed")}function Qn(e){return Ce(e,"Constructor")}function L6(e){return Ce(e,"Date")}function Jn(e){return Ce(e,"Function")}function eo(e){return Ce(e,"Integer")}function wt(e){return Ce(e,"Intersect")}function Ya(e){return Ce(e,"Iterator")}function Ce(e,t){return Ke(e)&&U in e&&e[U]===t}function gp(e){return pi(e)||sn(e)||tt(e)}function un(e){return Ce(e,"Literal")}function fn(e){return Ce(e,"MappedKey")}function pt(e){return Ce(e,"MappedResult")}function ta(e){return Ce(e,"Never")}function V6(e){return Ce(e,"Not")}function Gu(e){return Ce(e,"Null")}function to(e){return Ce(e,"Number")}function Et(e){return Ce(e,"Object")}function Wa(e){return Ce(e,"Promise")}function Xa(e){return Ce(e,"Record")}function Mt(e){return Ce(e,"Ref")}function wb(e){return Ce(e,"RegExp")}function bi(e){return Ce(e,"String")}function Ku(e){return Ce(e,"Symbol")}function ln(e){return Ce(e,"TemplateLiteral")}function z6(e){return Ce(e,"This")}function Fe(e){return Ke(e)&> in e}function pn(e){return Ce(e,"Tuple")}function yi(e){return Ce(e,"Undefined")}function Ne(e){return Ce(e,"Union")}function j6(e){return Ce(e,"Uint8Array")}function U6(e){return Ce(e,"Unknown")}function B6(e){return Ce(e,"Unsafe")}function G6(e){return Ce(e,"Void")}function ra(e){return Ke(e)&&U in e&&tt(e[U])}function bt(e){return yb(e)||xb(e)||Xn(e)||gi(e)||Ha(e)||qa(e)||Zn(e)||Qn(e)||L6(e)||Jn(e)||eo(e)||wt(e)||Ya(e)||un(e)||fn(e)||pt(e)||ta(e)||V6(e)||Gu(e)||to(e)||Et(e)||Wa(e)||Xa(e)||Mt(e)||wb(e)||bi(e)||Ku(e)||ln(e)||z6(e)||pn(e)||yi(e)||Ne(e)||j6(e)||U6(e)||B6(e)||G6(e)||ra(e)}var k={};Ga(k,{IsAny:()=>I2,IsArgument:()=>_2,IsArray:()=>P2,IsAsyncIterator:()=>M2,IsBigInt:()=>T2,IsBoolean:()=>O2,IsComputed:()=>C2,IsConstructor:()=>k2,IsDate:()=>N2,IsFunction:()=>R2,IsImport:()=>X6,IsInteger:()=>E2,IsIntersect:()=>A2,IsIterator:()=>F2,IsKind:()=>sS,IsKindOf:()=>Pe,IsLiteral:()=>Hu,IsLiteralBoolean:()=>Z6,IsLiteralNumber:()=>D2,IsLiteralString:()=>$2,IsLiteralValue:()=>L2,IsMappedKey:()=>V2,IsMappedResult:()=>z2,IsNever:()=>j2,IsNot:()=>U2,IsNull:()=>B2,IsNumber:()=>G2,IsObject:()=>K2,IsOptional:()=>W6,IsPromise:()=>q2,IsProperties:()=>bp,IsReadonly:()=>Y6,IsRecord:()=>H2,IsRecursive:()=>Q6,IsRef:()=>Y2,IsRegExp:()=>W2,IsSchema:()=>rr,IsString:()=>X2,IsSymbol:()=>Z2,IsTemplateLiteral:()=>Q2,IsThis:()=>J2,IsTransform:()=>eS,IsTuple:()=>tS,IsUint8Array:()=>nS,IsUndefined:()=>rS,IsUnion:()=>_b,IsUnionLiteral:()=>J6,IsUnknown:()=>oS,IsUnsafe:()=>iS,IsVoid:()=>aS,TypeGuardUnknownTypeError:()=>Sb});var Sb=class extends be{},K6=["Argument","Any","Array","AsyncIterator","BigInt","Boolean","Computed","Constructor","Date","Enum","Function","Integer","Intersect","Iterator","Literal","MappedKey","MappedResult","Not","Null","Number","Object","Promise","Record","Ref","RegExp","String","Symbol","TemplateLiteral","This","Tuple","Undefined","Union","Uint8Array","Unknown","Void"];function w2(e){try{return new RegExp(e),!0}catch{return!1}}function vb(e){if(!tt(e))return!1;for(let t=0;t=7&&r<=13||r===27||r===127)return!1}return!0}function S2(e){return Ib(e)||rr(e)}function qu(e){return Rt(e)||ju(e)}function rt(e){return Rt(e)||sn(e)}function Ib(e){return Rt(e)||pi(e)}function qe(e){return Rt(e)||tt(e)}function q6(e){return Rt(e)||tt(e)&&vb(e)&&w2(e)}function H6(e){return Rt(e)||tt(e)&&vb(e)}function v2(e){return Rt(e)||rr(e)}function Y6(e){return Ke(e)&&e[Wn]==="Readonly"}function W6(e){return Ke(e)&&e[hr]==="Optional"}function I2(e){return Pe(e,"Any")&&qe(e.$id)}function _2(e){return Pe(e,"Argument")&&sn(e.index)}function P2(e){return Pe(e,"Array")&&e.type==="array"&&qe(e.$id)&&rr(e.items)&&rt(e.minItems)&&rt(e.maxItems)&&Ib(e.uniqueItems)&&v2(e.contains)&&rt(e.minContains)&&rt(e.maxContains)}function M2(e){return Pe(e,"AsyncIterator")&&e.type==="AsyncIterator"&&qe(e.$id)&&rr(e.items)}function T2(e){return Pe(e,"BigInt")&&e.type==="bigint"&&qe(e.$id)&&qu(e.exclusiveMaximum)&&qu(e.exclusiveMinimum)&&qu(e.maximum)&&qu(e.minimum)&&qu(e.multipleOf)}function O2(e){return Pe(e,"Boolean")&&e.type==="boolean"&&qe(e.$id)}function C2(e){return Pe(e,"Computed")&&tt(e.target)&&Nt(e.parameters)&&e.parameters.every(t=>rr(t))}function k2(e){return Pe(e,"Constructor")&&e.type==="Constructor"&&qe(e.$id)&&Nt(e.parameters)&&e.parameters.every(t=>rr(t))&&rr(e.returns)}function N2(e){return Pe(e,"Date")&&e.type==="Date"&&qe(e.$id)&&rt(e.exclusiveMaximumTimestamp)&&rt(e.exclusiveMinimumTimestamp)&&rt(e.maximumTimestamp)&&rt(e.minimumTimestamp)&&rt(e.multipleOfTimestamp)}function R2(e){return Pe(e,"Function")&&e.type==="Function"&&qe(e.$id)&&Nt(e.parameters)&&e.parameters.every(t=>rr(t))&&rr(e.returns)}function X6(e){return Pe(e,"Import")&&fp(e,"$defs")&&Ke(e.$defs)&&bp(e.$defs)&&fp(e,"$ref")&&tt(e.$ref)&&e.$ref in e.$defs}function E2(e){return Pe(e,"Integer")&&e.type==="integer"&&qe(e.$id)&&rt(e.exclusiveMaximum)&&rt(e.exclusiveMinimum)&&rt(e.maximum)&&rt(e.minimum)&&rt(e.multipleOf)}function bp(e){return Ke(e)&&Object.entries(e).every(([t,r])=>vb(t)&&rr(r))}function A2(e){return Pe(e,"Intersect")&&!(tt(e.type)&&e.type!=="object")&&Nt(e.allOf)&&e.allOf.every(t=>rr(t)&&!eS(t))&&qe(e.type)&&(Ib(e.unevaluatedProperties)||v2(e.unevaluatedProperties))&&qe(e.$id)}function F2(e){return Pe(e,"Iterator")&&e.type==="Iterator"&&qe(e.$id)&&rr(e.items)}function Pe(e,t){return Ke(e)&&U in e&&e[U]===t}function $2(e){return Hu(e)&&tt(e.const)}function D2(e){return Hu(e)&&sn(e.const)}function Z6(e){return Hu(e)&&pi(e.const)}function Hu(e){return Pe(e,"Literal")&&qe(e.$id)&&L2(e.const)}function L2(e){return pi(e)||sn(e)||tt(e)}function V2(e){return Pe(e,"MappedKey")&&Nt(e.keys)&&e.keys.every(t=>sn(t)||tt(t))}function z2(e){return Pe(e,"MappedResult")&&bp(e.properties)}function j2(e){return Pe(e,"Never")&&Ke(e.not)&&Object.getOwnPropertyNames(e.not).length===0}function U2(e){return Pe(e,"Not")&&rr(e.not)}function B2(e){return Pe(e,"Null")&&e.type==="null"&&qe(e.$id)}function G2(e){return Pe(e,"Number")&&e.type==="number"&&qe(e.$id)&&rt(e.exclusiveMaximum)&&rt(e.exclusiveMinimum)&&rt(e.maximum)&&rt(e.minimum)&&rt(e.multipleOf)}function K2(e){return Pe(e,"Object")&&e.type==="object"&&qe(e.$id)&&bp(e.properties)&&S2(e.additionalProperties)&&rt(e.minProperties)&&rt(e.maxProperties)}function q2(e){return Pe(e,"Promise")&&e.type==="Promise"&&qe(e.$id)&&rr(e.item)}function H2(e){return Pe(e,"Record")&&e.type==="object"&&qe(e.$id)&&S2(e.additionalProperties)&&Ke(e.patternProperties)&&(t=>{let r=Object.getOwnPropertyNames(t.patternProperties);return r.length===1&&w2(r[0])&&Ke(t.patternProperties)&&rr(t.patternProperties[r[0]])})(e)}function Q6(e){return Ke(e)&&Mn in e&&e[Mn]==="Recursive"}function Y2(e){return Pe(e,"Ref")&&qe(e.$id)&&tt(e.$ref)}function W2(e){return Pe(e,"RegExp")&&qe(e.$id)&&tt(e.source)&&tt(e.flags)&&rt(e.maxLength)&&rt(e.minLength)}function X2(e){return Pe(e,"String")&&e.type==="string"&&qe(e.$id)&&rt(e.minLength)&&rt(e.maxLength)&&q6(e.pattern)&&H6(e.format)}function Z2(e){return Pe(e,"Symbol")&&e.type==="symbol"&&qe(e.$id)}function Q2(e){return Pe(e,"TemplateLiteral")&&e.type==="string"&&tt(e.pattern)&&e.pattern[0]==="^"&&e.pattern[e.pattern.length-1]==="$"}function J2(e){return Pe(e,"This")&&qe(e.$id)&&tt(e.$ref)}function eS(e){return Ke(e)&> in e}function tS(e){return Pe(e,"Tuple")&&e.type==="array"&&qe(e.$id)&&sn(e.minItems)&&sn(e.maxItems)&&e.minItems===e.maxItems&&(Rt(e.items)&&Rt(e.additionalItems)&&e.minItems===0||Nt(e.items)&&e.items.every(t=>rr(t)))}function rS(e){return Pe(e,"Undefined")&&e.type==="undefined"&&qe(e.$id)}function J6(e){return _b(e)&&e.anyOf.every(t=>$2(t)||D2(t))}function _b(e){return Pe(e,"Union")&&qe(e.$id)&&Ke(e)&&Nt(e.anyOf)&&e.anyOf.every(t=>rr(t))}function nS(e){return Pe(e,"Uint8Array")&&e.type==="Uint8Array"&&qe(e.$id)&&rt(e.minByteLength)&&rt(e.maxByteLength)}function oS(e){return Pe(e,"Unknown")&&qe(e.$id)}function iS(e){return Pe(e,"Unsafe")}function aS(e){return Pe(e,"Void")&&e.type==="void"&&qe(e.$id)}function sS(e){return Ke(e)&&U in e&&tt(e[U])&&!K6.includes(e[U])}function rr(e){return Ke(e)&&(I2(e)||_2(e)||P2(e)||O2(e)||T2(e)||M2(e)||C2(e)||k2(e)||N2(e)||R2(e)||E2(e)||A2(e)||F2(e)||Hu(e)||V2(e)||z2(e)||j2(e)||U2(e)||B2(e)||G2(e)||K2(e)||q2(e)||H2(e)||Y2(e)||W2(e)||X2(e)||Z2(e)||Q2(e)||J2(e)||tS(e)||rS(e)||_b(e)||nS(e)||oS(e)||iS(e)||aS(e)||sS(e))}var Pb="(true|false)",Yu="(0|[1-9][0-9]*)",Mb="(.*)",e5="(?!.*)",oG=`^${Pb}$`,na=`^${Yu}$`,oa=`^${Mb}$`,cS=`^${e5}$`;var ia={};Ga(ia,{Clear:()=>r5,Delete:()=>n5,Entries:()=>t5,Get:()=>a5,Has:()=>o5,Set:()=>i5});var Zs=new Map;function t5(){return new Map(Zs)}function r5(){return Zs.clear()}function n5(e){return Zs.delete(e)}function o5(e){return Zs.has(e)}function i5(e,t){Zs.set(e,t)}function a5(e){return Zs.get(e)}var ro={};Ga(ro,{Clear:()=>c5,Delete:()=>u5,Entries:()=>s5,Get:()=>p5,Has:()=>f5,Set:()=>l5});var Qs=new Map;function s5(){return new Map(Qs)}function c5(){return Qs.clear()}function u5(e){return Qs.delete(e)}function f5(e){return Qs.has(e)}function l5(e,t){Qs.set(e,t)}function p5(e){return Qs.get(e)}function uS(e,t){return e.includes(t)}function fS(e){return[...new Set(e)]}function m5(e,t){return e.filter(r=>t.includes(r))}function d5(e,t){return e.reduce((r,n)=>m5(r,n),t)}function lS(e){return e.length===1?e[0]:e.length>1?d5(e.slice(1),e[0]):[]}function pS(e){let t=[];for(let r of e)t.push(...r);return t}function aa(e){return j({[U]:"Any"},e)}function Js(e,t){return j({[U]:"Array",type:"array",items:e},t)}function mS(e){return j({[U]:"Argument",index:e})}function ec(e,t){return j({[U]:"AsyncIterator",type:"AsyncIterator",items:e},t)}function at(e,t,r){return j({[U]:"Computed",target:e,parameters:t},r)}function h5(e,t){let{[t]:r,...n}=e;return n}function St(e,t){return t.reduce((r,n)=>h5(r,n),e)}function _e(e){return j({[U]:"Never",not:{}},e)}function Re(e){return j({[U]:"MappedResult",properties:e})}function tc(e,t,r){return j({[U]:"Constructor",type:"Constructor",parameters:e,returns:t},r)}function Ao(e,t,r){return j({[U]:"Function",type:"Function",parameters:e,returns:t},r)}function Wu(e,t){return j({[U]:"Union",anyOf:e},t)}function g5(e){return e.some(t=>qr(t))}function dS(e){return e.map(t=>qr(t)?b5(t):t)}function b5(e){return St(e,[hr])}function y5(e,t){return g5(e)?Ir(Wu(dS(e),t)):Wu(dS(e),t)}function Fo(e,t){return e.length===1?j(e[0],t):e.length===0?_e(t):y5(e,t)}function $e(e,t){return e.length===0?_e(t):e.length===1?j(e[0],t):Wu(e,t)}var yp=class extends be{};function x5(e){return e.replace(/\\\$/g,"$").replace(/\\\*/g,"*").replace(/\\\^/g,"^").replace(/\\\|/g,"|").replace(/\\\(/g,"(").replace(/\\\)/g,")")}function Tb(e,t,r){return e[t]===r&&e.charCodeAt(t-1)!==92}function wi(e,t){return Tb(e,t,"(")}function Xu(e,t){return Tb(e,t,")")}function hS(e,t){return Tb(e,t,"|")}function w5(e){if(!(wi(e,0)&&Xu(e,e.length-1)))return!1;let t=0;for(let r=0;r0&&n.push(rc(a)),r=i+1}let o=e.slice(r);return o.length>0&&n.push(rc(o)),n.length===0?{type:"const",const:""}:n.length===1?n[0]:{type:"or",expr:n}}function P5(e){function t(o,i){if(!wi(o,i))throw new yp("TemplateLiteralParser: Index must point to open parens");let a=0;for(let s=i;s0&&n.push(rc(s)),o=a-1}return n.length===0?{type:"const",const:""}:n.length===1?n[0]:{type:"and",expr:n}}function rc(e){return w5(e)?rc(S5(e)):v5(e)?_5(e):I5(e)?P5(e):{type:"const",const:x5(e)}}function nc(e){return rc(e.slice(1,e.length-1))}var Ob=class extends be{};function M5(e){return e.type==="or"&&e.expr.length===2&&e.expr[0].type==="const"&&e.expr[0].const==="0"&&e.expr[1].type==="const"&&e.expr[1].const==="[1-9][0-9]*"}function T5(e){return e.type==="or"&&e.expr.length===2&&e.expr[0].type==="const"&&e.expr[0].const==="true"&&e.expr[1].type==="const"&&e.expr[1].const==="false"}function O5(e){return e.type==="const"&&e.const===".*"}function Za(e){return M5(e)||O5(e)?!1:T5(e)?!0:e.type==="and"?e.expr.every(t=>Za(t)):e.type==="or"?e.expr.every(t=>Za(t)):e.type==="const"?!0:(()=>{throw new Ob("Unknown expression type")})()}function xp(e){let t=nc(e.pattern);return Za(t)}var Cb=class extends be{};function*gS(e){if(e.length===1)return yield*e[0];for(let t of e[0])for(let r of gS(e.slice(1)))yield`${t}${r}`}function*C5(e){return yield*gS(e.expr.map(t=>[...Zu(t)]))}function*k5(e){for(let t of e.expr)yield*Zu(t)}function*N5(e){return yield e.const}function*Zu(e){return e.type==="and"?yield*C5(e):e.type==="or"?yield*k5(e):e.type==="const"?yield*N5(e):(()=>{throw new Cb("Unknown expression")})()}function oc(e){let t=nc(e.pattern);return Za(t)?[...Zu(t)]:[]}function ke(e,t){return j({[U]:"Literal",const:e,type:typeof e},t)}function wp(e){return j({[U]:"Boolean",type:"boolean"},e)}function ic(e){return j({[U]:"BigInt",type:"bigint"},e)}function Tn(e){return j({[U]:"Number",type:"number"},e)}function Fr(e){return j({[U]:"String",type:"string"},e)}function*R5(e){let t=e.trim().replace(/"|'/g,"");return t==="boolean"?yield wp():t==="number"?yield Tn():t==="bigint"?yield ic():t==="string"?yield Fr():yield(()=>{let r=t.split("|").map(n=>ke(n.trim()));return r.length===0?_e():r.length===1?r[0]:Fo(r)})()}function*E5(e){if(e[1]!=="{"){let t=ke("$"),r=kb(e.slice(1));return yield*[t,...r]}for(let t=2;tyS(r,t)).join("|")})`:to(e)?`${t}${Yu}`:eo(e)?`${t}${Yu}`:Ha(e)?`${t}${Yu}`:bi(e)?`${t}${Mb}`:un(e)?`${t}${A5(e.const.toString())}`:gi(e)?`${t}${Pb}`:(()=>{throw new Nb(`Unexpected Kind '${e[U]}'`)})()}function Rb(e){return`^${e.map(t=>yS(t,"")).join("")}$`}function Qa(e){let r=oc(e).map(n=>ke(n));return Fo(r)}function Sp(e,t){let r=tt(e)?Rb(bS(e)):Rb(e);return j({[U]:"TemplateLiteral",type:"string",pattern:r},t)}function F5(e){return oc(e).map(r=>r.toString())}function $5(e){let t=[];for(let r of e)t.push(...Hr(r));return t}function D5(e){return[e.toString()]}function Hr(e){return[...new Set(ln(e)?F5(e):Ne(e)?$5(e.anyOf):un(e)?D5(e.const):to(e)?["[number]"]:eo(e)?["[number]"]:[])]}function L5(e,t,r){let n={};for(let o of Object.getOwnPropertyNames(t))n[o]=sa(e,Hr(t[o]),r);return n}function V5(e,t,r){return L5(e,t.properties,r)}function xS(e,t,r){let n=V5(e,t,r);return Re(n)}function SS(e,t){return e.map(r=>vS(r,t))}function z5(e){return e.filter(t=>!ta(t))}function j5(e,t){return vp(z5(SS(e,t)))}function U5(e){return e.some(t=>ta(t))?[]:e}function B5(e,t){return Fo(U5(SS(e,t)))}function G5(e,t){return t in e?e[t]:t==="[number]"?Fo(e):_e()}function K5(e,t){return t==="[number]"?e:_e()}function q5(e,t){return t in e?e[t]:_e()}function vS(e,t){return wt(e)?j5(e.allOf,t):Ne(e)?B5(e.anyOf,t):pn(e)?G5(e.items??[],t):Xn(e)?K5(e.items,t):Et(e)?q5(e.properties,t):_e()}function Qu(e,t){return t.map(r=>vS(e,r))}function wS(e,t){return Fo(Qu(e,t))}function sa(e,t,r){if(Mt(e)||Mt(t)){let n="Index types using Ref parameters require both Type and Key to be of TSchema";if(!bt(e)||!bt(t))throw new be(n);return at("Index",[e,t])}return pt(t)?xS(e,t,r):fn(t)?IS(e,t,r):j(bt(t)?wS(e,Hr(t)):wS(e,t),r)}function H5(e,t,r){return{[t]:sa(e,[t],ut(r))}}function Y5(e,t,r){return t.reduce((n,o)=>({...n,...H5(e,o,r)}),{})}function W5(e,t,r){return Y5(e,t.keys,r)}function IS(e,t,r){let n=W5(e,t,r);return Re(n)}function ac(e,t){return j({[U]:"Iterator",type:"Iterator",items:e},t)}function X5(e){return globalThis.Object.keys(e).filter(t=>!qr(e[t]))}function Z5(e,t){let r=X5(e),n=r.length>0?{[U]:"Object",type:"object",required:r,properties:e}:{[U]:"Object",type:"object",properties:e};return j(n,t)}var De=Z5;function Ip(e,t){return j({[U]:"Promise",type:"Promise",item:e},t)}function Q5(e){return j(St(e,[Wn]))}function J5(e){return j({...e,[Wn]:"Readonly"})}function eN(e,t){return t===!1?Q5(e):J5(e)}function Yr(e,t){let r=t??!0;return pt(e)?_S(e,r):eN(e,r)}function tN(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=Yr(e[n],t);return r}function rN(e,t){return tN(e.properties,t)}function _S(e,t){let r=rN(e,t);return Re(r)}function On(e,t){return j(e.length>0?{[U]:"Tuple",type:"array",items:e,additionalItems:!1,minItems:e.length,maxItems:e.length}:{[U]:"Tuple",type:"array",minItems:e.length,maxItems:e.length},t)}function PS(e,t){return e in t?Cn(e,t[e]):Re(t)}function nN(e){return{[e]:ke(e)}}function oN(e){let t={};for(let r of e)t[r]=ke(r);return t}function iN(e,t){return uS(t,e)?nN(e):oN(t)}function aN(e,t){let r=iN(e,t);return PS(e,r)}function Ju(e,t){return t.map(r=>Cn(e,r))}function sN(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(t))r[n]=Cn(e,t[n]);return r}function Cn(e,t){let r={...t};return qr(t)?Ir(Cn(e,St(t,[hr]))):Xs(t)?Yr(Cn(e,St(t,[Wn]))):pt(t)?PS(e,t.properties):fn(t)?aN(e,t.keys):Qn(t)?tc(Ju(e,t.parameters),Cn(e,t.returns),r):Jn(t)?Ao(Ju(e,t.parameters),Cn(e,t.returns),r):qa(t)?ec(Cn(e,t.items),r):Ya(t)?ac(Cn(e,t.items),r):wt(t)?_r(Ju(e,t.allOf),r):Ne(t)?$e(Ju(e,t.anyOf),r):pn(t)?On(Ju(e,t.items??[]),r):Et(t)?De(sN(e,t.properties),r):Xn(t)?Js(Cn(e,t.items),r):Wa(t)?Ip(Cn(e,t.item),r):t}function cN(e,t){let r={};for(let n of e)r[n]=Cn(n,t);return r}function MS(e,t,r){let n=bt(e)?Hr(e):e,o=t({[U]:"MappedKey",keys:n}),i=cN(n,o);return De(i,r)}function uN(e){return j(St(e,[hr]))}function fN(e){return j({...e,[hr]:"Optional"})}function lN(e,t){return t===!1?uN(e):fN(e)}function Ir(e,t){let r=t??!0;return pt(e)?TS(e,r):lN(e,r)}function pN(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=Ir(e[n],t);return r}function mN(e,t){return pN(e.properties,t)}function TS(e,t){let r=mN(e,t);return Re(r)}function ef(e,t={}){let r=e.every(o=>Et(o)),n=bt(t.unevaluatedProperties)?{unevaluatedProperties:t.unevaluatedProperties}:{};return j(t.unevaluatedProperties===!1||bt(t.unevaluatedProperties)||r?{...n,[U]:"Intersect",type:"object",allOf:e}:{...n,[U]:"Intersect",allOf:e},t)}function dN(e){return e.every(t=>qr(t))}function hN(e){return St(e,[hr])}function OS(e){return e.map(t=>qr(t)?hN(t):t)}function gN(e,t){return dN(e)?Ir(ef(OS(e),t)):ef(OS(e),t)}function vp(e,t={}){if(e.length===1)return j(e[0],t);if(e.length===0)return _e(t);if(e.some(r=>Fe(r)))throw new Error("Cannot intersect transform types");return gN(e,t)}function _r(e,t){if(e.length===1)return j(e[0],t);if(e.length===0)return _e(t);if(e.some(r=>Fe(r)))throw new Error("Cannot intersect transform types");return ef(e,t)}function $o(...e){let[t,r]=typeof e[0]=="string"?[e[0],e[1]]:[e[0].$id,e[1]];if(typeof t!="string")throw new be("Ref: $ref must be a string");return j({[U]:"Ref",$ref:t},r)}function bN(e,t){return at("Awaited",[at(e,t)])}function yN(e){return at("Awaited",[$o(e)])}function xN(e){return _r(CS(e))}function wN(e){return $e(CS(e))}function SN(e){return sc(e)}function CS(e){return e.map(t=>sc(t))}function sc(e,t){return j(Zn(e)?bN(e.target,e.parameters):wt(e)?xN(e.allOf):Ne(e)?wN(e.anyOf):Wa(e)?SN(e.item):Mt(e)?yN(e.$ref):e,t)}function kS(e){let t=[];for(let r of e)t.push(Wr(r));return t}function vN(e){let t=kS(e);return pS(t)}function IN(e){let t=kS(e);return lS(t)}function _N(e){return e.map((t,r)=>r.toString())}function PN(e){return["[number]"]}function MN(e){return globalThis.Object.getOwnPropertyNames(e)}function TN(e){return Eb?globalThis.Object.getOwnPropertyNames(e).map(r=>r[0]==="^"&&r[r.length-1]==="$"?r.slice(1,r.length-1):r):[]}function Wr(e){return wt(e)?vN(e.allOf):Ne(e)?IN(e.anyOf):pn(e)?_N(e.items??[]):Xn(e)?PN(e.items):Et(e)?MN(e.properties):Xa(e)?TN(e.patternProperties):[]}var Eb=!1;function cc(e){Eb=!0;let t=Wr(e);return Eb=!1,`^(${t.map(n=>`(${n})`).join("|")})$`}function ON(e,t){return at("KeyOf",[at(e,t)])}function CN(e){return at("KeyOf",[$o(e)])}function kN(e,t){let r=Wr(e),n=NN(r),o=Fo(n);return j(o,t)}function NN(e){return e.map(t=>t==="[number]"?Tn():ke(t))}function uc(e,t){return Zn(e)?ON(e.target,e.parameters):Mt(e)?CN(e.$ref):pt(e)?NS(e,t):kN(e,t)}function RN(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=uc(e[n],ut(t));return r}function EN(e,t){return RN(e.properties,t)}function NS(e,t){let r=EN(e,t);return Re(r)}function _p(e){let t=Wr(e),r=Qu(e,t);return t.map((n,o)=>[t[o],r[o]])}function AN(e){let t=[];for(let r of e)t.push(...Wr(r));return fS(t)}function FN(e){return e.filter(t=>!ta(t))}function $N(e,t){let r=[];for(let n of e)r.push(...Qu(n,[t]));return FN(r)}function DN(e,t){let r={};for(let n of t)r[n]=vp($N(e,n));return r}function RS(e,t){let r=AN(e),n=DN(e,r);return De(n,t)}function Pp(e){return j({[U]:"Date",type:"Date"},e)}function Mp(e){return j({[U]:"Null",type:"null"},e)}function Tp(e){return j({[U]:"Symbol",type:"symbol"},e)}function Op(e){return j({[U]:"Undefined",type:"undefined"},e)}function Cp(e){return j({[U]:"Uint8Array",type:"Uint8Array"},e)}function no(e){return j({[U]:"Unknown"},e)}function LN(e){return e.map(t=>Ab(t,!1))}function VN(e){let t={};for(let r of globalThis.Object.getOwnPropertyNames(e))t[r]=Yr(Ab(e[r],!1));return t}function kp(e,t){return t===!0?e:Yr(e)}function Ab(e,t){return pb(e)?kp(aa(),t):db(e)?kp(aa(),t):Nt(e)?Yr(On(LN(e))):mi(e)?Cp():Ka(e)?Pp():Ke(e)?kp(De(VN(e)),t):mb(e)?kp(Ao([],no()),t):Rt(e)?Op():hb(e)?Mp():gb(e)?Tp():ju(e)?ic():sn(e)?ke(e):pi(e)?ke(e):tt(e)?ke(e):De({})}function ES(e,t){return j(Ab(e,!0),t)}function AS(e,t){return Qn(e)?On(e.parameters,t):_e(t)}function FS(e,t){if(Rt(e))throw new Error("Enum undefined or empty");let r=globalThis.Object.getOwnPropertyNames(e).filter(i=>isNaN(i)).map(i=>e[i]),o=[...new Set(r)].map(i=>ke(i));return $e(o,{...t,[Mn]:"Enum"})}var $b=class extends be{},B;(function(e){e[e.Union=0]="Union",e[e.True=1]="True",e[e.False=2]="False"})(B||(B={}));function kn(e){return e===B.False?e:B.True}function fc(e){throw new $b(e)}function jt(e){return k.IsNever(e)||k.IsIntersect(e)||k.IsUnion(e)||k.IsUnknown(e)||k.IsAny(e)}function Ut(e,t){return k.IsNever(t)?US(e,t):k.IsIntersect(t)?Np(e,t):k.IsUnion(t)?zb(e,t):k.IsUnknown(t)?qS(e,t):k.IsAny(t)?Vb(e,t):fc("StructuralRight")}function Vb(e,t){return B.True}function zN(e,t){return k.IsIntersect(t)?Np(e,t):k.IsUnion(t)&&t.anyOf.some(r=>k.IsAny(r)||k.IsUnknown(r))?B.True:k.IsUnion(t)?B.Union:k.IsUnknown(t)||k.IsAny(t)?B.True:B.Union}function jN(e,t){return k.IsUnknown(e)?B.False:k.IsAny(e)?B.Union:k.IsNever(e)?B.True:B.False}function UN(e,t){return k.IsObject(t)&&Rp(t)?B.True:jt(t)?Ut(e,t):k.IsArray(t)?kn(He(e.items,t.items)):B.False}function BN(e,t){return jt(t)?Ut(e,t):k.IsAsyncIterator(t)?kn(He(e.items,t.items)):B.False}function GN(e,t){return jt(t)?Ut(e,t):k.IsObject(t)?Pr(e,t):k.IsRecord(t)?Nn(e,t):k.IsBigInt(t)?B.True:B.False}function zS(e,t){return k.IsLiteralBoolean(e)||k.IsBoolean(e)?B.True:B.False}function KN(e,t){return jt(t)?Ut(e,t):k.IsObject(t)?Pr(e,t):k.IsRecord(t)?Nn(e,t):k.IsBoolean(t)?B.True:B.False}function qN(e,t){return jt(t)?Ut(e,t):k.IsObject(t)?Pr(e,t):k.IsConstructor(t)?e.parameters.length>t.parameters.length?B.False:e.parameters.every((r,n)=>kn(He(t.parameters[n],r))===B.True)?kn(He(e.returns,t.returns)):B.False:B.False}function HN(e,t){return jt(t)?Ut(e,t):k.IsObject(t)?Pr(e,t):k.IsRecord(t)?Nn(e,t):k.IsDate(t)?B.True:B.False}function YN(e,t){return jt(t)?Ut(e,t):k.IsObject(t)?Pr(e,t):k.IsFunction(t)?e.parameters.length>t.parameters.length?B.False:e.parameters.every((r,n)=>kn(He(t.parameters[n],r))===B.True)?kn(He(e.returns,t.returns)):B.False:B.False}function jS(e,t){return k.IsLiteral(e)&&vr.IsNumber(e.const)||k.IsNumber(e)||k.IsInteger(e)?B.True:B.False}function WN(e,t){return k.IsInteger(t)||k.IsNumber(t)?B.True:jt(t)?Ut(e,t):k.IsObject(t)?Pr(e,t):k.IsRecord(t)?Nn(e,t):B.False}function Np(e,t){return t.allOf.every(r=>He(e,r)===B.True)?B.True:B.False}function XN(e,t){return e.allOf.some(r=>He(r,t)===B.True)?B.True:B.False}function ZN(e,t){return jt(t)?Ut(e,t):k.IsIterator(t)?kn(He(e.items,t.items)):B.False}function QN(e,t){return k.IsLiteral(t)&&t.const===e.const?B.True:jt(t)?Ut(e,t):k.IsObject(t)?Pr(e,t):k.IsRecord(t)?Nn(e,t):k.IsString(t)?KS(e,t):k.IsNumber(t)?BS(e,t):k.IsInteger(t)?jS(e,t):k.IsBoolean(t)?zS(e,t):B.False}function US(e,t){return B.False}function JN(e,t){return B.True}function $S(e){let[t,r]=[e,0];for(;k.IsNot(t);)t=t.not,r+=1;return r%2===0?t:no()}function eR(e,t){return k.IsNot(e)?He($S(e),t):k.IsNot(t)?He(e,$S(t)):fc("Invalid fallthrough for Not")}function tR(e,t){return jt(t)?Ut(e,t):k.IsObject(t)?Pr(e,t):k.IsRecord(t)?Nn(e,t):k.IsNull(t)?B.True:B.False}function BS(e,t){return k.IsLiteralNumber(e)||k.IsNumber(e)||k.IsInteger(e)?B.True:B.False}function rR(e,t){return jt(t)?Ut(e,t):k.IsObject(t)?Pr(e,t):k.IsRecord(t)?Nn(e,t):k.IsInteger(t)||k.IsNumber(t)?B.True:B.False}function Xr(e,t){return Object.getOwnPropertyNames(e.properties).length===t}function DS(e){return Rp(e)}function LS(e){return Xr(e,0)||Xr(e,1)&&"description"in e.properties&&k.IsUnion(e.properties.description)&&e.properties.description.anyOf.length===2&&(k.IsString(e.properties.description.anyOf[0])&&k.IsUndefined(e.properties.description.anyOf[1])||k.IsString(e.properties.description.anyOf[1])&&k.IsUndefined(e.properties.description.anyOf[0]))}function Fb(e){return Xr(e,0)}function VS(e){return Xr(e,0)}function nR(e){return Xr(e,0)}function oR(e){return Xr(e,0)}function iR(e){return Rp(e)}function aR(e){let t=Tn();return Xr(e,0)||Xr(e,1)&&"length"in e.properties&&kn(He(e.properties.length,t))===B.True}function sR(e){return Xr(e,0)}function Rp(e){let t=Tn();return Xr(e,0)||Xr(e,1)&&"length"in e.properties&&kn(He(e.properties.length,t))===B.True}function cR(e){let t=Ao([aa()],aa());return Xr(e,0)||Xr(e,1)&&"then"in e.properties&&kn(He(e.properties.then,t))===B.True}function GS(e,t){return He(e,t)===B.False||k.IsOptional(e)&&!k.IsOptional(t)?B.False:B.True}function Pr(e,t){return k.IsUnknown(e)?B.False:k.IsAny(e)?B.Union:k.IsNever(e)||k.IsLiteralString(e)&&DS(t)||k.IsLiteralNumber(e)&&Fb(t)||k.IsLiteralBoolean(e)&&VS(t)||k.IsSymbol(e)&&LS(t)||k.IsBigInt(e)&&nR(t)||k.IsString(e)&&DS(t)||k.IsSymbol(e)&&LS(t)||k.IsNumber(e)&&Fb(t)||k.IsInteger(e)&&Fb(t)||k.IsBoolean(e)&&VS(t)||k.IsUint8Array(e)&&iR(t)||k.IsDate(e)&&oR(t)||k.IsConstructor(e)&&sR(t)||k.IsFunction(e)&&aR(t)?B.True:k.IsRecord(e)&&k.IsString(Db(e))?t[Mn]==="Record"?B.True:B.False:k.IsRecord(e)&&k.IsNumber(Db(e))?Xr(t,0)?B.True:B.False:B.False}function uR(e,t){return jt(t)?Ut(e,t):k.IsRecord(t)?Nn(e,t):k.IsObject(t)?(()=>{for(let r of Object.getOwnPropertyNames(t.properties)){if(!(r in e.properties)&&!k.IsOptional(t.properties[r]))return B.False;if(k.IsOptional(t.properties[r]))return B.True;if(GS(e.properties[r],t.properties[r])===B.False)return B.False}return B.True})():B.False}function fR(e,t){return jt(t)?Ut(e,t):k.IsObject(t)&&cR(t)?B.True:k.IsPromise(t)?kn(He(e.item,t.item)):B.False}function Db(e){return na in e.patternProperties?Tn():oa in e.patternProperties?Fr():fc("Unknown record key pattern")}function Lb(e){return na in e.patternProperties?e.patternProperties[na]:oa in e.patternProperties?e.patternProperties[oa]:fc("Unable to get record value schema")}function Nn(e,t){let[r,n]=[Db(t),Lb(t)];return k.IsLiteralString(e)&&k.IsNumber(r)&&kn(He(e,n))===B.True?B.True:k.IsUint8Array(e)&&k.IsNumber(r)||k.IsString(e)&&k.IsNumber(r)||k.IsArray(e)&&k.IsNumber(r)?He(e,n):k.IsObject(e)?(()=>{for(let o of Object.getOwnPropertyNames(e.properties))if(GS(n,e.properties[o])===B.False)return B.False;return B.True})():B.False}function lR(e,t){return jt(t)?Ut(e,t):k.IsObject(t)?Pr(e,t):k.IsRecord(t)?He(Lb(e),Lb(t)):B.False}function pR(e,t){let r=k.IsRegExp(e)?Fr():e,n=k.IsRegExp(t)?Fr():t;return He(r,n)}function KS(e,t){return k.IsLiteral(e)&&vr.IsString(e.const)||k.IsString(e)?B.True:B.False}function mR(e,t){return jt(t)?Ut(e,t):k.IsObject(t)?Pr(e,t):k.IsRecord(t)?Nn(e,t):k.IsString(t)?B.True:B.False}function dR(e,t){return jt(t)?Ut(e,t):k.IsObject(t)?Pr(e,t):k.IsRecord(t)?Nn(e,t):k.IsSymbol(t)?B.True:B.False}function hR(e,t){return k.IsTemplateLiteral(e)?He(Qa(e),t):k.IsTemplateLiteral(t)?He(e,Qa(t)):fc("Invalid fallthrough for TemplateLiteral")}function gR(e,t){return k.IsArray(t)&&e.items!==void 0&&e.items.every(r=>He(r,t.items)===B.True)}function bR(e,t){return k.IsNever(e)?B.True:k.IsUnknown(e)?B.False:k.IsAny(e)?B.Union:B.False}function yR(e,t){return jt(t)?Ut(e,t):k.IsObject(t)&&Rp(t)||k.IsArray(t)&&gR(e,t)?B.True:k.IsTuple(t)?vr.IsUndefined(e.items)&&!vr.IsUndefined(t.items)||!vr.IsUndefined(e.items)&&vr.IsUndefined(t.items)?B.False:vr.IsUndefined(e.items)&&!vr.IsUndefined(t.items)||e.items.every((r,n)=>He(r,t.items[n])===B.True)?B.True:B.False:B.False}function xR(e,t){return jt(t)?Ut(e,t):k.IsObject(t)?Pr(e,t):k.IsRecord(t)?Nn(e,t):k.IsUint8Array(t)?B.True:B.False}function wR(e,t){return jt(t)?Ut(e,t):k.IsObject(t)?Pr(e,t):k.IsRecord(t)?Nn(e,t):k.IsVoid(t)?IR(e,t):k.IsUndefined(t)?B.True:B.False}function zb(e,t){return t.anyOf.some(r=>He(e,r)===B.True)?B.True:B.False}function SR(e,t){return e.anyOf.every(r=>He(r,t)===B.True)?B.True:B.False}function qS(e,t){return B.True}function vR(e,t){return k.IsNever(t)?US(e,t):k.IsIntersect(t)?Np(e,t):k.IsUnion(t)?zb(e,t):k.IsAny(t)?Vb(e,t):k.IsString(t)?KS(e,t):k.IsNumber(t)?BS(e,t):k.IsInteger(t)?jS(e,t):k.IsBoolean(t)?zS(e,t):k.IsArray(t)?jN(e,t):k.IsTuple(t)?bR(e,t):k.IsObject(t)?Pr(e,t):k.IsUnknown(t)?B.True:B.False}function IR(e,t){return k.IsUndefined(e)||k.IsUndefined(e)?B.True:B.False}function _R(e,t){return k.IsIntersect(t)?Np(e,t):k.IsUnion(t)?zb(e,t):k.IsUnknown(t)?qS(e,t):k.IsAny(t)?Vb(e,t):k.IsObject(t)?Pr(e,t):k.IsVoid(t)?B.True:B.False}function He(e,t){return k.IsTemplateLiteral(e)||k.IsTemplateLiteral(t)?hR(e,t):k.IsRegExp(e)||k.IsRegExp(t)?pR(e,t):k.IsNot(e)||k.IsNot(t)?eR(e,t):k.IsAny(e)?zN(e,t):k.IsArray(e)?UN(e,t):k.IsBigInt(e)?GN(e,t):k.IsBoolean(e)?KN(e,t):k.IsAsyncIterator(e)?BN(e,t):k.IsConstructor(e)?qN(e,t):k.IsDate(e)?HN(e,t):k.IsFunction(e)?YN(e,t):k.IsInteger(e)?WN(e,t):k.IsIntersect(e)?XN(e,t):k.IsIterator(e)?ZN(e,t):k.IsLiteral(e)?QN(e,t):k.IsNever(e)?JN(e,t):k.IsNull(e)?tR(e,t):k.IsNumber(e)?rR(e,t):k.IsObject(e)?uR(e,t):k.IsRecord(e)?lR(e,t):k.IsString(e)?mR(e,t):k.IsSymbol(e)?dR(e,t):k.IsTuple(e)?yR(e,t):k.IsPromise(e)?fR(e,t):k.IsUint8Array(e)?xR(e,t):k.IsUndefined(e)?wR(e,t):k.IsUnion(e)?SR(e,t):k.IsUnknown(e)?vR(e,t):k.IsVoid(e)?_R(e,t):fc(`Unknown left type operand '${e[U]}'`)}function ca(e,t){return He(e,t)}function PR(e,t,r,n,o){let i={};for(let a of globalThis.Object.getOwnPropertyNames(e))i[a]=lc(e[a],t,r,n,ut(o));return i}function MR(e,t,r,n,o){return PR(e.properties,t,r,n,o)}function HS(e,t,r,n,o){let i=MR(e,t,r,n,o);return Re(i)}function TR(e,t,r,n){let o=ca(e,t);return o===B.Union?$e([r,n]):o===B.True?r:n}function lc(e,t,r,n,o){return pt(e)?HS(e,t,r,n,o):fn(e)?j(YS(e,t,r,n,o)):j(TR(e,t,r,n),o)}function OR(e,t,r,n,o){return{[e]:lc(ke(e),t,r,n,ut(o))}}function CR(e,t,r,n,o){return e.reduce((i,a)=>({...i,...OR(a,t,r,n,o)}),{})}function kR(e,t,r,n,o){return CR(e.keys,t,r,n,o)}function YS(e,t,r,n,o){let i=kR(e,t,r,n,o);return Re(i)}function NR(e){return e.allOf.every(t=>Ja(t))}function RR(e){return e.anyOf.some(t=>Ja(t))}function ER(e){return!Ja(e.not)}function Ja(e){return e[U]==="Intersect"?NR(e):e[U]==="Union"?RR(e):e[U]==="Not"?ER(e):e[U]==="Undefined"}function WS(e,t){return pc(Qa(e),t)}function AR(e,t){let r=e.filter(n=>ca(n,t)===B.False);return r.length===1?r[0]:$e(r)}function pc(e,t,r={}){return ln(e)?j(WS(e,t),r):pt(e)?j(XS(e,t),r):j(Ne(e)?AR(e.anyOf,t):ca(e,t)!==B.False?_e():e,r)}function FR(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=pc(e[n],t);return r}function $R(e,t){return FR(e.properties,t)}function XS(e,t){let r=$R(e,t);return Re(r)}function ZS(e,t){return mc(Qa(e),t)}function DR(e,t){let r=e.filter(n=>ca(n,t)!==B.False);return r.length===1?r[0]:$e(r)}function mc(e,t,r){return ln(e)?j(ZS(e,t),r):pt(e)?j(QS(e,t),r):j(Ne(e)?DR(e.anyOf,t):ca(e,t)!==B.False?e:_e(),r)}function LR(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=mc(e[n],t);return r}function VR(e,t){return LR(e.properties,t)}function QS(e,t){let r=VR(e,t);return Re(r)}function JS(e,t){return Qn(e)?j(e.returns,t):_e(t)}function Ep(e){return Yr(Ir(e))}function es(e,t,r){return j({[U]:"Record",type:"object",patternProperties:{[e]:t}},r)}function jb(e,t,r){let n={};for(let o of e)n[o]=t;return De(n,{...r,[Mn]:"Record"})}function zR(e,t,r){return xp(e)?jb(Hr(e),t,r):es(e.pattern,t,r)}function jR(e,t,r){return jb(Hr($e(e)),t,r)}function UR(e,t,r){return jb([e.toString()],t,r)}function BR(e,t,r){return es(e.source,t,r)}function GR(e,t,r){let n=Rt(e.pattern)?oa:e.pattern;return es(n,t,r)}function KR(e,t,r){return es(oa,t,r)}function qR(e,t,r){return es(cS,t,r)}function HR(e,t,r){return De({true:t,false:t},r)}function YR(e,t,r){return es(na,t,r)}function WR(e,t,r){return es(na,t,r)}function Ap(e,t,r={}){return Ne(e)?jR(e.anyOf,t,r):ln(e)?zR(e,t,r):un(e)?UR(e.const,t,r):gi(e)?HR(e,t,r):eo(e)?YR(e,t,r):to(e)?WR(e,t,r):wb(e)?BR(e,t,r):bi(e)?GR(e,t,r):yb(e)?KR(e,t,r):ta(e)?qR(e,t,r):_e(r)}function Fp(e){return globalThis.Object.getOwnPropertyNames(e.patternProperties)[0]}function ev(e){let t=Fp(e);return t===oa?Fr():t===na?Tn():Fr({pattern:t})}function $p(e){return e.patternProperties[Fp(e)]}function XR(e,t){return t.parameters=tf(e,t.parameters),t.returns=oo(e,t.returns),t}function ZR(e,t){return t.parameters=tf(e,t.parameters),t.returns=oo(e,t.returns),t}function QR(e,t){return t.allOf=tf(e,t.allOf),t}function JR(e,t){return t.anyOf=tf(e,t.anyOf),t}function eE(e,t){return Rt(t.items)||(t.items=tf(e,t.items)),t}function tE(e,t){return t.items=oo(e,t.items),t}function rE(e,t){return t.items=oo(e,t.items),t}function nE(e,t){return t.items=oo(e,t.items),t}function oE(e,t){return t.item=oo(e,t.item),t}function iE(e,t){let r=uE(e,t.properties);return{...t,...De(r)}}function aE(e,t){let r=oo(e,ev(t)),n=oo(e,$p(t)),o=Ap(r,n);return{...t,...o}}function sE(e,t){return t.index in e?e[t.index]:no()}function cE(e,t){let r=Xs(t),n=qr(t),o=oo(e,t);return r&&n?Ep(o):r&&!n?Yr(o):!r&&n?Ir(o):o}function uE(e,t){return globalThis.Object.getOwnPropertyNames(t).reduce((r,n)=>({...r,[n]:cE(e,t[n])}),{})}function tf(e,t){return t.map(r=>oo(e,r))}function oo(e,t){return Qn(t)?XR(e,t):Jn(t)?ZR(e,t):wt(t)?QR(e,t):Ne(t)?JR(e,t):pn(t)?eE(e,t):Xn(t)?tE(e,t):qa(t)?rE(e,t):Ya(t)?nE(e,t):Wa(t)?oE(e,t):Et(t)?iE(e,t):Xa(t)?aE(e,t):xb(t)?sE(e,t):t}function tv(e,t){return oo(t,Ys(e))}function rv(e){return j({[U]:"Integer",type:"integer"},e)}function fE(e,t,r){return{[e]:io(ke(e),t,ut(r))}}function lE(e,t,r){return e.reduce((o,i)=>({...o,...fE(i,t,r)}),{})}function pE(e,t,r){return lE(e.keys,t,r)}function nv(e,t,r){let n=pE(e,t,r);return Re(n)}function mE(e){let[t,r]=[e.slice(0,1),e.slice(1)];return[t.toLowerCase(),r].join("")}function dE(e){let[t,r]=[e.slice(0,1),e.slice(1)];return[t.toUpperCase(),r].join("")}function hE(e){return e.toUpperCase()}function gE(e){return e.toLowerCase()}function bE(e,t,r){let n=nc(e.pattern);if(!Za(n))return{...e,pattern:ov(e.pattern,t)};let a=[...Zu(n)].map(f=>ke(f)),s=iv(a,t),c=$e(s);return Sp([c],r)}function ov(e,t){return typeof e=="string"?t==="Uncapitalize"?mE(e):t==="Capitalize"?dE(e):t==="Uppercase"?hE(e):t==="Lowercase"?gE(e):e:e.toString()}function iv(e,t){return e.map(r=>io(r,t))}function io(e,t,r={}){return fn(e)?nv(e,t,r):ln(e)?bE(e,t,r):Ne(e)?$e(iv(e.anyOf,t),r):un(e)?ke(ov(e.const,t),r):j(e,r)}function av(e,t={}){return io(e,"Capitalize",t)}function sv(e,t={}){return io(e,"Lowercase",t)}function cv(e,t={}){return io(e,"Uncapitalize",t)}function uv(e,t={}){return io(e,"Uppercase",t)}function yE(e,t,r){let n={};for(let o of globalThis.Object.getOwnPropertyNames(e))n[o]=ua(e[o],t,ut(r));return n}function xE(e,t,r){return yE(e.properties,t,r)}function fv(e,t,r){let n=xE(e,t,r);return Re(n)}function wE(e,t){return e.map(r=>Ub(r,t))}function SE(e,t){return e.map(r=>Ub(r,t))}function vE(e,t){let{[t]:r,...n}=e;return n}function IE(e,t){return t.reduce((r,n)=>vE(r,n),e)}function _E(e,t,r){let n=St(e,[gt,"$id","required","properties"]),o=IE(r,t);return De(o,n)}function PE(e){let t=e.reduce((r,n)=>gp(n)?[...r,ke(n)]:r,[]);return $e(t)}function Ub(e,t){return wt(e)?_r(wE(e.allOf,t)):Ne(e)?$e(SE(e.anyOf,t)):Et(e)?_E(e,t,e.properties):De({})}function ua(e,t,r){let n=Nt(t)?PE(t):t,o=bt(t)?Hr(t):t,i=Mt(e),a=Mt(t);return pt(e)?fv(e,o,r):fn(t)?lv(e,t,r):i&&a?at("Omit",[e,n],r):!i&&a?at("Omit",[e,n],r):i&&!a?at("Omit",[e,n],r):j({...Ub(e,o),...r})}function ME(e,t,r){return{[t]:ua(e,[t],ut(r))}}function TE(e,t,r){return t.reduce((n,o)=>({...n,...ME(e,o,r)}),{})}function OE(e,t,r){return TE(e,t.keys,r)}function lv(e,t,r){let n=OE(e,t,r);return Re(n)}function CE(e,t,r){let n={};for(let o of globalThis.Object.getOwnPropertyNames(e))n[o]=fa(e[o],t,ut(r));return n}function kE(e,t,r){return CE(e.properties,t,r)}function pv(e,t,r){let n=kE(e,t,r);return Re(n)}function NE(e,t){return e.map(r=>Bb(r,t))}function RE(e,t){return e.map(r=>Bb(r,t))}function EE(e,t){let r={};for(let n of t)n in e&&(r[n]=e[n]);return r}function AE(e,t,r){let n=St(e,[gt,"$id","required","properties"]),o=EE(r,t);return De(o,n)}function FE(e){let t=e.reduce((r,n)=>gp(n)?[...r,ke(n)]:r,[]);return $e(t)}function Bb(e,t){return wt(e)?_r(NE(e.allOf,t)):Ne(e)?$e(RE(e.anyOf,t)):Et(e)?AE(e,t,e.properties):De({})}function fa(e,t,r){let n=Nt(t)?FE(t):t,o=bt(t)?Hr(t):t,i=Mt(e),a=Mt(t);return pt(e)?pv(e,o,r):fn(t)?mv(e,t,r):i&&a?at("Pick",[e,n],r):!i&&a?at("Pick",[e,n],r):i&&!a?at("Pick",[e,n],r):j({...Bb(e,o),...r})}function $E(e,t,r){return{[t]:fa(e,[t],ut(r))}}function DE(e,t,r){return t.reduce((n,o)=>({...n,...$E(e,o,r)}),{})}function LE(e,t,r){return DE(e,t.keys,r)}function mv(e,t,r){let n=LE(e,t,r);return Re(n)}function VE(e,t){return at("Partial",[at(e,t)])}function zE(e){return at("Partial",[$o(e)])}function jE(e){let t={};for(let r of globalThis.Object.getOwnPropertyNames(e))t[r]=Ir(e[r]);return t}function UE(e,t){let r=St(e,[gt,"$id","required","properties"]),n=jE(t);return De(n,r)}function dv(e){return e.map(t=>hv(t))}function hv(e){return Zn(e)?VE(e.target,e.parameters):Mt(e)?zE(e.$ref):wt(e)?_r(dv(e.allOf)):Ne(e)?$e(dv(e.anyOf)):Et(e)?UE(e,e.properties):Ha(e)||gi(e)||eo(e)||un(e)||Gu(e)||to(e)||bi(e)||Ku(e)||yi(e)?e:De({})}function dc(e,t){return pt(e)?gv(e,t):j({...hv(e),...t})}function BE(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=dc(e[n],ut(t));return r}function GE(e,t){return BE(e.properties,t)}function gv(e,t){let r=GE(e,t);return Re(r)}function KE(e,t){return at("Required",[at(e,t)])}function qE(e){return at("Required",[$o(e)])}function HE(e){let t={};for(let r of globalThis.Object.getOwnPropertyNames(e))t[r]=St(e[r],[hr]);return t}function YE(e,t){let r=St(e,[gt,"$id","required","properties"]),n=HE(t);return De(n,r)}function bv(e){return e.map(t=>yv(t))}function yv(e){return Zn(e)?KE(e.target,e.parameters):Mt(e)?qE(e.$ref):wt(e)?_r(bv(e.allOf)):Ne(e)?$e(bv(e.anyOf)):Et(e)?YE(e,e.properties):Ha(e)||gi(e)||eo(e)||un(e)||Gu(e)||to(e)||bi(e)||Ku(e)||yi(e)?e:De({})}function hc(e,t){return pt(e)?xv(e,t):j({...yv(e),...t})}function WE(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=hc(e[n],t);return r}function XE(e,t){return WE(e.properties,t)}function xv(e,t){let r=XE(e,t);return Re(r)}function ZE(e,t){return t.map(r=>Mt(r)?Gb(e,r.$ref):mn(e,r))}function Gb(e,t){return t in e?Mt(e[t])?Gb(e,e[t].$ref):mn(e,e[t]):_e()}function QE(e){return sc(e[0])}function JE(e){return sa(e[0],e[1])}function e8(e){return uc(e[0])}function t8(e){return dc(e[0])}function r8(e){return ua(e[0],e[1])}function n8(e){return fa(e[0],e[1])}function o8(e){return hc(e[0])}function i8(e,t,r){let n=ZE(e,r);return t==="Awaited"?QE(n):t==="Index"?JE(n):t==="KeyOf"?e8(n):t==="Partial"?t8(n):t==="Omit"?r8(n):t==="Pick"?n8(n):t==="Required"?o8(n):_e()}function a8(e,t){return Js(mn(e,t))}function s8(e,t){return ec(mn(e,t))}function c8(e,t,r){return tc(rf(e,t),mn(e,r))}function u8(e,t,r){return Ao(rf(e,t),mn(e,r))}function f8(e,t){return _r(rf(e,t))}function l8(e,t){return ac(mn(e,t))}function p8(e,t){return De(globalThis.Object.keys(t).reduce((r,n)=>({...r,[n]:mn(e,t[n])}),{}))}function m8(e,t){let[r,n]=[mn(e,$p(t)),Fp(t)],o=Ys(t);return o.patternProperties[n]=r,o}function d8(e,t){return Mt(t)?{...Gb(e,t.$ref),[gt]:t[gt]}:t}function h8(e,t){return On(rf(e,t))}function g8(e,t){return $e(rf(e,t))}function rf(e,t){return t.map(r=>mn(e,r))}function mn(e,t){return qr(t)?j(mn(e,St(t,[hr])),t):Xs(t)?j(mn(e,St(t,[Wn])),t):Fe(t)?j(d8(e,t),t):Xn(t)?j(a8(e,t.items),t):qa(t)?j(s8(e,t.items),t):Zn(t)?j(i8(e,t.target,t.parameters)):Qn(t)?j(c8(e,t.parameters,t.returns),t):Jn(t)?j(u8(e,t.parameters,t.returns),t):wt(t)?j(f8(e,t.allOf),t):Ya(t)?j(l8(e,t.items),t):Et(t)?j(p8(e,t.properties),t):Xa(t)?j(m8(e,t)):pn(t)?j(h8(e,t.items||[]),t):Ne(t)?j(g8(e,t.anyOf),t):t}function b8(e,t){return t in e?mn(e,e[t]):_e()}function wv(e){return globalThis.Object.getOwnPropertyNames(e).reduce((t,r)=>({...t,[r]:b8(e,r)}),{})}var Kb=class{constructor(t){let r=wv(t),n=this.WithIdentifiers(r);this.$defs=n}Import(t,r){let n={...this.$defs,[t]:j(this.$defs[t],r)};return j({[U]:"Import",$defs:n,$ref:t})}WithIdentifiers(t){return globalThis.Object.getOwnPropertyNames(t).reduce((r,n)=>({...r,[n]:{...t[n],$id:n}}),{})}};function Sv(e){return new Kb(e)}function vv(e,t){return j({[U]:"Not",not:e},t)}function Iv(e,t){return Jn(e)?On(e.parameters,t):_e()}var y8=0;function _v(e,t={}){Rt(t.$id)&&(t.$id=`T${y8++}`);let r=Ys(e({[U]:"This",$ref:`${t.$id}`}));return r.$id=t.$id,j({[Mn]:"Recursive",...r},t)}function Pv(e,t){let r=tt(e)?new globalThis.RegExp(e):e;return j({[U]:"RegExp",type:"RegExp",source:r.source,flags:r.flags},t)}function x8(e){return wt(e)?e.allOf:Ne(e)?e.anyOf:pn(e)?e.items??[]:[]}function Mv(e){return x8(e)}function Tv(e,t){return Jn(e)?j(e.returns,t):_e(t)}var qb=class{constructor(t){this.schema=t}Decode(t){return new Hb(this.schema,t)}},Hb=class{constructor(t,r){this.schema=t,this.decode=r}EncodeTransform(t,r){let i={Encode:a=>r[gt].Encode(t(a)),Decode:a=>this.decode(r[gt].Decode(a))};return{...r,[gt]:i}}EncodeSchema(t,r){let n={Decode:this.decode,Encode:t};return{...r,[gt]:n}}Encode(t){return Fe(this.schema)?this.EncodeTransform(t,this.schema):this.EncodeSchema(t,this.schema)}};function Ov(e){return new qb(e)}function Cv(e={}){return j({[U]:e[U]??"Unsafe"},e)}function kv(e){return j({[U]:"Void",type:"void"},e)}var Yb={};Ga(Yb,{Any:()=>aa,Argument:()=>mS,Array:()=>Js,AsyncIterator:()=>ec,Awaited:()=>sc,BigInt:()=>ic,Boolean:()=>wp,Capitalize:()=>av,Composite:()=>RS,Const:()=>ES,Constructor:()=>tc,ConstructorParameters:()=>AS,Date:()=>Pp,Enum:()=>FS,Exclude:()=>pc,Extends:()=>lc,Extract:()=>mc,Function:()=>Ao,Index:()=>sa,InstanceType:()=>JS,Instantiate:()=>tv,Integer:()=>rv,Intersect:()=>_r,Iterator:()=>ac,KeyOf:()=>uc,Literal:()=>ke,Lowercase:()=>sv,Mapped:()=>MS,Module:()=>Sv,Never:()=>_e,Not:()=>vv,Null:()=>Mp,Number:()=>Tn,Object:()=>De,Omit:()=>ua,Optional:()=>Ir,Parameters:()=>Iv,Partial:()=>dc,Pick:()=>fa,Promise:()=>Ip,Readonly:()=>Yr,ReadonlyOptional:()=>Ep,Record:()=>Ap,Recursive:()=>_v,Ref:()=>$o,RegExp:()=>Pv,Required:()=>hc,Rest:()=>Mv,ReturnType:()=>Tv,String:()=>Fr,Symbol:()=>Tp,TemplateLiteral:()=>Sp,Transform:()=>Ov,Tuple:()=>On,Uint8Array:()=>Cp,Uncapitalize:()=>cv,Undefined:()=>Op,Union:()=>$e,Unknown:()=>no,Unsafe:()=>Cv,Uppercase:()=>uv,Void:()=>kv});var d=Yb;var ao=d.Object({label:d.String(),domain:d.Optional(d.Tuple([d.Number(),d.Number()]))}),nf=d.Object({type:d.Union([d.Literal("identity"),d.Literal("horizontal"),d.Literal("vertical")]),value:d.Optional(d.Number())}),Pee=d.Object({schemaVersion:d.Literal("1.0"),title:d.Optional(d.String()),xAxis:ao,yAxis:ao,references:d.Optional(d.Array(nf))});var w8=d.Object({model:d.String(),population:d.Optional(d.String()),horizon:d.Optional(d.Number()),predicted:d.Number({minimum:0,maximum:1}),observed:d.Number({minimum:0,maximum:1}),method:d.Union([d.Literal("discrete"),d.Literal("smooth")]),events:d.Optional(d.Number({minimum:0})),total:d.Optional(d.Number({minimum:0}))}),S8=d.Object({model:d.String(),population:d.Optional(d.String()),horizon:d.Optional(d.Number()),midpoint:d.Number({minimum:0,maximum:1}),count:d.Number({minimum:0}),binWidth:d.Number({exclusiveMinimum:0,maximum:1})}),Wb=d.Object({schemaVersion:d.Literal("1.0"),type:d.Literal("calibration"),data:d.Array(w8),distribution:d.Optional(d.Array(S8)),x:d.Literal("predicted"),y:d.Literal("observed"),xAxis:ao,yAxis:ao,references:d.Optional(d.Array(nf))});var v8=d.Object({model:d.String(),population:d.Optional(d.String()),horizon:d.Optional(d.Number()),cutoff:d.Number(),sensitivity:d.Number({minimum:0,maximum:1}),specificity:d.Number({minimum:0,maximum:1})}),Xb=d.Object({schemaVersion:d.Literal("1.0"),type:d.Literal("roc"),data:d.Array(v8),x:d.Literal("false_positive_rate"),y:d.Literal("sensitivity"),xAxis:ao,yAxis:ao,references:d.Optional(d.Array(nf))});var I8=d.Union([Xb,Wb],{$id:"https://rtichoke.dev/schema/viz/1.0.json",title:"rtichoke visualization specification"});var $r=d.Object({id:d.String(),model:d.Optional(d.String()),population:d.String(),label:d.Optional(d.String())}),Nv=d.Union([d.Literal("model"),d.Literal("population"),d.Literal("evaluation"),d.Literal("context")]),Rv=d.Object({label:d.String(),group:d.String(),role:Nv}),gc=d.Object({id:d.String(),evaluationId:d.String(),horizon:d.Optional(d.Number({minimum:0})),display:Rv}),_8=d.Object({x:d.Number(),y:d.Number()}),Zb=d.Union([d.Object({type:d.Literal("identity"),label:d.Optional(d.String())}),d.Object({type:d.Literal("horizontal"),value:d.Number(),label:d.Optional(d.String())}),d.Object({type:d.Literal("vertical"),value:d.Number(),label:d.Optional(d.String())}),d.Object({type:d.Literal("path"),points:d.Array(_8,{minItems:2}),label:d.Optional(d.String())})]),P8=d.Intersect([Zb,d.Object({scope:d.Literal("global")})]),M8=d.Intersect([Zb,d.Object({scope:d.Literal("population"),population:d.String()})]),T8=d.Intersect([Zb,d.Object({scope:d.Literal("population_horizon"),population:d.String(),horizon:d.Number({minimum:0})})]),Ev=d.Union([P8,M8,T8]),Zr=d.Object({schemaVersion:d.Literal("2.0"),title:d.Optional(d.String()),evaluations:d.Array($r),series:d.Array(gc),xAxis:ao,yAxis:ao,references:d.Optional(d.Array(Ev))}),of=d.Union([d.Literal("probability_threshold"),d.Literal("ppcr")]),Si=d.Object({operatingPoint:d.Optional(d.Object({dimension:of}))}),Dp=d.Object({operatingPoint:d.Optional(d.Object({dimension:d.Literal("probability_threshold")}))});var Av=d.Object({seriesId:d.String(),predicted:d.Number({minimum:0,maximum:1}),observed:d.Number({minimum:0,maximum:1}),method:d.Literal("discrete"),events:d.Optional(d.Number({minimum:0})),total:d.Optional(d.Number({minimum:0}))}),Fv=d.Object({seriesId:d.String(),predicted:d.Number({minimum:0,maximum:1}),observed:d.Number(),method:d.Literal("smooth"),events:d.Optional(d.Number({minimum:0})),total:d.Optional(d.Number({minimum:0}))}),$v=d.Union([Av,Fv]),O8=d.Object({seriesId:d.String(),midpoint:d.Number({minimum:0,maximum:1}),count:d.Number({minimum:0}),binWidth:d.Number({exclusiveMinimum:0,maximum:1})}),Qb=d.Intersect([Zr,d.Object({type:d.Literal("calibration"),data:d.Array($v),distribution:d.Optional(d.Array(O8)),x:d.Literal("predicted"),y:d.Literal("observed")})]);var Jb=d.Union([d.Literal("true_positives"),d.Literal("true_negatives"),d.Literal("false_positives"),d.Literal("false_negatives"),d.Literal("sensitivity"),d.Literal("specificity"),d.Literal("false_positive_rate"),d.Literal("ppv"),d.Literal("npv"),d.Literal("lift"),d.Literal("predicted_positives"),d.Literal("ppcr"),d.Literal("net_benefit"),d.Literal("net_benefit_interventions_avoided")]),Dv=d.Object({id:Jb,label:d.String()}),Mr=d.Object({metricId:Jb,estimate:d.Union([d.Number(),d.Null()]),lower:d.Optional(d.Union([d.Number(),d.Null()])),upper:d.Optional(d.Union([d.Number(),d.Null()]))}),Lv=d.Union([d.Object({type:d.Literal("probability_threshold"),value:d.Number()}),d.Object({type:d.Literal("ppcr"),value:d.Number({minimum:0,maximum:1})})]),Vv=d.Object({censoringHeuristic:d.Optional(d.String()),competingEventHeuristic:d.Optional(d.String())}),zv=d.Object({evaluationId:d.String(),horizon:d.Optional(d.Number({minimum:0})),operatingPoint:Lv,context:d.Optional(Vv),values:d.Array(Mr)}),ey=d.Object({schemaVersion:d.Literal("2.0"),type:d.Literal("performance_table"),title:d.Optional(d.String()),evaluations:d.Array($r),metrics:d.Array(Dv),rows:d.Array(zv)});var Uv=d.Object({seriesId:d.String(),threshold:d.Number({minimum:0,maximum:1}),netBenefit:d.Number(),performance:d.Optional(d.Array(Mr))}),Bv=d.Intersect([$r,d.Object({id:d.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),Gv=d.Intersect([gc,d.Object({id:d.String({pattern:"^series-[1-9][0-9]*$"}),evaluationId:d.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),Kv=d.Object({type:d.Literal("horizontal"),value:d.Literal(0),label:d.Optional(d.String()),scope:d.Literal("global"),benchmark:d.Literal("treat_none")}),jv={type:d.Literal("path"),points:d.Array(d.Object({x:d.Number(),y:d.Number()}),{minItems:2}),label:d.Optional(d.String()),benchmark:d.Literal("treat_all")},qv=d.Union([d.Object({...jv,scope:d.Literal("population"),population:d.String()}),d.Object({...jv,scope:d.Literal("population_horizon"),population:d.String(),horizon:d.Number({minimum:0})})]),Hv=d.Union([Kv,qv]),ty=d.Intersect([Zr,Dp,d.Object({type:d.Literal("decision_curve"),evaluations:d.Array(Bv,{minItems:1}),series:d.Array(Gv,{minItems:1}),data:d.Array(Uv),x:d.Literal("threshold"),y:d.Literal("netBenefit"),references:d.Array(Hv,{minItems:2})})]);var C8=d.Object({seriesId:d.String(),cutoff:d.Number(),ppcr:d.Number({minimum:0,maximum:1}),sensitivity:d.Number({minimum:0,maximum:1}),performance:d.Optional(d.Array(Mr))}),ry=d.Intersect([Zr,Si,d.Object({type:d.Literal("gains"),data:d.Array(C8),x:d.Literal("ppcr"),y:d.Literal("sensitivity")})]);var Wv=d.Object({seriesId:d.String(),threshold:d.Number({minimum:0,maximum:1}),interventionsAvoided:d.Number(),performance:d.Optional(d.Array(Mr))}),Xv=d.Intersect([$r,d.Object({id:d.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),Zv=d.Intersect([gc,d.Object({id:d.String({pattern:"^series-[1-9][0-9]*$"}),evaluationId:d.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),Qv=d.Object({type:d.Literal("horizontal"),value:d.Literal(0),label:d.Optional(d.String()),scope:d.Literal("global"),benchmark:d.Literal("treat_all")}),Yv={type:d.Literal("path"),points:d.Array(d.Object({x:d.Number(),y:d.Number()}),{minItems:2}),label:d.Optional(d.String()),benchmark:d.Literal("treat_none")},Jv=d.Union([d.Object({...Yv,scope:d.Literal("population"),population:d.String()}),d.Object({...Yv,scope:d.Literal("population_horizon"),population:d.String(),horizon:d.Number({minimum:0})})]),eI=d.Union([Qv,Jv]),ny=d.Intersect([Zr,Dp,d.Object({type:d.Literal("interventions_avoided"),evaluations:d.Array(Xv,{minItems:1}),series:d.Array(Zv,{minItems:1}),data:d.Array(Wv),x:d.Literal("threshold"),y:d.Literal("interventionsAvoided"),references:d.Array(eI,{minItems:2})})]);var k8=d.Object({seriesId:d.String(),cutoff:d.Number(),ppcr:d.Number({minimum:0,maximum:1}),lift:d.Number(),performance:d.Optional(d.Array(Mr))}),oy=d.Intersect([Zr,Si,d.Object({type:d.Literal("lift"),data:d.Array(k8),x:d.Literal("ppcr"),y:d.Literal("lift")})]);var N8=d.Object({seriesId:d.String(),cutoff:d.Number(),ppcr:d.Optional(d.Number({minimum:0,maximum:1})),sensitivity:d.Number({minimum:0,maximum:1}),ppv:d.Number({minimum:0,maximum:1}),performance:d.Optional(d.Array(Mr))}),iy=d.Intersect([Zr,Si,d.Object({type:d.Literal("precision_recall"),data:d.Array(N8),x:d.Literal("sensitivity"),y:d.Literal("ppv")})]);var tI=d.Object({stateId:d.String(),label:d.Optional(d.String()),estimate:d.Optional(d.Union([d.Number(),d.Null()])),mass:d.Optional(d.Union([d.Number(),d.Null()])),count:d.Optional(d.Union([d.Integer(),d.Null()])),lower:d.Optional(d.Union([d.Number(),d.Null()])),upper:d.Optional(d.Union([d.Number(),d.Null()]))}),rI=d.Object({type:d.String(),lower:d.Optional(d.Union([d.Number(),d.Null()])),upper:d.Optional(d.Union([d.Number(),d.Null()])),includeLower:d.Optional(d.Boolean()),includeUpper:d.Optional(d.Boolean()),rankLower:d.Optional(d.Union([d.Number(),d.Null()])),rankUpper:d.Optional(d.Union([d.Number(),d.Null()])),operatingPointType:d.Optional(d.String()),cutoff:d.Optional(d.Union([d.Number(),d.Null()])),value:d.Optional(d.Union([d.Number(),d.Null()])),realizedPpcr:d.Optional(d.Union([d.Number(),d.Null()]))}),af=d.Object({evaluationId:d.String(),horizon:d.Optional(d.Union([d.Number(),d.Null()])),estimator:d.String(),estimateOrigin:d.Optional(d.Union([d.Literal("event_table"),d.Literal("fixed_time_horizon"),d.Literal("observed_step")])),stratum:d.Optional(rI),region:d.Optional(d.String()),censoringHeuristic:d.Optional(d.String()),competingHeuristic:d.Optional(d.String()),states:d.Array(tI,{minItems:1}),regimeId:d.Optional(d.String()),interventionId:d.Optional(d.String()),estimand:d.Optional(d.String()),contrastId:d.Optional(d.String())});var nI=d.Object({evaluationId:d.String(),lower:d.Number({minimum:0,maximum:1}),upper:d.Number({minimum:0,maximum:1}),includeLower:d.Boolean(),includeUpper:d.Boolean(),nPositive:d.Integer({minimum:0}),nNegative:d.Integer({minimum:0})}),R8=d.Object({evaluationId:d.String(),rankLower:d.Number({minimum:0,maximum:1}),rankUpper:d.Number({minimum:0,maximum:1}),positiveMass:d.Number({minimum:0}),negativeMass:d.Number({minimum:0})}),oI=d.Object({evaluationId:d.String(),type:of,value:d.Number({minimum:0,maximum:1}),cutoff:d.Number({minimum:0,maximum:1}),realizedPpcr:d.Number({minimum:0,maximum:1}),performance:d.Optional(d.Array(Mr))}),sf=d.Object({schemaVersion:d.Literal("2.0"),type:d.Literal("prediction_distribution"),title:d.Optional(d.String()),evaluations:d.Array($r,{minItems:1}),operatingPoint:d.Optional(d.Object({dimension:of})),bins:d.Array(nI,{minItems:1}),rankBins:d.Optional(d.Array(R8)),operatingPoints:d.Array(oI,{minItems:1}),stateDistributions:d.Optional(d.Array(af))});var E8=d.Object({seriesId:d.String(),cutoff:d.Number(),ppcr:d.Optional(d.Number({minimum:0,maximum:1})),sensitivity:d.Number({minimum:0,maximum:1}),specificity:d.Number({minimum:0,maximum:1}),performance:d.Optional(d.Array(Mr))}),ay=d.Intersect([Zr,Si,d.Object({type:d.Literal("roc"),data:d.Array(E8),x:d.Literal("false_positive_rate"),y:d.Literal("sensitivity")})]);var sy=d.Union([ay,Qb,iy,ry,oy,ty,ny,sf],{$id:"https://rtichoke.dev/schema/viz/2.0.json",title:"rtichoke visualization specification v2"});var cy=d.Object({id:d.String(),label:d.String()}),uy=d.Object({metric:d.Literal("auroc"),owner:d.Object({type:d.Literal("evaluation"),evaluationId:d.String()}),estimate:d.Union([d.Number(),d.Null()])}),fy=d.Object({metric:d.Literal("prevalence"),owner:d.Object({type:d.Literal("population"),populationId:d.String()}),estimate:d.Union([d.Number(),d.Null()])}),A8=d.Object({metric:d.Literal("event_risk"),owner:d.Object({type:d.Literal("population"),populationId:d.String()}),horizon:d.Number({minimum:0}),estimate:d.Union([d.Number(),d.Null()])}),F8=d.Union([uy,fy]),iI=d.Union([uy,fy,A8]),$8=iI,D8=d.Object({schemaVersion:d.Literal("1.0"),type:d.Literal("summary_metrics"),title:d.Optional(d.String()),evaluations:d.Array($r),populations:d.Array(cy),metrics:d.Array(F8)}),L8=d.Object({schemaVersion:d.Literal("1.1"),type:d.Literal("summary_metrics"),title:d.Optional(d.String()),evaluations:d.Array($r),populations:d.Array(cy),metrics:d.Array(iI)}),ly=d.Union([D8,L8],{$id:"https://rtichoke.dev/schema/viz/summary-metrics.json",title:"rtichoke summary metrics specification"});var py=d.Object({schemaVersion:d.Literal("2.0"),type:d.Literal("outcome_distribution"),title:d.Optional(d.String()),stateScale:d.Optional(d.Union([d.Literal("ordinal"),d.Literal("nominal")])),evaluations:d.Array($r,{minItems:1}),stateDistributions:d.Array(af,{minItems:1})});var my=d.Union([sy,ey,ly,sf,py]),aI=d.Object({id:d.String(),title:d.Optional(d.String()),spec:my}),Lp=d.Object({schemaVersion:d.Literal("1.0"),type:d.Literal("report"),title:d.Optional(d.String()),components:d.Array(aI,{minItems:1})}),dy=d.Object({type:d.Literal("component"),id:d.String(),title:d.Optional(d.String()),spec:my}),sI=d.Object({type:d.Literal("group"),id:d.String(),title:d.String(),components:d.Array(dy,{minItems:1})}),cI=d.Object({id:d.String(),title:d.String(),items:d.Array(d.Union([dy,sI]),{minItems:1})}),Vp=d.Object({schemaVersion:d.Literal("1.1"),type:d.Literal("report"),title:d.Optional(d.String()),sections:d.Array(cI,{minItems:1})}),V8=d.Union([Lp,Vp],{$id:"https://rtichoke.dev/schema/viz/report.json",title:"rtichoke report specification"});function zp(e){let t=new Set,r=i=>{if(t.has(i.id))throw new Error(`duplicate component id: ${i.id}`);t.add(i.id)};if(e.schemaVersion==="1.0"){for(let i of e.components)r(i);return}let n=new Set,o=new Set;for(let i of e.sections){if(n.has(i.id))throw new Error(`duplicate section id: ${i.id}`);n.add(i.id);for(let a of i.items){if(a.type==="component"){r(a);continue}if(o.has(a.id))throw new Error(`duplicate group id: ${a.id}`);o.add(a.id);for(let s of a.components)r(s)}}}function hy(e){let t=new Set;for(let n of e.evaluations){if(t.has(n.id))throw new Error(`duplicate evaluation id: ${n.id}`);t.add(n.id)}let r=new Set;for(let n of e.metrics){if(r.has(n.id))throw new Error(`duplicate metric id: ${n.id}`);r.add(n.id)}for(let n of e.rows){if(!t.has(n.evaluationId))throw new Error(`unknown evaluation id: ${n.evaluationId}`);for(let o of n.values)if(!r.has(o.metricId))throw new Error(`unknown metric id: ${o.metricId}`)}}function jp(e,t){if(t&&!t.has(e.evaluationId))throw new Error(`unknown evaluation id: ${e.evaluationId}`);if(e.horizon!==void 0&&e.horizon!==null&&(!Number.isFinite(e.horizon)||e.horizon<0))throw new Error(`horizon must be finite and non-negative for evaluation ${e.evaluationId}`);if(e.estimateOrigin==="observed_step"){if(e.horizon===void 0||e.horizon===null||!Number.isInteger(e.horizon)||e.horizon<0)throw new Error(`step (horizon) must be a non-negative integer for observed_step in evaluation ${e.evaluationId}`);if(e.estimator!=="raw"&&e.estimator!=="aalen_johansen")throw new Error(`unsupported estimator '${e.estimator}' for observed_step in evaluation ${e.evaluationId}`)}if(e.estimateOrigin!==void 0&&e.estimateOrigin!==null&&e.estimateOrigin!=="event_table"&&e.estimateOrigin!=="fixed_time_horizon"&&e.estimateOrigin!=="observed_step")throw new Error(`invalid estimateOrigin '${e.estimateOrigin}' for evaluation ${e.evaluationId}`);if(!e.states||e.states.length===0)throw new Error(`states must be non-empty for evaluation ${e.evaluationId}`);if(e.estimateOrigin==="observed_step"){if(e.estimator==="raw"){let r=0;for(let n of e.states){if(n.count===void 0||n.count===null)throw new Error(`count is required for state ${n.stateId} when estimator is 'raw' in observed_step`);if(!Number.isInteger(n.count)||n.count<0)throw new Error(`count must be a non-negative integer for state ${n.stateId}`);r+=n.count}if(r===0)throw new Error(`total observed count across states must be greater than zero for step ${e.horizon}`)}else if(e.estimator==="aalen_johansen"){let r=0;for(let n of e.states){if(n.estimate===void 0||n.estimate===null)throw new Error(`estimate is required for state ${n.stateId} when estimator is 'aalen_johansen' in observed_step`);if(!Number.isFinite(n.estimate)||n.estimate<0||n.estimate>1)throw new Error(`estimate must be a finite probability in [0, 1] for state ${n.stateId}`);r+=n.estimate}if(Math.abs(r-1)>1e-8)throw new Error(`occupancy estimates across states must sum to 1.0 (got ${r}) for step ${e.horizon}`)}}for(let r of e.states){if(r.estimate!==void 0&&r.estimate!==null&&(!Number.isFinite(r.estimate)||r.estimate<0||r.estimate>1))throw new Error(`estimate must be a finite probability in [0, 1] for state ${r.stateId}`);if(r.lower!==void 0&&r.lower!==null&&(!Number.isFinite(r.lower)||r.lower<0||r.lower>1))throw new Error(`lower bound must be a finite probability in [0, 1] for state ${r.stateId}`);if(r.upper!==void 0&&r.upper!==null&&(!Number.isFinite(r.upper)||r.upper<0||r.upper>1))throw new Error(`upper bound must be a finite probability in [0, 1] for state ${r.stateId}`);if(r.lower!==void 0&&r.lower!==null&&r.upper!==void 0&&r.upper!==null&&r.lower>r.upper)throw new Error(`lower bound ${r.lower} cannot exceed upper bound ${r.upper} for state ${r.stateId}`);if(r.mass!==void 0&&r.mass!==null&&(!Number.isFinite(r.mass)||r.mass<0))throw new Error(`mass must be finite and non-negative for state ${r.stateId}`);if(r.count!==void 0&&r.count!==null&&(!Number.isInteger(r.count)||r.count<0))throw new Error(`count must be a non-negative integer for state ${r.stateId}`)}if(e.stratum){let r=e.stratum;if(r.lower!==void 0&&r.lower!==null&&r.upper!==void 0&&r.upper!==null&&r.lower>r.upper)throw new Error(`stratum lower bound ${r.lower} cannot exceed upper bound ${r.upper} for evaluation ${e.evaluationId}`);if(r.rankLower!==void 0&&r.rankLower!==null&&r.rankUpper!==void 0&&r.rankUpper!==null&&r.rankLower>r.rankUpper)throw new Error(`stratum rankLower ${r.rankLower} cannot exceed rankUpper ${r.rankUpper} for evaluation ${e.evaluationId}`)}}function gy(e){let t=new Set;for(let i of e.evaluations){if(t.has(i.id))throw new Error(`duplicate evaluation id: ${i.id}`);t.add(i.id)}if(!e.stateDistributions||e.stateDistributions.length===0)throw new Error("stateDistributions must be non-empty");let r=new Set,n=new Set,o=new Map;for(let i of e.stateDistributions){jp(i,t);let a=i.estimateOrigin??"unspecified",s=`${i.evaluationId}|${a}:${i.horizon??0}`;if(n.has(s))throw new Error(`multiple state distributions defined for evaluation ${i.evaluationId} at step/horizon ${i.horizon??0}`);if(n.add(s),i.estimateOrigin==="observed_step"){let c=`${i.evaluationId}|${i.estimator}|${i.horizon}|${i.censoringHeuristic??""}|${i.competingHeuristic??""}`;if(r.has(c))throw new Error(`duplicate distribution for evaluation ${i.evaluationId}, estimator ${i.estimator}, and step ${i.horizon}`);r.add(c);let f=i.states.map(l=>l.stateId),u=`${i.evaluationId}|${i.estimator}`,p=o.get(u);if(!p)o.set(u,f);else if(f.length!==p.length||!f.every((l,m)=>l===p[m]))throw new Error(`inconsistent state ordering across steps for evaluation ${i.evaluationId}`)}}}function cf(e){if(e.operatingPoint?.dimension){let i=e.operatingPoint.dimension;if(!e.operatingPoints.some(s=>s.type===i))throw new Error(`configured operatingPoint dimension ${i} is not present in operatingPoints`)}let t=new Set;for(let i of e.evaluations){if(t.has(i.id))throw new Error(`duplicate evaluation id: ${i.id}`);t.add(i.id)}if(e.stateDistributions)for(let i of e.stateDistributions)jp(i,t);let r=new Map;for(let i of e.bins){if(!t.has(i.evaluationId))throw new Error(`unknown evaluation id: ${i.evaluationId}`);let a=r.get(i.evaluationId);a||(a=[],r.set(i.evaluationId,a)),a.push(i)}let n=new Map,o=new Set;for(let i of e.operatingPoints){if(!t.has(i.evaluationId))throw new Error(`unknown evaluation id: ${i.evaluationId}`);let a=`${i.evaluationId}\0${i.type}\0${i.value}`;if(o.has(a))throw new Error(`duplicate operating point: evaluationId=${i.evaluationId}, type=${i.type}, value=${i.value}`);if(o.add(a),!Number.isFinite(i.value)||i.value<0||i.value>1||!Number.isFinite(i.cutoff)||i.cutoff<0||i.cutoff>1||!Number.isFinite(i.realizedPpcr)||i.realizedPpcr<0||i.realizedPpcr>1)throw new Error(`invalid operating point bounds for evaluation ${i.evaluationId}`);if(i.type==="probability_threshold"&&Math.abs(i.value-i.cutoff)>1e-9)throw new Error(`probability_threshold value ${i.value} must equal cutoff ${i.cutoff} for evaluation ${i.evaluationId}`);let s=n.get(i.evaluationId);s||(s=[],n.set(i.evaluationId,s)),s.push(i)}for(let i of t){let a=r.get(i);if(!a||a.length===0)throw new Error(`evaluation ${i} has no bins`);let s=n.get(i);if(!s||s.length===0)throw new Error(`evaluation ${i} has no operating points`);let c=a[0];if(c.lower!==0||c.upper!==0||c.includeLower!==!0||c.includeUpper!==!0)throw new Error(`first bin for evaluation ${i} must be [0, 0]`);let f=new Set([0]),u=c.nPositive+c.nNegative;if(!Number.isInteger(c.nPositive)||c.nPositive<0||!Number.isInteger(c.nNegative)||c.nNegative<0)throw new Error(`invalid bin counts for evaluation ${i}`);for(let p=1;p1||!Number.isFinite(l.upper)||l.upper<0||l.upper>1)throw new Error(`invalid bin bounds for evaluation ${i}`);if(!Number.isInteger(l.nPositive)||l.nPositive<0||!Number.isInteger(l.nNegative)||l.nNegative<0)throw new Error(`invalid bin counts for evaluation ${i}`);if(l.includeLower!==!1||l.includeUpper!==!0)throw new Error(`bin ${p} for evaluation ${i} must be (lower, upper]`);if(l.lower>=l.upper)throw new Error(`bin ${p} for evaluation ${i} must be nondegenerate`);if(l.lower!==a[p-1].upper)throw new Error(`bins for evaluation ${i} must be contiguous and ascending`);f.add(l.upper),u+=l.nPositive+l.nNegative}if(a[a.length-1].upper!==1)throw new Error(`final bin upper bound for evaluation ${i} must be 1`);if(u<=0)throw new Error(`total count for evaluation ${i} must be positive`);for(let p of s)if(p.type==="probability_threshold"){if(p.cutoff!==0&&!f.has(p.cutoff))throw new Error(`operating point cutoff ${p.cutoff} for evaluation ${i} does not match any bin upper boundary`);let l=0;if(p.cutoff===0)l=u;else for(let h of a)h.upper>p.cutoff&&(l+=h.nPositive+h.nNegative);let m=l/u;if(Math.abs(p.realizedPpcr-m)>1e-6)throw new Error(`operating point realizedPpcr ${p.realizedPpcr} for evaluation ${i} does not match reconstructed count fraction ${m}`)}}}function by(e){let t=new Set;for(let o of e.evaluations){if(t.has(o.id))throw new Error(`duplicate evaluation id: ${o.id}`);t.add(o.id)}let r=new Set;for(let o of e.populations){if(r.has(o.id))throw new Error(`duplicate population id: ${o.id}`);r.add(o.id)}let n=new Set;for(let o of e.metrics){if(o.estimate!==null&&!Number.isFinite(o.estimate))throw new Error(`non-finite metric estimate: ${o.estimate}`);if("horizon"in o&&o.horizon!==void 0&&(!Number.isFinite(o.horizon)||o.horizon<0))throw new Error(`invalid horizon: ${o.horizon}`);if(o.metric==="auroc"){if("horizon"in o&&o.horizon!==void 0)throw new Error("auroc metric cannot specify horizon");if(!t.has(o.owner.evaluationId))throw new Error(`unknown evaluation id: ${o.owner.evaluationId}`);let i=`auroc:${o.owner.evaluationId}`;if(n.has(i))throw new Error(`duplicate metric ownership: auroc for evaluation ${o.owner.evaluationId}`);n.add(i)}else if(o.metric==="prevalence"){if("horizon"in o&&o.horizon!==void 0)throw new Error("prevalence metric cannot specify horizon");if(!r.has(o.owner.populationId))throw new Error(`unknown population id: ${o.owner.populationId}`);let i=`prevalence:${o.owner.populationId}`;if(n.has(i))throw new Error(`duplicate metric ownership: prevalence for population ${o.owner.populationId}`);n.add(i)}else if(o.metric==="event_risk"){if(e.schemaVersion!=="1.1")throw new Error(`event_risk metric requires schemaVersion 1.1, got ${e.schemaVersion}`);if(!("horizon"in o)||o.horizon===void 0)throw new Error("event_risk metric requires horizon");if(!r.has(o.owner.populationId))throw new Error(`unknown population id: ${o.owner.populationId}`);let i=`event_risk:${o.owner.populationId}:${o.horizon}`;if(n.has(i))throw new Error(`duplicate metric ownership: event_risk for population ${o.owner.populationId} at horizon ${o.horizon}`);n.add(i)}}}function vi(e){if(e.type==="prediction_distribution"){cf(e);return}let t=new Set(e.evaluations.map(o=>o.id)),r=new Set;if(t.size!==e.evaluations.length)throw new Error("duplicate evaluation id");for(let o of e.series){if(r.has(o.id))throw new Error(`duplicate series id: ${o.id}`);if(r.add(o.id),!t.has(o.evaluationId))throw new Error(`unknown evaluation id: ${o.evaluationId}`)}for(let o of e.data)if(!r.has(o.seriesId))throw new Error(`unknown series id: ${o.seriesId}`);if(e.type==="calibration"){for(let o of e.distribution??[])if(!r.has(o.seriesId))throw new Error(`unknown distribution series id: ${o.seriesId}`)}let n=new Set(e.evaluations.map(o=>o.population));for(let o of e.references??[])if((o.scope==="population"||o.scope==="population_horizon")&&!n.has(o.population))throw new Error(`unknown reference population: ${o.population}`);if(e.type==="decision_curve"){let o=e,i=o.references;o.evaluations.forEach((h,y)=>{let b=`evaluation-${y+1}`;if(h.id!==b)throw new Error(`decision curve evaluation ids must be ordinal: expected ${b}`)});let a=o.series.filter(h=>h.horizon!==void 0).length;if(a!==0&&a!==o.series.length)throw new Error("decision curve cannot mix static and horizon-qualified series");let s=a>0,c=[...new Set(o.series.map(h=>h.horizon).filter(h=>h!==void 0))],f=new Set;if(o.series.forEach((h,y)=>{if(h.id!==`series-${y+1}`)throw new Error(`decision curve series ids must be ordinal: expected series-${y+1}`);let b=o.evaluations.find(w=>w.id===h.evaluationId),x=b.model??b.population,g=b.model===void 0?"population":"model";if(h.display.label!==x||h.display.group!==x||h.display.role!==g)throw new Error("decision curve display must follow evaluation semantics");let S=`${h.evaluationId}\0${h.horizon??"static"}`;if(f.has(S))throw new Error(`duplicate decision curve evaluation-horizon series: ${h.evaluationId}`);f.add(S)}),s){if(!o.evaluations.every(y=>c.every(b=>f.has(`${y.id}\0${b}`)))||o.series.length!==o.evaluations.length*c.length)throw new Error("decision curve requires exactly one series per evaluation and horizon")}else if(o.series.length!==o.evaluations.length||o.evaluations.some(h=>!f.has(`${h.id}\0static`)))throw new Error("decision curve requires exactly one series per evaluation");if(i.filter(h=>"benchmark"in h&&h.benchmark==="treat_none").length!==1)throw new Error("decision curve requires exactly one Treat None reference");let p=i.filter(h=>"benchmark"in h&&h.benchmark==="treat_all"),l=new Set;for(let h of p){if(s&&h.scope!=="population_horizon")throw new Error("time-dependent decision curve Treat All must use population_horizon scope");if(!s&&h.scope!=="population")throw new Error("static decision curve Treat All must use population scope");let y=h.scope==="population_horizon"?`${h.population}\0${h.horizon}`:h.population;if(l.has(y))throw new Error(`duplicate Treat All owner: ${h.population}`);l.add(y)}let m=s?[...n].flatMap(h=>c.map(y=>`${h}\0${y}`)):[...n];if(l.size!==m.length||m.some(h=>!l.has(h)))throw new Error(s?"decision curve requires exactly one Treat All reference per population and horizon":"decision curve requires exactly one Treat All reference per population")}if(e.type==="interventions_avoided"){let o=e,i=o.references;o.evaluations.forEach((h,y)=>{let b=`evaluation-${y+1}`;if(h.id!==b)throw new Error(`interventions avoided evaluation ids must be ordinal: expected ${b}`)});let a=o.series.filter(h=>h.horizon!==void 0).length;if(a!==0&&a!==o.series.length)throw new Error("interventions avoided cannot mix static and horizon-qualified series");let s=a>0,c=[...new Set(o.series.map(h=>h.horizon).filter(h=>h!==void 0))],f=new Set;if(o.series.forEach((h,y)=>{if(h.id!==`series-${y+1}`)throw new Error(`interventions avoided series ids must be ordinal: expected series-${y+1}`);let b=o.evaluations.find(w=>w.id===h.evaluationId);if(!b)throw new Error(`unknown evaluation id: ${h.evaluationId}`);let x=b.model??b.population,g=b.model===void 0?"population":"model";if(h.display.label!==x||h.display.group!==x||h.display.role!==g)throw new Error("interventions avoided display must follow evaluation semantics");let S=`${h.evaluationId}\0${h.horizon??"static"}`;if(f.has(S))throw new Error(`duplicate interventions avoided evaluation-horizon series: ${h.evaluationId}`);f.add(S)}),s){if(!o.evaluations.every(y=>c.every(b=>f.has(`${y.id}\0${b}`)))||o.series.length!==o.evaluations.length*c.length)throw new Error("interventions avoided requires exactly one series per evaluation and horizon")}else if(o.series.length!==o.evaluations.length||o.evaluations.some(h=>!f.has(`${h.id}\0static`)))throw new Error("interventions avoided requires exactly one series per evaluation");let u=i.filter(h=>"benchmark"in h&&h.benchmark==="treat_all");if(u.length!==1)throw new Error("interventions avoided requires exactly one Treat All reference");if(u[0].scope!=="global"||u[0].type!=="horizontal"||u[0].value!==0)throw new Error("interventions avoided Treat All must be the global zero reference");let p=i.filter(h=>"benchmark"in h&&h.benchmark==="treat_none"),l=new Set;for(let h of p){if(s&&h.scope!=="population_horizon")throw new Error("time-dependent interventions avoided Treat None must use population_horizon scope");if(!s&&h.scope!=="population")throw new Error("static interventions avoided Treat None must use population scope");let y=h.scope==="population_horizon"?`${h.population}\0${h.horizon}`:h.population;if(l.has(y))throw new Error(`duplicate Treat None owner: ${h.population}`);l.add(y)}let m=s?[...n].flatMap(h=>c.map(y=>`${h}\0${y}`)):[...n];if(l.size!==m.length||m.some(h=>!l.has(h)))throw new Error(s?"interventions avoided requires exactly one Treat None reference per population and horizon":"interventions avoided requires exactly one Treat None reference per population")}}function uI(e){return{schemaVersion:"1.0",type:"roc",data:e,x:"false_positive_rate",y:"sensitivity",xAxis:{label:"1 - Specificity",domain:[0,1]},yAxis:{label:"Sensitivity",domain:[0,1]},references:[{type:"identity"}]}}function z8(e){return uI(e.map(t=>({model:t.model,cutoff:t.probability_threshold,sensitivity:t.sensitivity,specificity:t.specificity})))}function j8(e){return uI(e.map(t=>({model:t.reference_group,cutoff:t.chosen_cutoff,sensitivity:t.sensitivity,specificity:t.specificity})))}function U8(e,t,r){let n=e.map(i=>{let a=i.sum_reals??i.n_reals,s=i.total_obs??i.n;return{model:i.reference_group,predicted:i.x,observed:i.y,method:t,...t==="discrete"&&a!==void 0?{events:a}:{},...t==="discrete"&&s!==void 0?{total:s}:{}}}),o=r?.map(i=>({model:i.reference_group,midpoint:i.mids,count:i.counts,binWidth:.01}));return{schemaVersion:"1.0",type:"calibration",data:n,...o?{distribution:o}:{},x:"predicted",y:"observed",xAxis:{label:"Predicted probability",domain:[0,1]},yAxis:{label:"Observed probability",domain:[0,1]},references:[{type:"identity"}]}}function B8(e,t){let r=t.role==="model"?t.population??"population":e,n=`evaluation:${e}`;return{evaluation:{id:n,...t.role==="model"?{model:e}:{},population:r,label:e},series:{id:`series:${e}`,evaluationId:n,display:{label:e,group:e,role:t.role}}}}function yy(e,t){return[...new Set(e)].map(n=>B8(n,t))}function G8(e,t="population"){let r=yy(e.map(n=>n.model),{role:"model",population:t});return{schemaVersion:"2.0",type:"roc",evaluations:r.map(n=>n.evaluation),series:r.map(n=>n.series),data:e.map(n=>({seriesId:`series:${n.model}`,cutoff:n.probability_threshold,sensitivity:n.sensitivity,specificity:n.specificity})),x:"false_positive_rate",y:"sensitivity",xAxis:{label:"1 - Specificity",domain:[0,1]},yAxis:{label:"Sensitivity",domain:[0,1]},references:[{type:"identity",scope:"global",label:"Random Guess"}]}}function K8(e,t){let r=yy(e.map(n=>n.reference_group),t);return{schemaVersion:"2.0",type:"roc",evaluations:r.map(n=>n.evaluation),series:r.map(n=>n.series),data:e.map(n=>({seriesId:`series:${n.reference_group}`,cutoff:n.chosen_cutoff,sensitivity:n.sensitivity,specificity:n.specificity})),x:"false_positive_rate",y:"sensitivity",xAxis:{label:"1 - Specificity",domain:[0,1]},yAxis:{label:"Sensitivity",domain:[0,1]},references:[{type:"identity",scope:"global",label:"Random Guess"}]}}function q8(e,t,r,n){let o=yy(e.map(c=>c.reference_group),r),i=e.map(c=>c.y).filter(Number.isFinite),a=Math.min(0,...i),s=Math.max(1,...i);return{schemaVersion:"2.0",type:"calibration",evaluations:o.map(c=>c.evaluation),series:o.map(c=>c.series),data:e.map(c=>{let f=c.sum_reals??c.n_reals,u=c.total_obs??c.n;return{seriesId:`series:${c.reference_group}`,predicted:c.x,observed:c.y,method:t,...t==="discrete"&&f!==void 0?{events:f}:{},...t==="discrete"&&u!==void 0?{total:u}:{}}}),...n?{distribution:n.map(c=>({seriesId:`series:${c.reference_group}`,midpoint:c.mids,count:c.counts,binWidth:.01}))}:{},x:"predicted",y:"observed",xAxis:{label:"Predicted probability",domain:[0,1]},yAxis:{label:"Observed probability",domain:[a,s]},references:[{type:"identity",scope:"global",label:"Perfectly Calibrated"}]}}function vt(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function Rn(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function Ii(e){let t,r,n;e.length!==2?(t=vt,r=(s,c)=>vt(e(s),c),n=(s,c)=>e(s)-c):(t=e===vt||e===Rn?e:H8,r=e,n=e);function o(s,c,f=0,u=s.length){if(f>>1;r(s[p],c)<0?f=p+1:u=p}while(f>>1;r(s[p],c)<=0?f=p+1:u=p}while(ff&&n(s[p-1],c)>-n(s[p],c)?p-1:p}return{left:o,center:a,right:i}}function H8(){return 0}function uf(e){return e===null?NaN:+e}function*fI(e,t){if(t===void 0)for(let r of e)r!=null&&(r=+r)>=r&&(yield r);else{let r=-1;for(let n of e)(n=t(n,++r,e))!=null&&(n=+n)>=n&&(yield n)}}var lI=Ii(vt),pI=lI.right,Y8=lI.left,W8=Ii(uf).center,_i=pI;function ts(e,t){let r=0;if(t===void 0)for(let n of e)n!=null&&(n=+n)>=n&&++r;else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(o=+o)>=o&&++r}return r}function X8(e){return e.length|0}function Z8(e){return!(e>0)}function Q8(e){return typeof e!="object"||"length"in e?e:Array.from(e)}function J8(e){return t=>e(...t)}function Up(...e){let t=typeof e[e.length-1]=="function"&&J8(e.pop());e=e.map(Q8);let r=e.map(X8),n=e.length-1,o=new Array(n+1).fill(0),i=[];if(n<0||r.some(Z8))return i;for(;;){i.push(o.map((s,c)=>e[c][s]));let a=n;for(;++o[a]===r[a];){if(a===0)return t?i.map(t):i;o[a--]=0}}}function Bp(e,t){var r=0,n=0;return Float64Array.from(e,t===void 0?o=>r+=+o||0:o=>r+=+t(o,n++,e)||0)}function bc(e,t){let r=0,n,o=0,i=0;if(t===void 0)for(let a of e)a!=null&&(a=+a)>=a&&(n=a-o,o+=n/++r,i+=n*(a-o));else{let a=-1;for(let s of e)(s=t(s,++a,e))!=null&&(s=+s)>=s&&(n=s-o,o+=n/++r,i+=n*(s-o))}if(r>1)return i/(r-1)}function yc(e,t){let r=bc(e,t);return r&&Math.sqrt(r)}function Wt(e,t){let r,n;if(t===void 0)for(let o of e)o!=null&&(r===void 0?o>=o&&(r=n=o):(r>o&&(r=o),n=i&&(r=n=i):(r>i&&(r=i),n0){for(a=t[--r];r>0&&(n=a,o=t[--r],a=n+o,i=o-(a-n),!i););r>0&&(i<0&&t[r-1]<0||i>0&&t[r-1]>0)&&(o=i*2,n=a+o,o==n-a&&(a=n))}return a}};var Dr=class extends Map{constructor(t,r=hI){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let[n,o]of t)this.set(n,o)}get(t){return super.get(xy(this,t))}has(t){return super.has(xy(this,t))}set(t,r){return super.set(mI(this,t),r)}delete(t){return super.delete(dI(this,t))}},so=class extends Set{constructor(t,r=hI){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let n of t)this.add(n)}has(t){return super.has(xy(this,t))}add(t){return super.add(mI(this,t))}delete(t){return super.delete(dI(this,t))}};function xy({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function mI({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function dI({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function hI(e){return e!==null&&typeof e=="object"?e.valueOf():e}function ff(e){return e}function Do(e,...t){return Sy(e,ff,ff,t)}function co(e,t,...r){return Sy(e,ff,t,r)}function wy(e,t,...r){return Sy(e,Array.from,t,r)}function Sy(e,t,r,n){return(function o(i,a){if(a>=n.length)return r(i);let s=new Dr,c=n[a++],f=-1;for(let u of i){let p=c(u,++f,i),l=s.get(p);l?l.push(u):s.set(p,[u])}for(let[u,p]of s)s.set(u,o(p,a));return t(s)})(e,0)}function vy(e,t){return Array.from(t,r=>e[r])}function Pi(e,...t){if(typeof e[Symbol.iterator]!="function")throw new TypeError("values is not iterable");e=Array.from(e);let[r]=t;if(r&&r.length!==2||t.length>1){let n=Uint32Array.from(e,(o,i)=>i);return t.length>1?(t=t.map(o=>e.map(o)),n.sort((o,i)=>{for(let a of t){let s=lf(a[o],a[i]);if(s)return s}})):(r=e.map(r),n.sort((o,i)=>lf(r[o],r[i]))),vy(e,n)}return e.sort(Iy(r))}function Iy(e=vt){if(e===vt)return lf;if(typeof e!="function")throw new TypeError("compare is not a function");return(t,r)=>{let n=e(t,r);return n||n===0?n:(e(r,r)===0)-(e(t,t)===0)}}function lf(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}function xc(e,t,r){return(t.length!==2?Pi(co(e,t,r),(([n,o],[i,a])=>vt(o,a)||vt(n,i))):Pi(Do(e,r),(([n,o],[i,a])=>t(o,a)||vt(n,i)))).map(([n])=>n)}var e3=Math.sqrt(50),t3=Math.sqrt(10),r3=Math.sqrt(2);function Gp(e,t,r){let n=(t-e)/Math.max(0,r),o=Math.floor(Math.log10(n)),i=n/Math.pow(10,o),a=i>=e3?10:i>=t3?5:i>=r3?2:1,s,c,f;return o<0?(f=Math.pow(10,-o)/a,s=Math.round(e*f),c=Math.round(t*f),s/ft&&--c,f=-f):(f=Math.pow(10,o)*a,s=Math.round(e/f),c=Math.round(t/f),s*ft&&--c),c0))return[];if(e===t)return[e];let n=t=o))return[];let s=i-o+1,c=new Array(s);if(n)if(a<0)for(let f=0;f=n)&&(r=n);else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(r=o)&&(r=o)}return r}function qp(e,t){let r,n=-1,o=-1;if(t===void 0)for(let i of e)++o,i!=null&&(r=i)&&(r=i,n=o);else for(let i of e)(i=t(i,++o,e))!=null&&(r=i)&&(r=i,n=o);return n}function Lr(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(r>o||r===void 0&&o>=o)&&(r=o)}return r}function Hp(e,t){let r,n=-1,o=-1;if(t===void 0)for(let i of e)++o,i!=null&&(r>i||r===void 0&&i>=i)&&(r=i,n=o);else for(let i of e)(i=t(i,++o,e))!=null&&(r>i||r===void 0&&i>=i)&&(r=i,n=o);return n}function Yp(e,t,r=0,n=1/0,o){if(t=Math.floor(t),r=Math.floor(Math.max(0,r)),n=Math.floor(Math.min(e.length-1,n)),!(r<=t&&t<=n))return e;for(o=o===void 0?lf:Iy(o);n>r;){if(n-r>600){let c=n-r+1,f=t-r+1,u=Math.log(c),p=.5*Math.exp(2*u/3),l=.5*Math.sqrt(u*p*(c-p)/c)*(f-c/2<0?-1:1),m=Math.max(r,Math.floor(t-f*p/c+l)),h=Math.min(n,Math.floor(t+(c-f)*p/c+l));Yp(e,t,m,h,o)}let i=e[t],a=r,s=n;for(pf(e,r,t),o(e[n],i)>0&&pf(e,r,n);a0;)--s}o(e[r],i)===0?pf(e,r,s):(++s,pf(e,s,n)),s<=t&&(r=s+1),t<=s&&(n=s-1)}return e}function pf(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}function mf(e,t=vt){let r,n=!1;if(t.length===1){let o;for(let i of e){let a=t(i);(n?vt(a,o)>0:vt(a,a)===0)&&(r=i,o=a,n=!0)}}else for(let o of e)(n?t(o,r)>0:t(o,o)===0)&&(r=o,n=!0);return r}function En(e,t,r){if(e=Float64Array.from(fI(e,r)),!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return Lr(e);if(t>=1)return nr(e);var n,o=(n-1)*t,i=Math.floor(o),a=nr(Yp(e,i).subarray(0,i+1)),s=Lr(e.subarray(i+1));return a+(s-a)*(o-i)}}function _y(e,t,r=uf){if(!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return+r(e[0],0,e);if(t>=1)return+r(e[n-1],n-1,e);var n,o=(n-1)*t,i=Math.floor(o),a=+r(e[i],i,e),s=+r(e[i+1],i+1,e);return a+(s-a)*(o-i)}}function Wp(e,t,r){let n=ts(e),o=En(e,.75)-En(e,.25);return n&&o?Math.ceil((r-t)/(2*o*Math.pow(n,-1/3))):1}function df(e,t,r){let n=ts(e),o=yc(e);return n&&o?Math.ceil((r-t)*Math.cbrt(n)/(3.49*o)):1}function Xp(e,t){let r=0,n=0;if(t===void 0)for(let o of e)o!=null&&(o=+o)>=o&&(++r,n+=o);else{let o=-1;for(let i of e)(i=t(i,++o,e))!=null&&(i=+i)>=i&&(++r,n+=i)}if(r)return n/r}function ns(e,t){return En(e,.5,t)}function*o3(e){for(let t of e)yield*t}function Sc(e){return Array.from(o3(e))}function Zp(e,t){let r=new Dr;if(t===void 0)for(let i of e)i!=null&&i>=i&&r.set(i,(r.get(i)||0)+1);else{let i=-1;for(let a of e)(a=t(a,++i,e))!=null&&a>=a&&r.set(a,(r.get(a)||0)+1)}let n,o=0;for(let[i,a]of r)a>o&&(o=a,n=i);return n}function Qp(e,t=i3){let r=[],n,o=!1;for(let i of e)o&&r.push(t(n,i)),n=i,o=!0;return r}function i3(e,t){return[e,t]}function os(e,t,r){e=+e,t=+t,r=(o=arguments.length)<2?(t=e,e=0,1):o<3?1:+r;for(var n=-1,o=Math.max(0,Math.ceil((t-e)/r))|0,i=new Array(o);++n+e(t)}function u3(e,t){return t=Math.max(0,e.bandwidth()-t*2)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function f3(){return!this.__axis}function l3(e,t){var r=[],n=null,o=null,i=6,a=6,s=3,c=typeof window<"u"&&window.devicePixelRatio>1?0:.5,f=e===Py||e===Jp?-1:1,u=e===Jp||e===My?"x":"y",p=e===Py||e===Ty?a3:s3;function l(m){var h=n??(t.ticks?t.ticks.apply(t,r):t.domain()),y=o??(t.tickFormat?t.tickFormat.apply(t,r):gI),b=Math.max(i,0)+s,x=t.range(),g=+x[0]+c,S=+x[x.length-1]+c,w=(t.bandwidth?u3:c3)(t.copy(),c),_=m.selection?m.selection():m,v=_.selectAll(".domain").data([null]),I=_.selectAll(".tick").data(h,t).order(),O=I.exit(),M=I.enter().append("g").attr("class","tick"),E=I.select("line"),C=I.select("text");v=v.merge(v.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),I=I.merge(M),E=E.merge(M.append("line").attr("stroke","currentColor").attr(u+"2",f*i)),C=C.merge(M.append("text").attr("fill","currentColor").attr(u,f*b).attr("dy",e===Py?"0em":e===Ty?"0.71em":"0.32em")),m!==_&&(v=v.transition(m),I=I.transition(m),E=E.transition(m),C=C.transition(m),O=O.transition(m).attr("opacity",bI).attr("transform",function(N){return isFinite(N=w(N))?p(N+c):this.getAttribute("transform")}),M.attr("opacity",bI).attr("transform",function(N){var K=this.parentNode.__axis;return p((K&&isFinite(K=K(N))?K:w(N))+c)})),O.remove(),v.attr("d",e===Jp||e===My?a?"M"+f*a+","+g+"H"+c+"V"+S+"H"+f*a:"M"+c+","+g+"V"+S:a?"M"+g+","+f*a+"V"+c+"H"+S+"V"+f*a:"M"+g+","+c+"H"+S),I.attr("opacity",1).attr("transform",function(N){return p(w(N)+c)}),E.attr(u+"2",f*i),C.attr(u,f*b).text(y),_.filter(f3).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",e===My?"start":e===Jp?"end":"middle"),_.each(function(){this.__axis=w})}return l.scale=function(m){return arguments.length?(t=m,l):t},l.ticks=function(){return r=Array.from(arguments),l},l.tickArguments=function(m){return arguments.length?(r=m==null?[]:Array.from(m),l):r.slice()},l.tickValues=function(m){return arguments.length?(n=m==null?null:Array.from(m),l):n&&n.slice()},l.tickFormat=function(m){return arguments.length?(o=m,l):o},l.tickSize=function(m){return arguments.length?(i=a=+m,l):i},l.tickSizeInner=function(m){return arguments.length?(i=+m,l):i},l.tickSizeOuter=function(m){return arguments.length?(a=+m,l):a},l.tickPadding=function(m){return arguments.length?(s=+m,l):s},l.offset=function(m){return arguments.length?(c=+m,l):c},l}function Oy(e){return l3(Ty,e)}var p3={value:()=>{}};function xI(){for(var e=0,t=arguments.length,r={},n;e=0&&(n=r.slice(o+1),r=r.slice(0,o)),r&&!t.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}em.prototype=xI.prototype={constructor:em,on:function(e,t){var r=this._,n=m3(e+"",r),o,i=-1,a=n.length;if(arguments.length<2){for(;++i0)for(var r=new Array(o),n=0,o,i;n=0&&(t=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),Lo.hasOwnProperty(t)?{space:Lo[t],local:e}:e}function h3(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===tm&&t.documentElement.namespaceURI===tm?t.createElement(e):t.createElementNS(r,e)}}function g3(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Ti(e){var t=Mi(e);return(t.local?g3:h3)(t)}function b3(){}function is(e){return e==null?b3:function(){return this.querySelector(e)}}function wI(e){typeof e!="function"&&(e=is(e));for(var t=this._groups,r=t.length,n=new Array(r),o=0;o=S&&(S=g+1);!(_=b[S])&&++S=0;)(a=n[o])&&(i&&a.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(a,i),i=a);return this}function RI(e){e||(e=k3);function t(p,l){return p&&l?e(p.__data__,l.__data__):!p-!l}for(var r=this._groups,n=r.length,o=new Array(n),i=0;it?1:e>=t?0:NaN}function EI(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function AI(){return Array.from(this)}function FI(){for(var e=this._groups,t=0,r=e.length;t1?this.each((t==null?D3:typeof t=="function"?V3:L3)(e,t,r??"")):pa(this.node(),e)}function pa(e,t){return e.style.getPropertyValue(t)||om(e).getComputedStyle(e,null).getPropertyValue(t)}function z3(e){return function(){delete this[e]}}function j3(e,t){return function(){this[e]=t}}function U3(e,t){return function(){var r=t.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function jI(e,t){return arguments.length>1?this.each((t==null?z3:typeof t=="function"?U3:j3)(e,t)):this.node()[e]}function UI(e){return e.trim().split(/^|\s+/)}function Ny(e){return e.classList||new BI(e)}function BI(e){this._node=e,this._names=UI(e.getAttribute("class")||"")}BI.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function GI(e,t){for(var r=Ny(e),n=-1,o=t.length;++n=0&&(r=t.slice(n+1),t=t.slice(0,n)),{type:t,name:r}})}function aA(e){return function(){var t=this.__on;if(t){for(var r=0,n=-1,o=t.length,i;r>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?im(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?im(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=pA.exec(e))?new Bt(t[1],t[2],t[3],1):(t=mA.exec(e))?new Bt(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=dA.exec(e))?im(t[1],t[2],t[3],t[4]):(t=hA.exec(e))?im(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=gA.exec(e))?d_(t[1],t[2]/100,t[3]/100,1):(t=bA.exec(e))?d_(t[1],t[2]/100,t[3]/100,t[4]):c_.hasOwnProperty(e)?l_(c_[e]):e==="transparent"?new Bt(NaN,NaN,NaN,0):null}function l_(e){return new Bt(e>>16&255,e>>8&255,e&255,1)}function im(e,t,r,n){return n<=0&&(e=t=r=NaN),new Bt(e,t,r,n)}function xf(e){return e instanceof zo||(e=gn(e)),e?(e=e.rgb(),new Bt(e.r,e.g,e.b,e.opacity)):new Bt}function An(e,t,r,n){return arguments.length===1?xf(e):new Bt(e,t,r,n??1)}function Bt(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}Ci(Bt,An,da(zo,{brighter(e){return e=e==null?cs:Math.pow(cs,e),new Bt(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?ha:Math.pow(ha,e),new Bt(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Bt(ss(this.r),ss(this.g),ss(this.b),sm(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:p_,formatHex:p_,formatHex8:wA,formatRgb:m_,toString:m_}));function p_(){return`#${as(this.r)}${as(this.g)}${as(this.b)}`}function wA(){return`#${as(this.r)}${as(this.g)}${as(this.b)}${as((isNaN(this.opacity)?1:this.opacity)*255)}`}function m_(){let e=sm(this.opacity);return`${e===1?"rgb(":"rgba("}${ss(this.r)}, ${ss(this.g)}, ${ss(this.b)}${e===1?")":`, ${e})`}`}function sm(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function ss(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function as(e){return e=ss(e),(e<16?"0":"")+e.toString(16)}function d_(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new fo(e,t,r,n)}function g_(e){if(e instanceof fo)return new fo(e.h,e.s,e.l,e.opacity);if(e instanceof zo||(e=gn(e)),!e)return new fo;if(e instanceof fo)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,o=Math.min(t,r,n),i=Math.max(t,r,n),a=NaN,s=i-o,c=(i+o)/2;return s?(t===i?a=(r-n)/s+(r0&&c<1?0:a,new fo(a,s,c,e.opacity)}function wf(e,t,r,n){return arguments.length===1?g_(e):new fo(e,t,r,n??1)}function fo(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}Ci(fo,wf,da(zo,{brighter(e){return e=e==null?cs:Math.pow(cs,e),new fo(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?ha:Math.pow(ha,e),new fo(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,o=2*r-n;return new Bt(Ey(e>=240?e-240:e+120,o,n),Ey(e,o,n),Ey(e<120?e+240:e-120,o,n),this.opacity)},clamp(){return new fo(h_(this.h),am(this.s),am(this.l),sm(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=sm(this.opacity);return`${e===1?"hsl(":"hsla("}${h_(this.h)}, ${am(this.s)*100}%, ${am(this.l)*100}%${e===1?")":`, ${e})`}`}}));function h_(e){return e=(e||0)%360,e<0?e+360:e}function am(e){return Math.max(0,Math.min(1,e||0))}function Ey(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}var cm=Math.PI/180,um=180/Math.PI;var fm=18,b_=.96422,y_=1,x_=.82521,w_=4/29,Ic=6/29,S_=3*Ic*Ic,SA=Ic*Ic*Ic;function v_(e){if(e instanceof jo)return new jo(e.l,e.a,e.b,e.opacity);if(e instanceof ki)return I_(e);e instanceof Bt||(e=xf(e));var t=Dy(e.r),r=Dy(e.g),n=Dy(e.b),o=Ay((.2225045*t+.7168786*r+.0606169*n)/y_),i,a;return t===r&&r===n?i=a=o:(i=Ay((.4360747*t+.3850649*r+.1430804*n)/b_),a=Ay((.0139322*t+.0971045*r+.7141733*n)/x_)),new jo(116*o-16,500*(i-o),200*(o-a),e.opacity)}function _c(e,t,r,n){return arguments.length===1?v_(e):new jo(e,t,r,n??1)}function jo(e,t,r,n){this.l=+e,this.a=+t,this.b=+r,this.opacity=+n}Ci(jo,_c,da(zo,{brighter(e){return new jo(this.l+fm*(e??1),this.a,this.b,this.opacity)},darker(e){return new jo(this.l-fm*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return t=b_*Fy(t),e=y_*Fy(e),r=x_*Fy(r),new Bt($y(3.1338561*t-1.6168667*e-.4906146*r),$y(-.9787684*t+1.9161415*e+.033454*r),$y(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}}));function Ay(e){return e>SA?Math.pow(e,1/3):e/S_+w_}function Fy(e){return e>Ic?e*e*e:S_*(e-w_)}function $y(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function Dy(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function vA(e){if(e instanceof ki)return new ki(e.h,e.c,e.l,e.opacity);if(e instanceof jo||(e=v_(e)),e.a===0&&e.b===0)return new ki(NaN,0=1?(r=1,t-1):Math.floor(r*t),o=e[n],i=e[n+1],a=n>0?e[n-1]:2*o-i,s=n()=>e;function k_(e,t){return function(r){return e+r*t}}function _A(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function Mc(e,t){var r=t-e;return r?k_(e,r>180||r<-180?r-360*Math.round(r/360):r):Pc(isNaN(e)?t:e)}function N_(e){return(e=+e)==1?yt:function(t,r){return r-t?_A(t,r,e):Pc(isNaN(t)?r:t)}}function yt(e,t){var r=t-e;return r?k_(e,r):Pc(isNaN(e)?t:e)}var Fn=(function e(t){var r=N_(t);function n(o,i){var a=r((o=An(o)).r,(i=An(i)).r),s=r(o.g,i.g),c=r(o.b,i.b),f=yt(o.opacity,i.opacity);return function(u){return o.r=a(u),o.g=s(u),o.b=c(u),o.opacity=f(u),o+""}}return n.gamma=e,n})(1);function R_(e){return function(t){var r=t.length,n=new Array(r),o=new Array(r),i=new Array(r),a,s;for(a=0;ar&&(i=t.slice(r,i),s[a]?s[a]+=i:s[++a]=i),(n=n[0])===(o=o[0])?s[a]?s[a]+=o:s[++a]=o:(s[++a]=null,c.push({i:a,x:mt(n,o)})),r=Uy.lastIndex;return r180?u+=360:u-f>180&&(f+=360),l.push({i:p.push(o(p)+"rotate(",null,n)-2,x:mt(f,u)})):u&&p.push(o(p)+"rotate("+u+n)}function s(f,u,p,l){f!==u?l.push({i:p.push(o(p)+"skewX(",null,n)-2,x:mt(f,u)}):u&&p.push(o(p)+"skewX("+u+n)}function c(f,u,p,l,m,h){if(f!==p||u!==l){var y=m.push(o(m)+"scale(",null,",",null,")");h.push({i:y-4,x:mt(f,p)},{i:y-2,x:mt(u,l)})}else(p!==1||l!==1)&&m.push(o(m)+"scale("+p+","+l+")")}return function(f,u){var p=[],l=[];return f=e(f),u=e(u),i(f.translateX,f.translateY,u.translateX,u.translateY,p,l),a(f.rotate,u.rotate,p,l),s(f.skewX,u.skewX,p,l),c(f.scaleX,f.scaleY,u.scaleX,u.scaleY,p,l),f=u=null,function(m){for(var h=-1,y=l.length,b;++h=0&&e._call.call(void 0,t),e=e._next;--Oc}function K_(){ls=(gm=Tf.now())+bm,Oc=Pf=0;try{Y_()}finally{Oc=0,EA(),ls=0}}function RA(){var e=Tf.now(),t=e-gm;t>q_&&(bm-=t,gm=e)}function EA(){for(var e,t=hm,r,n=1/0;t;)t._call?(n>t._time&&(n=t._time),e=t,t=t._next):(r=t._next,t._next=null,t=e?e._next=r:hm=r);Mf=e,Wy(n)}function Wy(e){if(!Oc){Pf&&(Pf=clearTimeout(Pf));var t=e-ls;t>24?(e<1/0&&(Pf=setTimeout(K_,e-Tf.now()-bm)),_f&&(_f=clearInterval(_f))):(_f||(gm=Tf.now(),_f=setInterval(RA,q_)),Oc=1,H_(K_))}}function xm(e,t,r){var n=new Of;return t=t==null?0:+t,n.restart(o=>{n.stop(),e(o+t)},t,r),n}var AA=Cy("start","end","cancel","interrupt"),FA=[],Z_=0,W_=1,Sm=2,wm=3,X_=4,vm=5,kf=6;function ga(e,t,r,n,o,i){var a=e.__transition;if(!a)e.__transition={};else if(r in a)return;$A(e,r,{name:t,index:n,group:o,on:AA,tween:FA,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:Z_})}function Nf(e,t){var r=Xt(e,t);if(r.state>Z_)throw new Error("too late; already scheduled");return r}function gr(e,t){var r=Xt(e,t);if(r.state>wm)throw new Error("too late; already running");return r}function Xt(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function $A(e,t,r){var n=e.__transition,o;n[t]=r,r.timer=ym(i,0,r.time);function i(f){r.state=W_,r.timer.restart(a,r.delay,r.time),r.delay<=f&&a(f-r.delay)}function a(f){var u,p,l,m;if(r.state!==W_)return c();for(u in n)if(m=n[u],m.name===r.name){if(m.state===wm)return xm(a);m.state===X_?(m.state=kf,m.timer.stop(),m.on.call("interrupt",e,e.__data__,m.index,m.group),delete n[u]):+uSm&&n.state=0&&(t=t.slice(0,r)),!t||t==="start"})}function r4(e,t,r){var n,o,i=t4(t)?Nf:gr;return function(){var a=i(this,e),s=a.on;s!==n&&(o=(n=s).copy()).on(t,r),a.on=o}}function cP(e,t){var r=this._id;return arguments.length<2?Xt(this.node(),r).on.on(e):this.each(r4(r,e,t))}function n4(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}function uP(){return this.on("end.remove",n4(this._id))}function fP(e){var t=this._name,r=this._id;typeof e!="function"&&(e=is(e));for(var n=this._groups,o=n.length,i=new Array(o),a=0;a=0))throw new Error(`invalid digits: ${e}`);if(t>15)return IP;let r=10**t;return function(n){this._+=n[0];for(let o=1,i=n.length;ops)if(!(Math.abs(p*c-f*u)>ps)||!i)this._append`L${this._x1=t},${this._y1=r}`;else{let m=n-a,h=o-s,y=c*c+f*f,b=m*m+h*h,x=Math.sqrt(y),g=Math.sqrt(l),S=i*Math.tan((Zy-Math.acos((y+l-b)/(2*x*g)))/2),w=S/g,_=S/x;Math.abs(w-1)>ps&&this._append`L${t+w*u},${r+w*p}`,this._append`A${i},${i},0,0,${+(p*m>u*h)},${this._x1=t+_*c},${this._y1=r+_*f}`}}arc(t,r,n,o,i,a){if(t=+t,r=+r,n=+n,a=!!a,n<0)throw new Error(`negative radius: ${n}`);let s=n*Math.cos(o),c=n*Math.sin(o),f=t+s,u=r+c,p=1^a,l=a?o-i:i-o;this._x1===null?this._append`M${f},${u}`:(Math.abs(this._x1-f)>ps||Math.abs(this._y1-u)>ps)&&this._append`L${f},${u}`,n&&(l<0&&(l=l%Qy+Qy),l>x4?this._append`A${n},${n},0,1,${p},${t-s},${r-c}A${n},${n},0,1,${p},${this._x1=f},${this._y1=u}`:l>ps&&this._append`A${n},${n},0,${+(l>=Zy)},${p},${this._x1=t+n*Math.cos(i)},${this._y1=r+n*Math.sin(i)}`)}rect(t,r,n,o){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+o}h${-n}Z`}toString(){return this._}};function _P(){return new ba}_P.prototype=ba.prototype;function po(e=3){return new ba(+e)}function PP(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function ms(e,t){if(!isFinite(e)||e===0)return null;var r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"),n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function Bo(e){return e=ms(Math.abs(e)),e?e[1]:NaN}function MP(e,t){return function(r,n){for(var o=r.length,i=[],a=0,s=e[0],c=0;o>0&&s>0&&(c+s+1>n&&(s=Math.max(1,n-c)),i.push(r.substring(o-=s,o+s)),!((c+=s+1)>n));)s=e[a=(a+1)%e.length];return i.reverse().join(t)}}function TP(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var S4=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Go(e){if(!(t=S4.exec(e)))throw new Error("invalid format: "+e);var t;return new Tm({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Go.prototype=Tm.prototype;function Tm(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}Tm.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function OP(e){e:for(var t=e.length,r=1,n=-1,o;r0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(o+1):e}var Rf;function CP(e,t){var r=ms(e,t);if(!r)return Rf=void 0,e.toPrecision(t);var n=r[0],o=r[1],i=o-(Rf=Math.max(-8,Math.min(8,Math.floor(o/3)))*3)+1,a=n.length;return i===a?n:i>a?n+new Array(i-a+1).join("0"):i>0?n.slice(0,i)+"."+n.slice(i):"0."+new Array(1-i).join("0")+ms(e,Math.max(0,t+i-1))[0]}function Jy(e,t){var r=ms(e,t);if(!r)return e+"";var n=r[0],o=r[1];return o<0?"0."+new Array(-o).join("0")+n:n.length>o+1?n.slice(0,o+1)+"."+n.slice(o+1):n+new Array(o-n.length+2).join("0")}var e0={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:PP,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Jy(e*100,t),r:Jy,s:CP,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function t0(e){return e}var kP=Array.prototype.map,NP=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function RP(e){var t=e.grouping===void 0||e.thousands===void 0?t0:MP(kP.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",o=e.decimal===void 0?".":e.decimal+"",i=e.numerals===void 0?t0:TP(kP.call(e.numerals,String)),a=e.percent===void 0?"%":e.percent+"",s=e.minus===void 0?"\u2212":e.minus+"",c=e.nan===void 0?"NaN":e.nan+"";function f(p,l){p=Go(p);var m=p.fill,h=p.align,y=p.sign,b=p.symbol,x=p.zero,g=p.width,S=p.comma,w=p.precision,_=p.trim,v=p.type;v==="n"?(S=!0,v="g"):e0[v]||(w===void 0&&(w=12),_=!0,v="g"),(x||m==="0"&&h==="=")&&(x=!0,m="0",h="=");var I=(l&&l.prefix!==void 0?l.prefix:"")+(b==="$"?r:b==="#"&&/[boxX]/.test(v)?"0"+v.toLowerCase():""),O=(b==="$"?n:/[%p]/.test(v)?a:"")+(l&&l.suffix!==void 0?l.suffix:""),M=e0[v],E=/[defgprs%]/.test(v);w=w===void 0?6:/[gprs]/.test(v)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function C(N){var K=I,F=O,T,V,D;if(v==="c")F=M(N)+F,N="";else{N=+N;var H=N<0||1/N<0;if(N=isNaN(N)?c:M(Math.abs(N),w),_&&(N=OP(N)),H&&+N==0&&y!=="+"&&(H=!1),K=(H?y==="("?y:s:y==="-"||y==="("?"":y)+K,F=(v==="s"&&!isNaN(N)&&Rf!==void 0?NP[8+Rf/3]:"")+F+(H&&y==="("?")":""),E){for(T=-1,V=N.length;++TD||D>57){F=(D===46?o+N.slice(T+1):N.slice(T))+F,N=N.slice(0,T);break}}}S&&!x&&(N=t(N,1/0));var G=K.length+N.length+F.length,Y=G>1)+K+N+F+Y.slice(G);break;default:N=Y+K+N+F;break}return i(N)}return C.toString=function(){return p+""},C}function u(p,l){var m=Math.max(-8,Math.min(8,Math.floor(Bo(l)/3)))*3,h=Math.pow(10,-m),y=f((p=Go(p),p.type="f",p),{suffix:NP[8+m/3]});return function(b){return y(h*b)}}return{format:f,formatPrefix:u}}var Om,$n,Cm;r0({thousands:",",grouping:[3],currency:["$",""]});function r0(e){return Om=RP(e),$n=Om.format,Cm=Om.formatPrefix,Om}function n0(e){return Math.max(0,-Bo(Math.abs(e)))}function o0(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Bo(t)/3)))*3-Bo(Math.abs(e)))}function i0(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Bo(t)-Bo(e))+1}var ce=1e-6,km=1e-12,ye=Math.PI,Ye=ye/2,a0=ye/4,or=ye*2,Zt=180/ye,We=ye/180,ve=Math.abs,Dn=Math.atan,br=Math.atan2,se=Math.cos;var Nm=Math.exp;var ds=Math.log,Rm=Math.pow,ae=Math.sin,Or=Math.sign||function(e){return e>0?1:e<0?-1:0},st=Math.sqrt,kc=Math.tan;function Em(e){return e>1?0:e<-1?ye:Math.acos(e)}function Ot(e){return e>1?Ye:e<-1?-Ye:Math.asin(e)}function ir(){}function Am(e,t){e&&AP.hasOwnProperty(e.type)&&AP[e.type](e,t)}var EP={Feature:function(e,t){Am(e.geometry,t)},FeatureCollection:function(e,t){for(var r=e.features,n=-1,o=r.length;++nye&&(e-=Math.round(e/or)*or),[e,t]}c0.invert=c0;function u0(e,t,r){return(e%=or)?t||r?Df(DP(e),LP(t,r)):DP(e):t||r?LP(t,r):c0}function $P(e){return function(t,r){return t+=e,ve(t)>ye&&(t-=Math.round(t/or)*or),[t,r]}}function DP(e){var t=$P(e);return t.invert=$P(-e),t}function LP(e,t){var r=se(e),n=ae(e),o=se(t),i=ae(t);function a(s,c){var f=se(c),u=se(s)*f,p=ae(s)*f,l=ae(c),m=l*r+u*n;return[br(p*o-m*i,u*r-l*n),Ot(m*o+p*i)]}return a.invert=function(s,c){var f=se(c),u=se(s)*f,p=ae(s)*f,l=ae(c),m=l*o-p*i;return[br(p*o+l*i,u*r+m*n),Ot(m*r-u*n)]},a}function VP(e){e=u0(e[0]*We,e[1]*We,e.length>2?e[2]*We:0);function t(r){return r=e(r[0]*We,r[1]*We),r[0]*=Zt,r[1]*=Zt,r}return t.invert=function(r){return r=e.invert(r[0]*We,r[1]*We),r[0]*=Zt,r[1]*=Zt,r},t}function jP(e,t,r,n,o,i){if(r){var a=se(t),s=ae(t),c=n*r;o==null?(o=t+n*or,i=t-c/2):(o=zP(a,o),i=zP(a,i),(n>0?oi)&&(o+=n*or));for(var f,u=o;n>0?u>i:u1&&e.push(e.pop().concat(e.shift()))},result:function(){var r=e;return e=[],t=null,r}}}function Rc(e,t){return ve(e[0]-t[0])=0;--s)o.point((p=u[s])[0],p[1]);else n(l.x,l.p.x,-1,o);l=l.p}l=l.o,u=l.z,m=!m}while(!l.v);o.lineEnd()}}}function UP(e){if(t=e.length){for(var t,r=0,n=e[0],o;++r=0?1:-1,E=M*O,C=E>ye,N=b*v;if(c.add(br(N*M*ae(E),x*I+N*se(E))),a+=C?O+M*or:O,C^h>=r^w>=r){var K=Nc(Ko(m),Ko(S));$f(K);var F=Nc(i,K);$f(F);var T=(C^O>=0?-1:1)*Ot(F[2]);(n>T||n===T&&(K[0]||K[1]))&&(s+=C^O>=0?1:-1)}}return(a<-ce||a0){for(c||(o.polygonStart(),c=!0),o.lineStart(),v=0;v1&&w&2&&_.push(_.pop().concat(_.shift())),u.push(_.filter(v4))}}return l}}function v4(e){return e.length>1}function I4(e,t){return((e=e.x)[0]<0?e[1]-Ye-ce:Ye-e[1])-((t=t.x)[0]<0?t[1]-Ye-ce:Ye-t[1])}var l0=Vm(function(){return!0},_4,M4,[-ye,-Ye]);function _4(e){var t=NaN,r=NaN,n=NaN,o;return{lineStart:function(){e.lineStart(),o=1},point:function(i,a){var s=i>0?ye:-ye,c=ve(i-t);ve(c-ye)0?Ye:-Ye),e.point(n,r),e.lineEnd(),e.lineStart(),e.point(s,r),e.point(i,r),o=0):n!==s&&c>=ye&&(ve(t-n)ce?Dn((ae(t)*(i=se(n))*ae(r)-ae(n)*(o=se(t))*ae(e))/(o*i*a)):(t+n)/2}function M4(e,t,r,n){var o;if(e==null)o=r*Ye,n.point(-ye,o),n.point(0,o),n.point(ye,o),n.point(ye,0),n.point(ye,-o),n.point(0,-o),n.point(-ye,-o),n.point(-ye,0),n.point(-ye,o);else if(ve(e[0]-t[0])>ce){var i=e[0]0,o=ve(t)>ce;function i(u,p,l,m){jP(m,e,r,l,u,p)}function a(u,p){return se(u)*se(p)>t}function s(u){var p,l,m,h,y;return{lineStart:function(){h=m=!1,y=1},point:function(b,x){var g=[b,x],S,w=a(b,x),_=n?w?0:f(b,x):w?f(b+(b<0?ye:-ye),x):0;if(!p&&(h=m=w)&&u.lineStart(),w!==m&&(S=c(p,g),(!S||Rc(p,S)||Rc(g,S))&&(g[2]=1)),w!==m)y=0,w?(u.lineStart(),S=c(g,p),u.point(S[0],S[1])):(S=c(p,g),u.point(S[0],S[1],2),u.lineEnd()),p=S;else if(o&&p&&n^w){var v;!(_&l)&&(v=c(g,p,!0))&&(y=0,n?(u.lineStart(),u.point(v[0][0],v[0][1]),u.point(v[1][0],v[1][1]),u.lineEnd()):(u.point(v[1][0],v[1][1]),u.lineEnd(),u.lineStart(),u.point(v[0][0],v[0][1],3)))}w&&(!p||!Rc(p,g))&&u.point(g[0],g[1]),p=g,m=w,l=_},lineEnd:function(){m&&u.lineEnd(),p=null},clean:function(){return y|(h&&m)<<1}}}function c(u,p,l){var m=Ko(u),h=Ko(p),y=[1,0,0],b=Nc(m,h),x=Af(b,b),g=b[0],S=x-g*g;if(!S)return!l&&u;var w=t*x/S,_=-t*g/S,v=Nc(y,b),I=Ff(y,w),O=Ff(b,_);Fm(I,O);var M=v,E=Af(I,M),C=Af(M,M),N=E*E-C*(Af(I,I)-1);if(!(N<0)){var K=st(N),F=Ff(M,(-E-K)/C);if(Fm(F,I),F=Ef(F),!l)return F;var T=u[0],V=p[0],D=u[1],H=p[1],G;V0^F[1]<(ve(F[0]-T)ye^(T<=F[0]&&F[0]<=V)){var q=Ff(M,(-E+K)/C);return Fm(q,I),[F,Ef(q)]}}}function f(u,p){var l=n?e:ye-e,m=0;return u<-l?m|=1:u>l&&(m|=2),p<-l?m|=4:p>l&&(m|=8),m}return Vm(a,s,i,n?[0,-e]:[-ye,e-ye])}function KP(e,t,r,n,o,i){var a=e[0],s=e[1],c=t[0],f=t[1],u=0,p=1,l=c-a,m=f-s,h;if(h=r-a,!(!l&&h>0)){if(h/=l,l<0){if(h0){if(h>p)return;h>u&&(u=h)}if(h=o-a,!(!l&&h<0)){if(h/=l,l<0){if(h>p)return;h>u&&(u=h)}else if(l>0){if(h0)){if(h/=m,m<0){if(h0){if(h>p)return;h>u&&(u=h)}if(h=i-s,!(!m&&h<0)){if(h/=m,m<0){if(h>p)return;h>u&&(u=h)}else if(m>0){if(h0&&(e[0]=a+u*l,e[1]=s+u*m),p<1&&(t[0]=a+p*l,t[1]=s+p*m),!0}}}}}var Lf=1e9,zm=-Lf;function Ec(e,t,r,n){function o(f,u){return e<=f&&f<=r&&t<=u&&u<=n}function i(f,u,p,l){var m=0,h=0;if(f==null||(m=a(f,p))!==(h=a(u,p))||c(f,u)<0^p>0)do l.point(m===0||m===3?e:r,m>1?n:t);while((m=(m+p+4)%4)!==h);else l.point(u[0],u[1])}function a(f,u){return ve(f[0]-e)0?0:3:ve(f[0]-r)0?2:1:ve(f[1]-t)0?1:0:u>0?3:2}function s(f,u){return c(f.x,u.x)}function c(f,u){var p=a(f,1),l=a(u,1);return p!==l?p-l:p===0?u[1]-f[1]:p===1?f[0]-u[0]:p===2?f[1]-u[1]:u[0]-f[0]}return function(f){var u=f,p=$m(),l,m,h,y,b,x,g,S,w,_,v,I={point:O,lineStart:N,lineEnd:K,polygonStart:E,polygonEnd:C};function O(T,V){o(T,V)&&u.point(T,V)}function M(){for(var T=0,V=0,D=m.length;Vn&&(ie-Z)*(n-q)>(ee-q)*(e-Z)&&++T:ee<=n&&(ie-Z)*(n-q)<(ee-q)*(e-Z)&&--T;return T}function E(){u=p,l=[],m=[],v=!0}function C(){var T=M(),V=v&&T,D=(l=Sc(l)).length;(V||D)&&(f.polygonStart(),V&&(f.lineStart(),i(null,null,1,f),f.lineEnd()),D&&Lm(l,s,T,i,f),f.polygonEnd()),u=f,l=m=h=null}function N(){I.point=F,m&&m.push(h=[]),_=!0,w=!1,g=S=NaN}function K(){l&&(F(y,b),x&&w&&p.rejoin(),l.push(p.result())),I.point=O,w&&u.lineEnd()}function F(T,V){var D=o(T,V);if(m&&h.push([T,V]),_)y=T,b=V,x=D,_=!1,D&&(u.lineStart(),u.point(T,V));else if(D&&w)u.point(T,V);else{var H=[g=Math.max(zm,Math.min(Lf,g)),S=Math.max(zm,Math.min(Lf,S))],G=[T=Math.max(zm,Math.min(Lf,T)),V=Math.max(zm,Math.min(Lf,V))];KP(H,G,e,t,r,n)?(w||(u.lineStart(),u.point(H[0],H[1])),u.point(G[0],G[1]),D||u.lineEnd(),v=!1):D&&(u.lineStart(),u.point(T,V),v=!1)}g=T,S=V,w=D}return I}}var Vf=e=>e;var p0=new dn,m0=new dn,qP,HP,d0,h0,ya={point:ir,lineStart:ir,lineEnd:ir,polygonStart:function(){ya.lineStart=T4,ya.lineEnd=C4},polygonEnd:function(){ya.lineStart=ya.lineEnd=ya.point=ir,p0.add(ve(m0)),m0=new dn},result:function(){var e=p0/2;return p0=new dn,e}};function T4(){ya.point=O4}function O4(e,t){ya.point=YP,qP=d0=e,HP=h0=t}function YP(e,t){m0.add(h0*e-d0*t),d0=e,h0=t}function C4(){YP(qP,HP)}var g0=ya;var Ac=1/0,jm=Ac,zf=-Ac,Um=zf,k4={point:N4,lineStart:ir,lineEnd:ir,polygonStart:ir,polygonEnd:ir,result:function(){var e=[[Ac,jm],[zf,Um]];return zf=Um=-(jm=Ac=1/0),e}};function N4(e,t){ezf&&(zf=e),tUm&&(Um=t)}var Fc=k4;var b0=0,y0=0,jf=0,Bm=0,Gm=0,$c=0,x0=0,w0=0,Uf=0,ZP,QP,qo,Ho,ho={point:hs,lineStart:WP,lineEnd:XP,polygonStart:function(){ho.lineStart=A4,ho.lineEnd=F4},polygonEnd:function(){ho.point=hs,ho.lineStart=WP,ho.lineEnd=XP},result:function(){var e=Uf?[x0/Uf,w0/Uf]:$c?[Bm/$c,Gm/$c]:jf?[b0/jf,y0/jf]:[NaN,NaN];return b0=y0=jf=Bm=Gm=$c=x0=w0=Uf=0,e}};function hs(e,t){b0+=e,y0+=t,++jf}function WP(){ho.point=R4}function R4(e,t){ho.point=E4,hs(qo=e,Ho=t)}function E4(e,t){var r=e-qo,n=t-Ho,o=st(r*r+n*n);Bm+=o*(qo+e)/2,Gm+=o*(Ho+t)/2,$c+=o,hs(qo=e,Ho=t)}function XP(){ho.point=hs}function A4(){ho.point=$4}function F4(){JP(ZP,QP)}function $4(e,t){ho.point=JP,hs(ZP=qo=e,QP=Ho=t)}function JP(e,t){var r=e-qo,n=t-Ho,o=st(r*r+n*n);Bm+=o*(qo+e)/2,Gm+=o*(Ho+t)/2,$c+=o,o=Ho*e-qo*t,x0+=o*(qo+e),w0+=o*(Ho+t),Uf+=o*3,hs(qo=e,Ho=t)}var S0=ho;function Km(e){this._context=e}Km.prototype={_radius:4.5,pointRadius:function(e){return this._radius=e,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(e,t){switch(this._point){case 0:{this._context.moveTo(e,t),this._point=1;break}case 1:{this._context.lineTo(e,t);break}default:{this._context.moveTo(e+this._radius,t),this._context.arc(e,t,this._radius,0,or);break}}},result:ir};var I0=new dn,v0,eM,tM,Bf,Gf,qm={point:ir,lineStart:function(){qm.point=D4},lineEnd:function(){v0&&rM(eM,tM),qm.point=ir},polygonStart:function(){v0=!0},polygonEnd:function(){v0=null},result:function(){var e=+I0;return I0=new dn,e}};function D4(e,t){qm.point=rM,eM=Bf=e,tM=Gf=t}function rM(e,t){Bf-=e,Gf-=t,I0.add(st(Bf*Bf+Gf*Gf)),Bf=e,Gf=t}var _0=qm;var nM,Hm,oM,iM,Dc=class{constructor(t){this._append=t==null?aM:L4(t),this._radius=4.5,this._=""}pointRadius(t){return this._radius=+t,this}polygonStart(){this._line=0}polygonEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){this._line===0&&(this._+="Z"),this._point=NaN}point(t,r){switch(this._point){case 0:{this._append`M${t},${r}`,this._point=1;break}case 1:{this._append`L${t},${r}`;break}default:{if(this._append`M${t},${r}`,this._radius!==oM||this._append!==Hm){let n=this._radius,o=this._;this._="",this._append`m0,${n}a${n},${n} 0 1,1 0,${-2*n}a${n},${n} 0 1,1 0,${2*n}z`,oM=n,Hm=this._append,iM=this._,this._=o}this._+=iM;break}}}result(){let t=this._;return this._="",t.length?t:null}};function aM(e){let t=1;this._+=e[0];for(let r=e.length;t=0))throw new RangeError(`invalid digits: ${e}`);if(t>15)return aM;if(t!==nM){let r=10**t;nM=t,Hm=function(o){let i=1;this._+=o[0];for(let a=o.length;i=0))throw new RangeError(`invalid digits: ${s}`);r=c}return t===null&&(i=new Dc(r)),a},a.projection(e).digits(r).context(t)}function Vc(e){return{stream:zc(e)}}function zc(e){return function(t){var r=new P0;for(var n in e)r[n]=e[n];return r.stream=t,r}}function P0(){}P0.prototype={constructor:P0,point:function(e,t){this.stream.point(e,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function M0(e,t,r){var n=e.clipExtent&&e.clipExtent();return e.scale(150).translate([0,0]),n!=null&&e.clipExtent(null),mo(r,e.stream(Fc)),t(Fc.result()),n!=null&&e.clipExtent(n),e}function Kf(e,t,r){return M0(e,function(n){var o=t[1][0]-t[0][0],i=t[1][1]-t[0][1],a=Math.min(o/(n[1][0]-n[0][0]),i/(n[1][1]-n[0][1])),s=+t[0][0]+(o-a*(n[1][0]+n[0][0]))/2,c=+t[0][1]+(i-a*(n[1][1]+n[0][1]))/2;e.scale(150*a).translate([s,c])},r)}function Ym(e,t,r){return Kf(e,[[0,0],t],r)}function Wm(e,t,r){return M0(e,function(n){var o=+t,i=o/(n[1][0]-n[0][0]),a=(o-i*(n[1][0]+n[0][0]))/2,s=-i*n[0][1];e.scale(150*i).translate([a,s])},r)}function Xm(e,t,r){return M0(e,function(n){var o=+t,i=o/(n[1][1]-n[0][1]),a=-i*n[0][0],s=(o-i*(n[1][1]+n[0][1]))/2;e.scale(150*i).translate([a,s])},r)}var sM=16,V4=se(30*We);function T0(e,t){return+t?j4(e,t):z4(e)}function z4(e){return zc({point:function(t,r){t=e(t,r),this.stream.point(t[0],t[1])}})}function j4(e,t){function r(n,o,i,a,s,c,f,u,p,l,m,h,y,b){var x=f-n,g=u-o,S=x*x+g*g;if(S>4*t&&y--){var w=a+l,_=s+m,v=c+h,I=st(w*w+_*_+v*v),O=Ot(v/=I),M=ve(ve(v)-1)t||ve((x*K+g*F)/S-.5)>.3||a*l+s*m+c*h2?T[2]%360*We:0,K()):[s*Zt,c*Zt,f*Zt]},C.angle=function(T){return arguments.length?(p=T%360*We,K()):p*Zt},C.reflectX=function(T){return arguments.length?(l=T?-1:1,K()):l<0},C.reflectY=function(T){return arguments.length?(m=T?-1:1,K()):m<0},C.precision=function(T){return arguments.length?(v=T0(I,_=T*T),F()):st(_)},C.fitExtent=function(T,V){return Kf(C,T,V)},C.fitSize=function(T,V){return Ym(C,T,V)},C.fitWidth=function(T,V){return Wm(C,T,V)},C.fitHeight=function(T,V){return Xm(C,T,V)};function K(){var T=cM(r,0,0,l,m,p).apply(null,t(i,a)),V=cM(r,n-T[0],o-T[1],l,m,p);return u=u0(s,c,f),I=Df(t,V),O=Df(u,I),v=T0(I,_),F()}function F(){return M=E=null,C}return function(){return t=e.apply(this,arguments),C.invert=t.invert&&N,K()}}function jc(e){var t=0,r=ye/3,n=O0(e),o=n(t,r);return o.parallels=function(i){return arguments.length?n(t=i[0]*We,r=i[1]*We):[t*Zt,r*Zt]},o}function uM(e){var t=se(e);function r(n,o){return[n*t,ae(o)/t]}return r.invert=function(n,o){return[n/t,Ot(o*t)]},r}function fM(e,t){var r=ae(e),n=(r+ae(t))/2;if(ve(n)=.12&&b<.234&&y>=-.425&&y<-.214?o:b>=.166&&b<.234&&y>=-.214&&y<-.115?a:r).invert(l)},u.stream=function(l){return e&&t===l?e:e=K4([r.stream(t=l),o.stream(l),a.stream(l)])},u.precision=function(l){return arguments.length?(r.precision(l),o.precision(l),a.precision(l),p()):r.precision()},u.scale=function(l){return arguments.length?(r.scale(l),o.scale(l*.35),a.scale(l),u.translate(r.translate())):r.scale()},u.translate=function(l){if(!arguments.length)return r.translate();var m=r.scale(),h=+l[0],y=+l[1];return n=r.translate(l).clipExtent([[h-.455*m,y-.238*m],[h+.455*m,y+.238*m]]).stream(f),i=o.translate([h-.307*m,y+.201*m]).clipExtent([[h-.425*m+ce,y+.12*m+ce],[h-.214*m-ce,y+.234*m-ce]]).stream(f),s=a.translate([h-.205*m,y+.212*m]).clipExtent([[h-.214*m+ce,y+.166*m+ce],[h-.115*m-ce,y+.234*m-ce]]).stream(f),p()},u.fitExtent=function(l,m){return Kf(u,l,m)},u.fitSize=function(l,m){return Ym(u,l,m)},u.fitWidth=function(l,m){return Wm(u,l,m)},u.fitHeight=function(l,m){return Xm(u,l,m)};function p(){return e=t=null,u}return u.scale(1070)}function Zm(e){return function(t,r){var n=se(t),o=se(r),i=e(n*o);return i===1/0?[2,0]:[i*o*ae(t),i*ae(r)]}}function Yo(e){return function(t,r){var n=st(t*t+r*r),o=e(n),i=ae(o),a=se(o);return[br(t*i,n*a),Ot(n&&r*i/n)]}}var k0=Zm(function(e){return st(2/(1+e))});k0.invert=Yo(function(e){return 2*Ot(e/2)});function N0(){return yr(k0).scale(124.75).clipAngle(180-.001)}var R0=Zm(function(e){return(e=Em(e))&&e/ae(e)});R0.invert=Yo(function(e){return e});function E0(){return yr(R0).scale(79.4188).clipAngle(180-.001)}function Uc(e,t){return[e,ds(kc((Ye+t)/2))]}Uc.invert=function(e,t){return[e,2*Dn(Nm(t))-Ye]};function A0(){return F0(Uc).scale(961/or)}function F0(e){var t=yr(e),r=t.center,n=t.scale,o=t.translate,i=t.clipExtent,a=null,s,c,f;t.scale=function(p){return arguments.length?(n(p),u()):n()},t.translate=function(p){return arguments.length?(o(p),u()):o()},t.center=function(p){return arguments.length?(r(p),u()):r()},t.clipExtent=function(p){return arguments.length?(p==null?a=s=c=f=null:(a=+p[0][0],s=+p[0][1],c=+p[1][0],f=+p[1][1]),u()):a==null?null:[[a,s],[c,f]]};function u(){var p=ye*n(),l=t(VP(t.rotate()).invert([0,0]));return i(a==null?[[l[0]-p,l[1]-p],[l[0]+p,l[1]+p]]:e===Uc?[[Math.max(l[0]-p,a),s],[Math.min(l[0]+p,c),f]]:[[a,Math.max(l[1]-p,s)],[c,Math.min(l[1]+p,f)]])}return u()}function Qm(e){return kc((Ye+e)/2)}function lM(e,t){var r=se(e),n=e===t?ae(e):ds(r/se(t))/ds(Qm(t)/Qm(e)),o=r*Rm(Qm(e),n)/n;if(!n)return Uc;function i(a,s){o>0?s<-Ye+ce&&(s=-Ye+ce):s>Ye-ce&&(s=Ye-ce);var c=o/Rm(Qm(s),n);return[c*ae(n*a),o-c*se(n*a)]}return i.invert=function(a,s){var c=o-s,f=Or(n)*st(a*a+c*c),u=br(a,ve(c))*Or(c);return c*n<0&&(u-=ye*Or(a)*Or(c)),[u/n,2*Dn(Rm(o/f,1/n))-Ye]},i}function $0(){return jc(lM).scale(109.5).parallels([30,30])}function Bc(e,t){return[e,t]}Bc.invert=Bc;function D0(){return yr(Bc).scale(152.63)}function pM(e,t){var r=se(e),n=e===t?ae(e):(r-se(t))/(t-e),o=r/n+e;if(ve(n)2?n[2]+90:90]):(n=r(),[n[0],n[1],n[2]-90])},r([0,0,90]).scale(159.155)}function Gt(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function Zf(e,t){switch(arguments.length){case 0:break;case 1:{typeof e=="function"?this.interpolator(e):this.range(e);break}default:{this.domain(e),typeof t=="function"?this.interpolator(t):this.range(t);break}}return this}var Qf=Symbol("implicit");function gs(){var e=new Dr,t=[],r=[],n=Qf;function o(i){let a=e.get(i);if(a===void 0){if(n!==Qf)return n;e.set(i,a=t.push(i)-1)}return r[a%r.length]}return o.domain=function(i){if(!arguments.length)return t.slice();t=[],e=new Dr;for(let a of i)e.has(a)||e.set(a,t.push(a)-1);return o},o.range=function(i){return arguments.length?(r=Array.from(i),o):r.slice()},o.unknown=function(i){return arguments.length?(n=i,o):n},o.copy=function(){return gs(t,r).unknown(n)},Gt.apply(o,arguments),o}function wa(){var e=gs().unknown(void 0),t=e.domain,r=e.range,n=0,o=1,i,a,s=!1,c=0,f=0,u=.5;delete e.unknown;function p(){var l=t().length,m=ot&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function Y4(e,t,r){var n=e[0],o=e[1],i=t[0],a=t[1];return o2?W4:Y4,c=f=null,p}function p(l){return l==null||isNaN(l=+l)?i:(c||(c=s(e.map(n),t,r)))(n(a(l)))}return p.invert=function(l){return a(o((f||(f=s(t,e.map(n),mt)))(l)))},p.domain=function(l){return arguments.length?(e=Array.from(l,Gc),u()):e.slice()},p.range=function(l){return arguments.length?(t=Array.from(l),u()):t.slice()},p.rangeRound=function(l){return t=Array.from(l),r=fs,u()},p.clamp=function(l){return arguments.length?(a=l?!0:Qr,u()):a!==Qr},p.interpolate=function(l){return arguments.length?(r=l,u()):r},p.unknown=function(l){return arguments.length?(i=l,p):i},function(l,m){return n=l,o=m,u()}}function Jf(){return bs()(Qr,Qr)}function Q0(e,t,r,n){var o=wc(e,t,r),i;switch(n=Go(n??",f"),n.type){case"s":{var a=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(i=o0(o,a))&&(n.precision=i),Cm(n,a)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(i=i0(o,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=i-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(i=n0(o))&&(n.precision=i-(n.type==="%")*2);break}}return $n(n)}function Ri(e){var t=e.domain;return e.ticks=function(r){var n=t();return uo(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var o=t();return Q0(o[0],o[o.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),o=0,i=n.length-1,a=n[o],s=n[i],c,f,u=10;for(s0;){if(f=rs(a,s,r),f===c)return n[o]=a,n[i]=s,t(n);if(f>0)a=Math.floor(a/f)*f,s=Math.ceil(s/f)*f;else if(f<0)a=Math.ceil(a*f)/f,s=Math.floor(s*f)/f;else break;c=f}return e},e}function ys(){var e=Jf();return e.copy=function(){return Wo(e,ys())},Gt.apply(e,arguments),Ri(e)}function el(e){var t;function r(n){return n==null||isNaN(n=+n)?t:n}return r.invert=r,r.domain=r.range=function(n){return arguments.length?(e=Array.from(n,Gc),r):e.slice()},r.unknown=function(n){return arguments.length?(t=n,r):t},r.copy=function(){return el(e).unknown(t)},e=arguments.length?Array.from(e,Gc):[0,1],Ri(r)}function tl(e,t){e=e.slice();var r=0,n=e.length-1,o=e[r],i=e[n],a;return iMath.pow(e,t)}function e7(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function bM(e){return(t,r)=>-e(-t,r)}function J0(e){let t=e(hM,gM),r=t.domain,n=10,o,i;function a(){return o=e7(n),i=J4(n),r()[0]<0?(o=bM(o),i=bM(i),e(X4,Z4)):e(hM,gM),t}return t.base=function(s){return arguments.length?(n=+s,a()):n},t.domain=function(s){return arguments.length?(r(s),a()):r()},t.ticks=s=>{let c=r(),f=c[0],u=c[c.length-1],p=u0){for(;l<=m;++l)for(h=1;hu)break;x.push(y)}}else for(;l<=m;++l)for(h=n-1;h>=1;--h)if(y=l>0?h/i(-l):h*i(l),!(yu)break;x.push(y)}x.length*2{if(s==null&&(s=10),c==null&&(c=n===10?"s":","),typeof c!="function"&&(!(n%1)&&(c=Go(c)).precision==null&&(c.trim=!0),c=$n(c)),s===1/0)return c;let f=Math.max(1,n*s/t.ticks().length);return u=>{let p=u/i(Math.round(o(u)));return p*nr(tl(r(),{floor:s=>i(Math.floor(o(s))),ceil:s=>i(Math.ceil(o(s)))})),t}function rl(){let e=J0(bs()).domain([1,10]);return e.copy=()=>Wo(e,rl()).base(e.base()),Gt.apply(e,arguments),e}function yM(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function xM(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function ex(e){var t=1,r=e(yM(t),xM(t));return r.constant=function(n){return arguments.length?e(yM(t=+n),xM(t)):t},Ri(r)}function nl(){var e=ex(bs());return e.copy=function(){return Wo(e,nl()).constant(e.constant())},Gt.apply(e,arguments)}function wM(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function t7(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function r7(e){return e<0?-e*e:e*e}function tx(e){var t=e(Qr,Qr),r=1;function n(){return r===1?e(Qr,Qr):r===.5?e(t7,r7):e(wM(r),wM(1/r))}return t.exponent=function(o){return arguments.length?(r=+o,n()):r},Ri(t)}function ol(){var e=tx(bs());return e.copy=function(){return Wo(e,ol()).exponent(e.exponent())},Gt.apply(e,arguments),e}function il(){var e=[],t=[],r=[],n;function o(){var a=0,s=Math.max(1,t.length);for(r=new Array(s-1);++a0?r[s-1]:e[0],s(e(i=new Date(+i)),i),o.ceil=i=>(e(i=new Date(i-1)),t(i,1),e(i),i),o.round=i=>{let a=o(i),s=o.ceil(i);return i-a(t(i=new Date(+i),a==null?1:Math.floor(a)),i),o.range=(i,a,s)=>{let c=[];if(i=o.ceil(i),s=s==null?1:Math.floor(s),!(i0))return c;let f;do c.push(f=new Date(+i)),t(i,s),e(i);while(fnt(a=>{if(a>=a)for(;e(a),!i(a);)a.setTime(a-1)},(a,s)=>{if(a>=a)if(s<0)for(;++s<=0;)for(;t(a,-1),!i(a););else for(;--s>=0;)for(;t(a,1),!i(a););}),r&&(o.count=(i,a)=>(rx.setTime(+i),nx.setTime(+a),e(rx),e(nx),Math.floor(r(rx,nx))),o.every=i=>(i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?o.filter(n?a=>n(a)%i===0:a=>o.count(0,a)%i===0):o)),o}var sl=nt(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);sl.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?nt(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):sl);var she=sl.range;var ar=nt(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),SM=ar.range;var Ei=nt(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),n7=Ei.range,Ai=nt(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),o7=Ai.range;var Fi=nt(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3-e.getMinutes()*6e4)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getHours()),i7=Fi.range,$i=nt(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),a7=$i.range;var Ln=nt(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/864e5,e=>e.getDate()-1),s7=Ln.range,Ss=nt(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),c7=Ss.range,vs=nt(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),u7=vs.range;function Is(e){return nt(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5)}var bn=Is(0),Sa=Is(1),ed=Is(2),td=Is(3),Zo=Is(4),rd=Is(5),nd=Is(6),IM=bn.range,f7=Sa.range,l7=ed.range,p7=td.range,m7=Zo.range,d7=rd.range,h7=nd.range;function _s(e){return nt(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/6048e5)}var yn=_s(0),va=_s(1),od=_s(2),id=_s(3),Qo=_s(4),ad=_s(5),sd=_s(6),_M=yn.range,g7=va.range,b7=od.range,y7=id.range,x7=Qo.range,w7=ad.range,S7=sd.range;var Di=nt(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth()),v7=Di.range,Li=nt(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth()),I7=Li.range;var Cr=nt(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());Cr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:nt(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});var _7=Cr.range,kr=nt(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());kr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:nt(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});var P7=kr.range;function MM(e,t,r,n,o,i){let a=[[ar,1,1e3],[ar,5,5*1e3],[ar,15,15*1e3],[ar,30,30*1e3],[i,1,6e4],[i,5,5*6e4],[i,15,15*6e4],[i,30,30*6e4],[o,1,36e5],[o,3,3*36e5],[o,6,6*36e5],[o,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[t,1,2592e6],[t,3,3*2592e6],[e,1,31536e6]];function s(f,u,p){let l=ub).right(a,l);if(m===a.length)return e.every(wc(f/31536e6,u/31536e6,p));if(m===0)return sl.every(Math.max(wc(f,u,p),1));let[h,y]=a[l/a[m-1][2]53)return null;"w"in R||(R.w=1),"Z"in R?(X=cx(fl(R.y,0,1)),le=X.getUTCDay(),X=le>4||le===0?va.ceil(X):va(X),X=Ss.offset(X,(R.V-1)*7),R.y=X.getUTCFullYear(),R.m=X.getUTCMonth(),R.d=X.getUTCDate()+(R.w+6)%7):(X=sx(fl(R.y,0,1)),le=X.getDay(),X=le>4||le===0?Sa.ceil(X):Sa(X),X=Ln.offset(X,(R.V-1)*7),R.y=X.getFullYear(),R.m=X.getMonth(),R.d=X.getDate()+(R.w+6)%7)}else("W"in R||"U"in R)&&("w"in R||(R.w="u"in R?R.u%7:"W"in R?1:0),le="Z"in R?cx(fl(R.y,0,1)).getUTCDay():sx(fl(R.y,0,1)).getDay(),R.m=0,R.d="W"in R?(R.w+6)%7+R.W*7-(le+5)%7:R.w+R.U*7-(le+6)%7);return"Z"in R?(R.H+=R.Z/100|0,R.M+=R.Z%100,cx(R)):sx(R)}}function O(P,A,z,R){for(var Q=0,X=A.length,le=z.length,xe,Me;Q=le)return-1;if(xe=A.charCodeAt(Q++),xe===37){if(xe=A.charAt(Q++),Me=_[xe in TM?A.charAt(Q++):xe],!Me||(R=Me(P,z,R))<0)return-1}else if(xe!=z.charCodeAt(R++))return-1}return R}function M(P,A,z){var R=f.exec(A.slice(z));return R?(P.p=u.get(R[0].toLowerCase()),z+R[0].length):-1}function E(P,A,z){var R=m.exec(A.slice(z));return R?(P.w=h.get(R[0].toLowerCase()),z+R[0].length):-1}function C(P,A,z){var R=p.exec(A.slice(z));return R?(P.w=l.get(R[0].toLowerCase()),z+R[0].length):-1}function N(P,A,z){var R=x.exec(A.slice(z));return R?(P.m=g.get(R[0].toLowerCase()),z+R[0].length):-1}function K(P,A,z){var R=y.exec(A.slice(z));return R?(P.m=b.get(R[0].toLowerCase()),z+R[0].length):-1}function F(P,A,z){return O(P,t,A,z)}function T(P,A,z){return O(P,r,A,z)}function V(P,A,z){return O(P,n,A,z)}function D(P){return a[P.getDay()]}function H(P){return i[P.getDay()]}function G(P){return c[P.getMonth()]}function Y(P){return s[P.getMonth()]}function W(P){return o[+(P.getHours()>=12)]}function Z(P){return 1+~~(P.getMonth()/3)}function q(P){return a[P.getUTCDay()]}function ie(P){return i[P.getUTCDay()]}function ee(P){return c[P.getUTCMonth()]}function oe(P){return s[P.getUTCMonth()]}function re(P){return o[+(P.getUTCHours()>=12)]}function L(P){return 1+~~(P.getUTCMonth()/3)}return{format:function(P){var A=v(P+="",S);return A.toString=function(){return P},A},parse:function(P){var A=I(P+="",!1);return A.toString=function(){return P},A},utcFormat:function(P){var A=v(P+="",w);return A.toString=function(){return P},A},utcParse:function(P){var A=I(P+="",!0);return A.toString=function(){return P},A}}}var TM={"-":"",_:" ",0:"0"},sr=/^\s*\d+/,T7=/^%/,O7=/[\\^$*+?|[\]().{}]/g;function ze(e,t,r){var n=e<0?"-":"",o=(n?-e:e)+"",i=o.length;return n+(i[t.toLowerCase(),r]))}function k7(e,t,r){var n=sr.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function N7(e,t,r){var n=sr.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function R7(e,t,r){var n=sr.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function E7(e,t,r){var n=sr.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function A7(e,t,r){var n=sr.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function OM(e,t,r){var n=sr.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function CM(e,t,r){var n=sr.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function F7(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function $7(e,t,r){var n=sr.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function D7(e,t,r){var n=sr.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function kM(e,t,r){var n=sr.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function L7(e,t,r){var n=sr.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function NM(e,t,r){var n=sr.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function V7(e,t,r){var n=sr.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function z7(e,t,r){var n=sr.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function j7(e,t,r){var n=sr.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function U7(e,t,r){var n=sr.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function B7(e,t,r){var n=T7.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function G7(e,t,r){var n=sr.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function K7(e,t,r){var n=sr.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function RM(e,t){return ze(e.getDate(),t,2)}function q7(e,t){return ze(e.getHours(),t,2)}function H7(e,t){return ze(e.getHours()%12||12,t,2)}function Y7(e,t){return ze(1+Ln.count(Cr(e),e),t,3)}function DM(e,t){return ze(e.getMilliseconds(),t,3)}function W7(e,t){return DM(e,t)+"000"}function X7(e,t){return ze(e.getMonth()+1,t,2)}function Z7(e,t){return ze(e.getMinutes(),t,2)}function Q7(e,t){return ze(e.getSeconds(),t,2)}function J7(e){var t=e.getDay();return t===0?7:t}function eF(e,t){return ze(bn.count(Cr(e)-1,e),t,2)}function LM(e){var t=e.getDay();return t>=4||t===0?Zo(e):Zo.ceil(e)}function tF(e,t){return e=LM(e),ze(Zo.count(Cr(e),e)+(Cr(e).getDay()===4),t,2)}function rF(e){return e.getDay()}function nF(e,t){return ze(Sa.count(Cr(e)-1,e),t,2)}function oF(e,t){return ze(e.getFullYear()%100,t,2)}function iF(e,t){return e=LM(e),ze(e.getFullYear()%100,t,2)}function aF(e,t){return ze(e.getFullYear()%1e4,t,4)}function sF(e,t){var r=e.getDay();return e=r>=4||r===0?Zo(e):Zo.ceil(e),ze(e.getFullYear()%1e4,t,4)}function cF(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+ze(t/60|0,"0",2)+ze(t%60,"0",2)}function EM(e,t){return ze(e.getUTCDate(),t,2)}function uF(e,t){return ze(e.getUTCHours(),t,2)}function fF(e,t){return ze(e.getUTCHours()%12||12,t,2)}function lF(e,t){return ze(1+Ss.count(kr(e),e),t,3)}function VM(e,t){return ze(e.getUTCMilliseconds(),t,3)}function pF(e,t){return VM(e,t)+"000"}function mF(e,t){return ze(e.getUTCMonth()+1,t,2)}function dF(e,t){return ze(e.getUTCMinutes(),t,2)}function hF(e,t){return ze(e.getUTCSeconds(),t,2)}function gF(e){var t=e.getUTCDay();return t===0?7:t}function bF(e,t){return ze(yn.count(kr(e)-1,e),t,2)}function zM(e){var t=e.getUTCDay();return t>=4||t===0?Qo(e):Qo.ceil(e)}function yF(e,t){return e=zM(e),ze(Qo.count(kr(e),e)+(kr(e).getUTCDay()===4),t,2)}function xF(e){return e.getUTCDay()}function wF(e,t){return ze(va.count(kr(e)-1,e),t,2)}function SF(e,t){return ze(e.getUTCFullYear()%100,t,2)}function vF(e,t){return e=zM(e),ze(e.getUTCFullYear()%100,t,2)}function IF(e,t){return ze(e.getUTCFullYear()%1e4,t,4)}function _F(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Qo(e):Qo.ceil(e),ze(e.getUTCFullYear()%1e4,t,4)}function PF(){return"+0000"}function AM(){return"%"}function FM(e){return+e}function $M(e){return Math.floor(+e/1e3)}var Kc,qc,jM,Jo,UM;fx({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function fx(e){return Kc=ux(e),qc=Kc.format,jM=Kc.parse,Jo=Kc.utcFormat,UM=Kc.utcParse,Kc}function MF(e){return new Date(e)}function TF(e){return e instanceof Date?+e:+new Date(+e)}function cd(e,t,r,n,o,i,a,s,c,f){var u=Jf(),p=u.invert,l=u.domain,m=f(".%L"),h=f(":%S"),y=f("%I:%M"),b=f("%I %p"),x=f("%a %d"),g=f("%b %d"),S=f("%B"),w=f("%Y");function _(v){return(c(v)jy(e[e.length-1]);var hd=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(J),gd=ue(hd);var bd=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(J),yd=ue(bd);var xd=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(J),wd=ue(xd);var Sd=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(J),vd=ue(Sd);var hl=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(J),Hc=ue(hl);var Id=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(J),_d=ue(Id);var gl=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(J),Yc=ue(gl);var Pd=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(J),Md=ue(Pd);var Td=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(J),Od=ue(Td);var Cd=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(J),kd=ue(Cd);var Nd=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(J),Rd=ue(Nd);var Ed=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(J),Ad=ue(Ed);var Fd=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(J),$d=ue(Fd);var Dd=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(J),Ld=ue(Dd);var Vd=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(J),zd=ue(Vd);var jd=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(J),Ud=ue(jd);var Bd=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(J),Gd=ue(Bd);var Kd=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(J),qd=ue(Kd);var Hd=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(J),Yd=ue(Hd);var Wd=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(J),Xd=ue(Wd);var Zd=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(J),Qd=ue(Zd);var Jd=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(J),eh=ue(Jd);var th=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(J),rh=ue(th);var nh=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(J),oh=ue(nh);var ih=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(J),ah=ue(ih);var sh=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(J),ch=ue(sh);var uh=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(J),fh=ue(uh);function lh(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-e*(35.34-e*(2381.73-e*(6402.7-e*(7024.72-e*2710.57)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+e*(170.73+e*(52.82-e*(131.46-e*(176.58-e*67.37)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+e*(442.36-e*(2482.43-e*(6167.24-e*(6614.94-e*2475.67)))))))+")"}var ph=Tc(zr(300,.5,0),zr(-240,.5,1));var dh=Tc(zr(-100,.75,.35),zr(80,1.5,.8)),hh=Tc(zr(260,.75,.35),zr(80,1.5,.8)),mh=zr();function gh(e){(e<0||e>1)&&(e-=Math.floor(e));var t=Math.abs(e-.5);return mh.h=360*e-100,mh.s=1.5-1.5*t,mh.l=.8-.9*t,mh+""}var bh=An(),OF=Math.PI/3,CF=Math.PI*2/3;function yh(e){var t;return e=(.5-e)*Math.PI,bh.r=255*(t=Math.sin(e))*t,bh.g=255*(t=Math.sin(e+OF))*t,bh.b=255*(t=Math.sin(e+CF))*t,bh+""}function xh(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+e*(1172.33-e*(10793.56-e*(33300.12-e*(38394.49-e*14825.05)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+e*(557.33+e*(1225.33-e*(3574.96-e*(1073.77+e*707.56)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+e*(3211.1-e*(15327.97-e*(27814-e*(22569.18-e*6838.66)))))))+")"}function wh(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}}var Sh=wh(J("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),vh=wh(J("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),Ih=wh(J("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),_h=wh(J("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function Kt(e){return function(){return e}}var vx=Math.cos;var Wc=Math.min,bl=Math.sin,je=Math.sqrt,Ix=1e-12,Ps=Math.PI,R0e=Ps/2,Xc=2*Ps;function Ph(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new ba(t)}var $0e=Array.prototype.slice;function Mh(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function BM(e){this._context=e}BM.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function Vi(e){return new BM(e)}function Th(e){return e[0]}function Oh(e){return e[1]}function yl(e,t){var r=Kt(!0),n=null,o=Vi,i=null,a=Ph(s);e=typeof e=="function"?e:e===void 0?Th:Kt(e),t=typeof t=="function"?t:t===void 0?Oh:Kt(t);function s(c){var f,u=(c=Mh(c)).length,p,l=!1,m;for(n==null&&(i=o(m=a())),f=0;f<=u;++f)!(f=m;--h)s.point(S[h],w[h]);s.lineEnd(),s.areaEnd()}x&&(S[l]=+e(b,l,p),w[l]=+t(b,l,p),s.point(n?+n(b,l,p):S[l],r?+r(b,l,p):w[l]))}if(g)return s=null,g+""||null}function u(){return yl().defined(o).curve(a).context(i)}return f.x=function(p){return arguments.length?(e=typeof p=="function"?p:Kt(+p),n=null,f):e},f.x0=function(p){return arguments.length?(e=typeof p=="function"?p:Kt(+p),f):e},f.x1=function(p){return arguments.length?(n=p==null?null:typeof p=="function"?p:Kt(+p),f):n},f.y=function(p){return arguments.length?(t=typeof p=="function"?p:Kt(+p),r=null,f):t},f.y0=function(p){return arguments.length?(t=typeof p=="function"?p:Kt(+p),f):t},f.y1=function(p){return arguments.length?(r=p==null?null:typeof p=="function"?p:Kt(+p),f):r},f.lineX0=f.lineY0=function(){return u().x(e).y(t)},f.lineY1=function(){return u().x(e).y(r)},f.lineX1=function(){return u().x(n).y(t)},f.defined=function(p){return arguments.length?(o=typeof p=="function"?p:Kt(!!p),f):o},f.curve=function(p){return arguments.length?(a=p,i!=null&&(s=a(i)),f):a},f.context=function(p){return arguments.length?(p==null?i=s=null:s=a(i=p),f):i},f}var Ch=class{constructor(t,r){this._context=t,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,r){switch(t=+t,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,r):this._context.moveTo(t,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,r,t,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,t,this._y0,t,r);break}}this._x0=t,this._y0=r}};function Px(e){return new Ch(e,!0)}function Mx(e){return new Ch(e,!1)}var kF=je(3),xl={draw(e,t){let r=je(t+Wc(t/28,.75))*.59436,n=r/2,o=n*kF;e.moveTo(0,r),e.lineTo(0,-r),e.moveTo(-o,-n),e.lineTo(o,n),e.moveTo(-o,n),e.lineTo(o,-n)}};var zi={draw(e,t){let r=je(t/Ps);e.moveTo(r,0),e.arc(0,0,r,0,Xc)}};var wl={draw(e,t){let r=je(t/5)/2;e.moveTo(-3*r,-r),e.lineTo(-r,-r),e.lineTo(-r,-3*r),e.lineTo(r,-3*r),e.lineTo(r,-r),e.lineTo(3*r,-r),e.lineTo(3*r,r),e.lineTo(r,r),e.lineTo(r,3*r),e.lineTo(-r,3*r),e.lineTo(-r,r),e.lineTo(-3*r,r),e.closePath()}};var GM=je(1/3),NF=GM*2,Sl={draw(e,t){let r=je(t/NF),n=r*GM;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}};var vl={draw(e,t){let r=je(t)*.62625;e.moveTo(0,-r),e.lineTo(r,0),e.lineTo(0,r),e.lineTo(-r,0),e.closePath()}};var Il={draw(e,t){let r=je(t-Wc(t/7,2))*.87559;e.moveTo(-r,0),e.lineTo(r,0),e.moveTo(0,r),e.lineTo(0,-r)}};var _l={draw(e,t){let r=je(t),n=-r/2;e.rect(n,n,r,r)}};var Pl={draw(e,t){let r=je(t)*.4431;e.moveTo(r,r),e.lineTo(r,-r),e.lineTo(-r,-r),e.lineTo(-r,r),e.closePath()}};var RF=.8908130915292852,KM=bl(Ps/10)/bl(7*Ps/10),EF=bl(Xc/10)*KM,AF=-vx(Xc/10)*KM,Ml={draw(e,t){let r=je(t*RF),n=EF*r,o=AF*r;e.moveTo(0,-r),e.lineTo(n,o);for(let i=1;i<5;++i){let a=Xc*i/5,s=vx(a),c=bl(a);e.lineTo(c*r,-s*r),e.lineTo(s*n-c*o,c*n+s*o)}e.closePath()}};var Tx=je(3),Tl={draw(e,t){let r=-je(t/(Tx*3));e.moveTo(0,r*2),e.lineTo(-Tx*r,-r),e.lineTo(Tx*r,-r),e.closePath()}};var FF=je(3),Ol={draw(e,t){let r=je(t)*.6824,n=r/2,o=r*FF/2;e.moveTo(0,-r),e.lineTo(o,n),e.lineTo(-o,n),e.closePath()}};var Vn=-.5,zn=je(3)/2,Ox=1/je(12),$F=(Ox/2+1)*3,Cl={draw(e,t){let r=je(t/$F),n=r/2,o=r*Ox,i=n,a=r*Ox+r,s=-i,c=a;e.moveTo(n,o),e.lineTo(i,a),e.lineTo(s,c),e.lineTo(Vn*n-zn*o,zn*n+Vn*o),e.lineTo(Vn*i-zn*a,zn*i+Vn*a),e.lineTo(Vn*s-zn*c,zn*s+Vn*c),e.lineTo(Vn*n+zn*o,Vn*o-zn*n),e.lineTo(Vn*i+zn*a,Vn*a-zn*i),e.lineTo(Vn*s+zn*c,Vn*c-zn*s),e.closePath()}};var Zc={draw(e,t){let r=je(t-Wc(t/6,1.7))*.6189;e.moveTo(-r,-r),e.lineTo(r,r),e.moveTo(-r,r),e.lineTo(r,-r)}};var kh=[zi,wl,Sl,_l,Ml,Tl,Cl],Cx=[zi,Il,Zc,Ol,xl,Pl,vl];function jn(){}function Qc(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function kl(e){this._context=e}kl.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Qc(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Qc(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function kx(e){return new kl(e)}function qM(e){this._context=e}qM.prototype={areaStart:jn,areaEnd:jn,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:Qc(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function Nx(e){return new qM(e)}function HM(e){this._context=e}HM.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,n=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:Qc(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function Rx(e){return new HM(e)}function YM(e,t){this._basis=new kl(e),this._beta=t}YM.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var e=this._x,t=this._y,r=e.length-1;if(r>0)for(var n=e[0],o=t[0],i=e[r]-n,a=t[r]-o,s=-1,c;++s<=r;)c=s/r,this._basis.point(this._beta*e[s]+(1-this._beta)*(n+c*i),this._beta*t[s]+(1-this._beta)*(o+c*a));this._x=this._y=null,this._basis.lineEnd()},point:function(e,t){this._x.push(+e),this._y.push(+t)}};var Ex=(function e(t){function r(n){return t===1?new kl(n):new YM(n,t)}return r.beta=function(n){return e(+n)},r})(.85);function Jc(e,t,r){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-r),e._x2,e._y2)}function Nh(e,t){this._context=e,this._k=(1-t)/6}Nh.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Jc(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:Jc(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Ax=(function e(t){function r(n){return new Nh(n,t)}return r.tension=function(n){return e(+n)},r})(0);function Rh(e,t){this._context=e,this._k=(1-t)/6}Rh.prototype={areaStart:jn,areaEnd:jn,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:Jc(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Fx=(function e(t){function r(n){return new Rh(n,t)}return r.tension=function(n){return e(+n)},r})(0);function Eh(e,t){this._context=e,this._k=(1-t)/6}Eh.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Jc(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var $x=(function e(t){function r(n){return new Eh(n,t)}return r.tension=function(n){return e(+n)},r})(0);function Nl(e,t,r){var n=e._x1,o=e._y1,i=e._x2,a=e._y2;if(e._l01_a>Ix){var s=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,c=3*e._l01_a*(e._l01_a+e._l12_a);n=(n*s-e._x0*e._l12_2a+e._x2*e._l01_2a)/c,o=(o*s-e._y0*e._l12_2a+e._y2*e._l01_2a)/c}if(e._l23_a>Ix){var f=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,u=3*e._l23_a*(e._l23_a+e._l12_a);i=(i*f+e._x1*e._l23_2a-t*e._l12_2a)/u,a=(a*f+e._y1*e._l23_2a-r*e._l12_2a)/u}e._context.bezierCurveTo(n,o,i,a,e._x2,e._y2)}function WM(e,t){this._context=e,this._alpha=t}WM.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:Nl(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Dx=(function e(t){function r(n){return t?new WM(n,t):new Nh(n,0)}return r.alpha=function(n){return e(+n)},r})(.5);function XM(e,t){this._context=e,this._alpha=t}XM.prototype={areaStart:jn,areaEnd:jn,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:Nl(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Lx=(function e(t){function r(n){return t?new XM(n,t):new Rh(n,0)}return r.alpha=function(n){return e(+n)},r})(.5);function ZM(e,t){this._context=e,this._alpha=t}ZM.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Nl(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Vx=(function e(t){function r(n){return t?new ZM(n,t):new Eh(n,0)}return r.alpha=function(n){return e(+n)},r})(.5);function QM(e){this._context=e}QM.prototype={areaStart:jn,areaEnd:jn,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function zx(e){return new QM(e)}function JM(e){return e<0?-1:1}function eT(e,t,r){var n=e._x1-e._x0,o=t-e._x1,i=(e._y1-e._y0)/(n||o<0&&-0),a=(r-e._y1)/(o||n<0&&-0),s=(i*o+a*n)/(n+o);return(JM(i)+JM(a))*Math.min(Math.abs(i),Math.abs(a),.5*Math.abs(s))||0}function tT(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function jx(e,t,r){var n=e._x0,o=e._y0,i=e._x1,a=e._y1,s=(i-n)/3;e._context.bezierCurveTo(n+s,o+s*t,i-s,a-s*r,i,a)}function Ah(e){this._context=e}Ah.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:jx(this,this._t0,tT(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,jx(this,tT(this,r=eT(this,e,t)),r);break;default:jx(this,this._t0,r=eT(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function rT(e){this._context=new nT(e)}(rT.prototype=Object.create(Ah.prototype)).point=function(e,t){Ah.prototype.point.call(this,t,e)};function nT(e){this._context=e}nT.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,o,i){this._context.bezierCurveTo(t,e,n,r,i,o)}};function Ux(e){return new Ah(e)}function Bx(e){return new rT(e)}function iT(e){this._context=e}iT.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),r===2)this._context.lineTo(e[1],t[1]);else for(var n=oT(e),o=oT(t),i=0,a=1;a=0;--t)o[t]=(a[t]-o[t+1])/i[t];for(i[r-1]=(e[r]+o[r-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t}};function Kx(e){return new Fh(e,.5)}function qx(e){return new Fh(e,0)}function Hx(e){return new Fh(e,1)}function Ia(e,t,r){this.k=e,this.x=t,this.y=r}Ia.prototype={constructor:Ia,scale:function(e){return e===1?this:new Ia(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Ia(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Yx=new Ia(1,0,0);Wx.prototype=Ia.prototype;function Wx(e){for(;!e.__zoom;)if(!(e=e.parentNode))return Yx;return e.__zoom}function Un(e){return e!=null&&!Number.isNaN(e)}function Nr(e,t){return+Un(t)-+Un(e)||vt(e,t)}function Ms(e,t){return+Un(t)-+Un(e)||Rn(e,t)}function Rl(e){return e!=null&&`${e}`!=""}function Xx(e){return isFinite(e)?e:NaN}function Ts(e){return e>0&&isFinite(e)?e:NaN}function eu(e){return e<0&&isFinite(e)?e:NaN}function $h(e,t){if(e instanceof Date||(e=new Date(+e)),isNaN(e))return typeof t=="function"?t(e):t;let r=e.getUTCHours(),n=e.getUTCMinutes(),o=e.getUTCSeconds(),i=e.getUTCMilliseconds();return`${DF(e.getUTCFullYear(),4)}-${ji(e.getUTCMonth()+1,2)}-${ji(e.getUTCDate(),2)}${r||n||o||i?`T${ji(r,2)}:${ji(n,2)}${o||i?`:${ji(o,2)}${i?`.${ji(i,3)}`:""}`:""}Z`:""}`}function DF(e){return e<0?`-${ji(-e,6)}`:e>9999?`+${ji(e,6)}`:ji(e,4)}function ji(e,t){return`${e}`.padStart(t,"0")}var LF=/^(?:[-+]\d{2})?\d{4}(?:-\d{2}(?:-\d{2})?)?(?:T\d{2}:\d{2}(?::\d{2}(?:\.\d{3})?)?(?:Z|[-+]\d{2}:?\d{2})?)?$/;function El(e,t){return LF.test(e+="")?new Date(e):typeof t=="function"?t(e):t}function Ui(e){if(e==null)return;let t=e[0],r=e[e.length-1];return Rn(t,r)}var ru=1e3,Pa=ru*60,Ma=Pa*60,ti=Ma*24,ei=ti*7,Os=ti*30,_a=ti*365,Zx=[["millisecond",1],["2 milliseconds",2],["5 milliseconds",5],["10 milliseconds",10],["20 milliseconds",20],["50 milliseconds",50],["100 milliseconds",100],["200 milliseconds",200],["500 milliseconds",500],["second",ru],["5 seconds",5*ru],["15 seconds",15*ru],["30 seconds",30*ru],["minute",Pa],["5 minutes",5*Pa],["15 minutes",15*Pa],["30 minutes",30*Pa],["hour",Ma],["3 hours",3*Ma],["6 hours",6*Ma],["12 hours",12*Ma],["day",ti],["2 days",2*ti],["week",ei],["2 weeks",2*ei],["month",Os],["3 months",3*Os],["6 months",6*Os],["year",_a],["2 years",2*_a],["5 years",5*_a],["10 years",10*_a],["20 years",20*_a],["50 years",50*_a],["100 years",100*_a]],Qx=new Map([["second",ru],["minute",Pa],["hour",Ma],["day",ti],["monday",ei],["tuesday",ei],["wednesday",ei],["thursday",ei],["friday",ei],["saturday",ei],["sunday",ei],["week",ei],["month",Os],["year",_a]]),sT=new Map([["second",ar],["minute",Ei],["hour",Fi],["day",Ln],["monday",Sa],["tuesday",ed],["wednesday",td],["thursday",Zo],["friday",rd],["saturday",nd],["sunday",bn],["week",bn],["month",Di],["year",Cr]]),Jx=new Map([["second",ar],["minute",Ai],["hour",$i],["day",vs],["monday",va],["tuesday",od],["wednesday",id],["thursday",Qo],["friday",ad],["saturday",sd],["sunday",yn],["week",yn],["month",Li],["year",kr]]),nu=Symbol("intervalDuration"),Lh=Symbol("intervalType");for(let[e,t]of sT)t[nu]=Qx.get(e),t[Lh]="time";for(let[e,t]of Jx)t[nu]=Qx.get(e),t[Lh]="utc";var Al=[["year",kr,"utc"],["month",Li,"utc"],["day",vs,"utc",6*Os],["hour",$i,"utc",3*ti],["minute",Ai,"utc",6*Ma],["second",ar,"utc",30*Pa]],Dh=[["year",Cr,"time"],["month",Di,"time"],["day",Ln,"time",6*Os],["hour",Fi,"time",3*ti],["minute",Ei,"time",6*Ma],["second",ar,"time",30*Pa]],VF=[Al[0],Dh[0],Al[1],Dh[1],Al[2],Dh[2],...Al.slice(3)];function cT(e){let t=`${e}`.toLowerCase();t.endsWith("s")&&(t=t.slice(0,-1));let r=1,n=/^(?:(\d+)\s+)/.exec(t);switch(n&&(t=t.slice(n[0].length),r=+n[1]),t){case"quarter":t="month",r*=3;break;case"half":t="month",r*=6;break}let o=Jx.get(t);if(!o)throw new Error(`unknown interval: ${e}`);if(r>1&&!o.every)throw new Error(`non-periodic interval: ${t}`);return[t,r]}function e1(e){return uT(cT(e),"time")}function Fl(e){return uT(cT(e),"utc")}function uT([e,t],r){let n=(r==="time"?sT:Jx).get(e);return t>1&&(n=n.every(t),n[nu]=Qx.get(e)*t,n[Lh]=r),n}function t1(e,t){if(!(t>1))return;let r=e[nu];if(!Zx.some(([,o])=>o===r)||r%ti===0&&tiMath.log(o)).center(Zx,Math.log(r*t))];return(e[Lh]==="time"?e1:Fl)(n)}function aT(e,t,r){let n=t==="time"?qc:Jo;if(r==null)return n(e==="year"?"%Y":e==="month"?"%Y-%m":e==="day"?"%Y-%m-%d":e==="hour"||e==="minute"?"%Y-%m-%dT%H:%M":e==="second"?"%Y-%m-%dT%H:%M:%S":"%Y-%m-%dT%H:%M:%S.%L");let o=zF(r);switch(e){case"millisecond":return tu(n(".%L"),n(":%M:%S"),o);case"second":return tu(n(":%S"),n("%-I:%M"),o);case"minute":return tu(n("%-I:%M"),n("%p"),o);case"hour":return tu(n("%-I %p"),n("%b %-d"),o);case"day":return tu(n("%-d"),n("%b"),o);case"month":return tu(n("%b"),n("%Y"),o);case"year":return n("%Y")}throw new Error("unable to format time ticks")}function zF(e){return e==="left"||e==="right"?(t,r)=>` ${t} ${r}`:e==="top"?(t,r)=>`${r} ${t}`:(t,r)=>`${t} -${r}`}function LF(e){return e==="time"?Ah:e==="utc"?El:$F}function oM(e,t,r){let n=er(Wp(t,(o,i)=>Math.abs(i-o)));if(n<1e3)return eM("millisecond","utc",r);for(let[o,i,a,s]of LF(e)){if(n>s||o==="hour"&&!n)break;if(t.every(c=>i.floor(c)>=c))return eM(o,a,r)}}function tu(e,t,r){return(n,o,i)=>{let a=e(n,o),s=t(n,o),c=o-Ui(i);return o!==c&&i[c]!==void 0&&s===t(i[c],c)?a:r(a,s)}}var e1=Object.getPrototypeOf(Uint8Array),VF=Object.prototype.toString;function go(e){return e instanceof Array||e instanceof e1}function sM(e){return e instanceof e1&&!jF(e)}function cM(e){return e?.prototype instanceof e1&&!UF(e)}function jF(e){return e instanceof BigInt64Array||e instanceof BigUint64Array}function UF(e){return e===BigInt64Array||e===BigUint64Array}var t1=Symbol("reindex");function dt(e,t,r){let n=typeof t;return n==="string"?TM(e)?r1(e.getChild(t),r):iM(e,n1(t),r):n==="function"?iM(e,t,r):n==="number"||t instanceof Date||n==="boolean"?We(e,bn(t),r):typeof t?.transform=="function"?Jx(t.transform(e),r):zF(Jx(t,r),e?.[t1])}function zF(e,t){return e!=null&&t?Lh(e,t):e}function iM(e,t,r){return We(e,cM(r)?(n,o)=>o1(t(n,o)):t,r)}function Jx(e,t){return t===void 0?ri(e):MM(e)?r1(e,t):e instanceof t?e:t.from(e,cM(t)&&!sM(e)?o1:void 0)}function r1(e,t){return e==null?e:(t===void 0||t===Array)&&qF(e.type)?i1(aM(e)):Jx(aM(e),t)}function aM(e){return e.nullCount?e.toJSON():e.toArray()}var ou=[null],n1=e=>t=>{let r=t[e];return r===void 0&&t.type==="Feature"?t.properties?.[e]:r},ei={transform:jr},nt={transform:e=>e};var uM=()=>1,fM=()=>!0,At=e=>e==null?e:`${e}`,Ft=e=>e==null?e:+e;var $h=e=>e?e[0]:void 0,Fl=e=>e?e[1]:void 0;var bn=e=>()=>e;function lM(e){let t=+`${e}`.slice(1)/100;return(r,n)=>En(r,t,n)}function ti(e){return sM(e)?e:We(e,o1,Float64Array)}function o1(e){return e==null?NaN:Number(e)}function i1(e){return We(e,a1)}function a1(e){return e instanceof Date&&!isNaN(e)?e:typeof e=="string"?Rl(e):e==null||isNaN(e=Number(e))?void 0:new Date(e)}function Zr(e,t){return e===void 0&&(e=t),e===null?[void 0,"none"]:uu(e)?[void 0,e]:[e,void 0]}function Ct(e,t){return e===void 0&&(e=t),e===null||typeof e=="number"?[void 0,e]:[e,void 0]}function s1(e,t,r){if(e!=null)return Vr(e,t,r)}function Vr(e,t,r){let n=`${e}`.toLowerCase();if(!r.includes(n))throw new Error(`invalid ${t}: ${e}`);return n}function zi(e){return TM(e)?e:ri(e)}function ri(e){if(e==null||go(e))return e;if(MM(e))return r1(e);if(pM(e))switch(e.type){case"FeatureCollection":return e.features;case"GeometryCollection":return e.geometries;default:return[e]}return Array.from(e)}function pM(e){switch(e?.type){case"FeatureCollection":case"GeometryCollection":case"Feature":case"LineString":case"MultiLineString":case"MultiPoint":case"MultiPolygon":case"Point":case"Polygon":case"Sphere":return!0;default:return!1}}function We(e,t,r=Array){return e==null?e:e instanceof r?e.map(t):r.from(e,t)}function Ma(e,t=Array){return e instanceof t?e.slice():t.from(e)}function mM({x:e,x1:t,x2:r}){return e!==void 0||t!==void 0||r!==void 0}function c1({y:e,y1:t,y2:r}){return e!==void 0||t!==void 0||r!==void 0}function Dh(e){return mM(e)||c1(e)||e.interval!==void 0}function yo(e){return e?.toString===VF}function iu(e){return yo(e)&&(e.type!==void 0||e.domain!==void 0)}function au(e){return yo(e)&&typeof e.transform!="function"}function Ca(e){return au(e)&&e.value===void 0&&e.channel===void 0}function dM(e,t,r,n=nt){return t===void 0&&r===void 0?(t=0,r=e===void 0?n:e):t===void 0?t=e===void 0?0:e:r===void 0&&(r=e===void 0?0:e),[t,r]}function bo(e,t){return e===void 0&&t===void 0?[$h,Fl]:[e,t]}function su({z:e,fill:t,stroke:r}={}){return e===void 0&&([e]=Zr(t)),e===void 0&&([e]=Zr(r)),e}function Oa(e){return go(e)?e.length:e?.numRows}function jr(e){let t=Oa(e),r=new Uint32Array(t);for(let n=0;ne[r],e.constructor):We(t,r=>e.at(r))}function hM(e,t,r){return e.subarray?e.subarray(t,r):e.slice(t,r)}function Bn(e){return e!==null&&typeof e=="object"?e.valueOf():e}function gM(e,t){if(t[e]!==void 0)return t[e];switch(e){case"x1":case"x2":e="x";break;case"y1":case"y2":e="y";break}return t[e]}function cu(e){let t;return[{transform:()=>t,label:xo(e)},r=>t=r]}function Gn(e){return e==null?[e]:cu(e)}function xo(e,t){return typeof e=="string"?e:e&&e.label!==void 0?e.label:t}function $l(e,t){return{transform(r){let n=e.transform(r),o=t.transform(r);return Et(n)||Et(o)?We(n,(i,a)=>new Date((+n[a]+ +o[a])/2)):We(n,(i,a)=>(+n[a]+ +o[a])/2,Float64Array)},label:e.label}}function Dl(e,t){let r=u1(t?.interval,t?.type);return r?We(e,r):e}function u1(e,t){let r=Vh(e,t);return r&&(n=>zn(n)?r.floor(n):n)}function Vh(e,t){if(e!=null){if(typeof e=="number")return BF(e);if(typeof e=="string")return(t==="time"?Zx:Al)(e);if(typeof e.floor!="function")throw new Error("invalid interval; missing floor method");if(typeof e.offset!="function")throw new Error("invalid interval; missing offset method");return e}}function BF(e){e=+e,0Math.floor(r*t)/t,offset:(r,n=1)=>(r*t+Math.floor(n))/t,range:(r,n)=>ns(Math.ceil(r*t),n*t).map(o=>o/t)}:{floor:r=>Math.floor(r/t)*t,offset:(r,n=1)=>r+t*Math.floor(n),range:(r,n)=>ns(Math.ceil(r/t),n/t).map(o=>o*t)}}function ni(e,t){if(e=Vh(e,t),e&&typeof e.range!="function")throw new Error("invalid interval: missing range method");return e}function yM(e,t){if(e=ni(e,t),e&&typeof e.ceil!="function")throw new Error("invalid interval: missing ceil method");return e}function bM(e){return ka(e)&&typeof e?.floor=="function"&&e.floor()instanceof Date}function ka(e){return typeof e?.range=="function"}function oi(e){return e===void 0||au(e)?e:{value:e}}function xM(e){return e==null?null:{transform:t=>dt(t,e,Float64Array),label:xo(e)}}function Qr(e){return e&&typeof e[Symbol.iterator]=="function"}function jh(e){for(let t of e)if(t!=null)return typeof t!="object"||t instanceof Date}function f1(e){for(let t of e){if(t==null)continue;let r=typeof t;return r==="string"||r==="boolean"}}function Et(e){for(let t of e)if(t!=null)return t instanceof Date}function wM(e){for(let t of e)if(t!=null)return typeof t=="string"&&isNaN(t)&&Rl(t)}function SM(e){for(let t of e)if(t!=null){if(typeof t!="string")return!1;if(t.trim())return!isNaN(t)}}function vM(e){for(let t of e)if(t!=null)return typeof t=="number"}function Uh(e,t){let r;for(let n of e)if(n!=null){if(!t(n))return!1;r=!0}return r}var GF=new Set("none,currentcolor,transparent,aliceblue,antiquewhite,aqua,aquamarine,azure,beige,bisque,black,blanchedalmond,blue,blueviolet,brown,burlywood,cadetblue,chartreuse,chocolate,coral,cornflowerblue,cornsilk,crimson,cyan,darkblue,darkcyan,darkgoldenrod,darkgray,darkgreen,darkgrey,darkkhaki,darkmagenta,darkolivegreen,darkorange,darkorchid,darkred,darksalmon,darkseagreen,darkslateblue,darkslategray,darkslategrey,darkturquoise,darkviolet,deeppink,deepskyblue,dimgray,dimgrey,dodgerblue,firebrick,floralwhite,forestgreen,fuchsia,gainsboro,ghostwhite,gold,goldenrod,gray,green,greenyellow,grey,honeydew,hotpink,indianred,indigo,ivory,khaki,lavender,lavenderblush,lawngreen,lemonchiffon,lightblue,lightcoral,lightcyan,lightgoldenrodyellow,lightgray,lightgreen,lightgrey,lightpink,lightsalmon,lightseagreen,lightskyblue,lightslategray,lightslategrey,lightsteelblue,lightyellow,lime,limegreen,linen,magenta,maroon,mediumaquamarine,mediumblue,mediumorchid,mediumpurple,mediumseagreen,mediumslateblue,mediumspringgreen,mediumturquoise,mediumvioletred,midnightblue,mintcream,mistyrose,moccasin,navajowhite,navy,oldlace,olive,olivedrab,orange,orangered,orchid,palegoldenrod,palegreen,paleturquoise,palevioletred,papayawhip,peachpuff,peru,pink,plum,powderblue,purple,rebeccapurple,red,rosybrown,royalblue,saddlebrown,salmon,sandybrown,seagreen,seashell,sienna,silver,skyblue,slateblue,slategray,slategrey,snow,springgreen,steelblue,tan,teal,thistle,tomato,turquoise,violet,wheat,white,whitesmoke,yellow".split(","));function uu(e){return typeof e!="string"?!1:(e=e.toLowerCase().trim(),/^#[0-9a-f]{3,8}$/.test(e)||/^(?:url|var|rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch|color|color-mix)\(.*\)$/.test(e)||GF.has(e))}function IM(e){return typeof e=="number"&&(0<=e&&e<=1||isNaN(e))}function ir(e){return e==null||Cs(e)}function Cs(e){return/^\s*none\s*$/i.test(e)}function _M(e){return/^\s*round\s*$/i.test(e)}function zh(e,t){return s1(e,t,["middle","top-left","top","top-right","right","bottom-right","bottom","bottom-left","left"])}function Na(e="middle"){return zh(e,"frameAnchor")}function PM(e={},...t){let r=e;for(let n of t)for(let o in n)if(r[o]===void 0){let i=n[o];r===e?r={...r,[o]:i}:r[o]=i}return r}function KF(e){console.warn("named iterables are deprecated; please use an object instead");let t=new Set;return Object.fromEntries(Array.from(e,r=>{let{name:n}=r;if(n==null)throw new Error("missing name");let o=`${n}`;if(o==="__proto__")throw new Error(`illegal name: ${o}`);if(t.has(o))throw new Error(`duplicate name: ${o}`);return t.add(o),[n,r]}))}function l1(e){return Qr(e)?KF(e):e}function Bh(e){return e===!0?e="frame":e===!1?e=null:!pM(e)&&e!=null&&(e=Vr(e,"clip",["frame","sphere"]),e==="sphere"&&(e={type:"Sphere"})),e}function TM(e){return e&&typeof e.getChild=="function"&&typeof e.toArray=="function"&&e.schema&&Array.isArray(e.schema.fields)}function MM(e){return e&&typeof e.toArray=="function"&&e.type}function qF(e){return e&&(e.typeId===8||e.typeId===10)&&e.unit===1}var Kn=Symbol("position"),xn=Symbol("color"),Os=Symbol("radius"),ks=Symbol("length"),Ns=Symbol("opacity"),fu=Symbol("symbol"),CM=Symbol("projection"),Xe=new Map([["x",Kn],["y",Kn],["fx",Kn],["fy",Kn],["r",Os],["color",xn],["opacity",Ns],["symbol",fu],["length",ks],["projection",CM]]);function OM(e){return e===Kn||e===CM}function kM(e){return e===Kn||e===Os||e===ks||e===Ns}var HF=Math.sqrt(3),YF=2/HF,WF={draw(e,t){let r=Math.sqrt(t/Math.PI),n=r*YF,o=n/2;e.moveTo(0,n),e.lineTo(r,o),e.lineTo(r,-o),e.lineTo(0,-n),e.lineTo(-r,-o),e.lineTo(-r,o),e.closePath()}},p1=new Map([["asterisk",bl],["circle",Vi],["cross",xl],["diamond",wl],["diamond2",Sl],["hexagon",WF],["plus",vl],["square",Il],["square2",_l],["star",Pl],["times",Zc],["triangle",Tl],["triangle2",Ml],["wye",Cl]]);function m1(e){return e&&typeof e.draw=="function"}function NM(e){return m1(e)?!0:typeof e!="string"?!1:p1.has(e.toLowerCase())}function lu(e){if(e==null||m1(e))return e;let t=p1.get(`${e}`.toLowerCase());if(t)return t;throw new Error(`invalid symbol: ${e}`)}function RM(e){if(e==null||m1(e))return[void 0,e];if(typeof e=="string"){let t=p1.get(`${e}`.toLowerCase());if(t)return[void 0,t]}return[e,void 0]}function Rs({filter:e,sort:t,reverse:r,transform:n,initializer:o,...i}={},a){if(n===void 0&&(e!=null&&(n=EM(e)),t!=null&&!Ca(t)&&(n=d1(n,g1(t))),r&&(n=d1(n,AM))),a!=null&&o!=null)throw new Error("transforms cannot be applied after initializers");return{...i,...(t===null||Ca(t))&&{sort:t},transform:d1(n,a)}}function Bi({filter:e,sort:t,reverse:r,initializer:n,...o}={},i){return n===void 0&&(e!=null&&(n=EM(e)),t!=null&&!Ca(t)&&(n=h1(n,g1(t))),r&&(n=h1(n,AM))),{...o,...(t===null||Ca(t))&&{sort:t},initializer:h1(n,i)}}function d1(e,t){return e==null?t===null?void 0:t:t==null?e===null?void 0:e:function(r,n,o){return{data:r,facets:n}=e.call(this,r,n,o),t.call(this,zi(r),n,o)}}function h1(e,t){return e==null?t===null?void 0:t:t==null?e===null?void 0:e:function(r,n,o,...i){let a,s,c,u,f,p;return{data:s=r,facets:c=n,channels:a}=e.call(this,r,n,o,...i),{data:f=s,facets:p=c,channels:u}=t.call(this,s,c,{...o,...a},...i),{data:f,facets:p,channels:{...a,...u}}}}function XF(e,t){return(e.initializer!=null?Bi:Rs)(e,t)}function EM(e){return(t,r)=>{let n=dt(t,e);return{data:t,facets:r.map(o=>o.filter(i=>n[i]))}}}function AM(e,t){return{data:e,facets:t.map(r=>r.slice().reverse())}}function FM(e,{sort:t,...r}={}){return{...(au(e)&&e.channel!==void 0?Bi:XF)(r,g1(e)),sort:Ca(t)?t:null}}function g1(e){return(typeof e=="function"&&e.length!==1?ZF:QF)(e)}function ZF(e){return(t,r)=>{let n=go(t)?(o,i)=>e(t[o],t[i]):(o,i)=>e(t.get(o),t.get(i));return{data:t,facets:r.map(o=>o.slice().sort(n))}}}function QF(e){let t,r;({channel:t,value:e,order:r}={...oi(e)});let n=t?.startsWith("-");if(n&&(t=t.slice(1)),r===void 0&&(r=n?Ps:Cr),typeof r!="function")switch(`${r}`.toLowerCase()){case"ascending":r=Cr;break;case"descending":r=Ps;break;default:throw new Error(`invalid order: ${r}`)}return(o,i,a)=>{let s;if(t===void 0)s=dt(o,e);else{if(a===void 0)throw new Error("channel sort requires an initializer");if(s=a[t],!s)return{};s=s.value}let c=(u,f)=>r(s[u],s[f]);return{data:o,facets:i.map(u=>u.slice().sort(c))}}}function Vl(e,...t){for(let{name:r}of e)if(t.includes(r))return!0;return!1}function LM(e,t,r=y1){let n=Object.entries(e);return t.title!=null&&e.title===void 0&&n.push(["title",n9]),t.href!=null&&e.href===void 0&&n.push(["href",Gh]),n.filter(([,o])=>o!==void 0).map(([o,i])=>i===null?JF(o):r(o,i,t))}function y1(e,t,r,n=b1){let o;yo(t)&&"reduce"in t&&(o=t.scale,t=t.reduce);let i=n(e,t,r),[a,s]=cu(i.label),c;return{name:e,output:o===void 0?a:{value:a,scale:o},initialize(u){i.initialize(u),c=s([])},scope(u,f){i.scope(u,f)},reduce(u,f){c.push(i.reduce(u,f))}}}function JF(e){return{name:e,initialize(){},scope(){},reduce(){}}}function b1(e,t,r,n=jl){let o=gM(e,r),i=n(t,o),a,s;return{label:xo(i===Ll?null:o,i.label),initialize(c){a=o===void 0?c:dt(c,o),i.scope==="data"&&(s=i.reduceIndex(jr(c),a))},scope(c,u){i.scope===c&&(s=i.reduceIndex(u,a))},reduce(c,u){return i.scope==null?i.reduceIndex(c,a,u):i.reduceIndex(c,a,s,u)}}}function x1(e,t){return t?Fo(e,r=>t[r]):[[,e]]}function jl(e,t,r=e9){if(e==null)return r(e);if(typeof e.reduceIndex=="function")return e;if(typeof e.reduce=="function"&&yo(e))return t9(e);if(typeof e=="function")return r9(e);if(/^p\d{2}$/i.test(e))return Gi(lM(e));switch(`${e}`.toLowerCase()){case"first":return Gh;case"last":return o9;case"identity":return w1;case"count":return Ll;case"distinct":return i9;case"sum":return t==null?Ll:a9;case"proportion":return DM(t,"data");case"proportion-facet":return DM(t,"facet");case"deviation":return Gi(bc);case"min":return Gi(Fr);case"min-index":return Gi(Gp);case"max":return Gi(er);case"max-index":return Gi(Bp);case"mean":return $M(Hp);case"median":return $M(rs);case"variance":return Gi(yc);case"mode":return Gi(Yp)}return r(e)}function e9(e){throw new Error(`invalid reduce: ${e}`)}function VM(e,t){for(let r in t){let n=t[r];if(n!==void 0&&!e.some(o=>o.name===r))return n}}function jM(e,t,r){if(t){let n=t.output.transform(),o=(i,a)=>Cr(n[i],n[a]);e.forEach(i=>i.sort(o))}r&&e.forEach(n=>n.reverse())}function t9(e){return console.warn("deprecated reduce interface; implement reduceIndex instead."),{...e,reduceIndex:e.reduce.bind(e)}}function r9(e){return{reduceIndex(t,r,n){return e(Lh(r,t),n)}}}function Gi(e){return{reduceIndex(t,r){return e(t,n=>r[n])}}}function $M(e){return{reduceIndex(t,r){let n=e(t,o=>r[o]);return Et(r)?new Date(n):n}}}var w1={reduceIndex(e,t){return Lh(t,e)}},Gh={reduceIndex(e,t){return t[e[0]]}},n9={reduceIndex(e,t){let n=_i(co(e,i=>i.length,i=>t[i]),Fl),o=n.slice(-5).reverse();if(o.length`${i} (${a.toLocaleString("en-US")})`).join(` -`)}},o9={reduceIndex(e,t){return t[e[e.length-1]]}},Ll={label:"Frequency",reduceIndex(e){return e.length}},i9={label:"Distinct",reduceIndex(e,t){let r=new so;for(let n of e)r.add(t[n]);return r.size}},a9=Gi(dn);function DM(e,t){return e==null?{scope:t,label:"Frequency",reduceIndex:(r,n,o=1)=>r.length/o}:{scope:t,reduceIndex:(r,n,o=1)=>dn(r,i=>n[i])/o}}var UM={reduceIndex(e,t,{z:r}){return r}};function pu(e,{scale:t,type:r,value:n,filter:o,hint:i,label:a=xo(n)},s){return i===void 0&&typeof n?.transform=="function"&&(i=n.hint),v1(s,{scale:t,type:r,value:dt(e,n),label:a,filter:o,hint:i})}function BM(e,t){return Object.fromEntries(Object.entries(e).map(([r,n])=>[r,pu(t,n,r)]))}function GM(e,t){let r=Object.fromEntries(Object.entries(e).map(([n,{scale:o,value:i}])=>{let a=o==null?null:t[o];return[n,a==null?i:We(i,a)]}));return r.channels=e,r}function v1(e,t){let{scale:r,value:n}=t;if(r===!0||r==="auto")switch(e){case"fill":case"stroke":case"color":t.scale=r!==!0&&Uh(n,uu)?null:"color",t.defaultScale="color";break;case"fillOpacity":case"strokeOpacity":case"opacity":t.scale=r!==!0&&Uh(n,IM)?null:"opacity",t.defaultScale="opacity";break;case"symbol":r!==!0&&Uh(n,NM)?(t.scale=null,t.value=We(n,lu)):t.scale="symbol",t.defaultScale="symbol";break;default:t.scale=Xe.has(e)?e:null;break}else if(r===!1)t.scale=null;else if(r!=null&&!Xe.has(r))throw new Error(`unknown scale: ${r}`);return t}function KM(e,t,r,n,o){let{order:i,reverse:a,reduce:s=!0,limit:c}=o;for(let u in o){if(!Xe.has(u))continue;let{value:f,order:p=i,reverse:l=a,reduce:m=s,limit:h=c}=oi(o[u]),b=f?.startsWith("-");if(b&&(f=f.slice(1)),p=p===void 0?b!==(f==="width"||f==="height")?HM:qM:u9(p),m==null||m===!1)continue;let y=u==="fx"||u==="fy"?c9(t,n[u]):s9(r,u);if(!y)throw new Error(`missing channel for scale: ${u}`);let x=y.value,[g=0,S=1/0]=Qr(h)?h:h<0?[h]:[0,h];if(f==null)y.domain=()=>{let w=Array.from(new so(x));return l&&(w=w.reverse()),(g!==0||S!==1/0)&&(w=w.slice(g,S)),w};else{let w=f==="data"?e:f==="height"?zM(r,"y1","y2"):f==="width"?zM(r,"x1","x2"):S1(r,f,f==="y"?"y2":f==="x"?"x2":void 0),_=jl(m===!0?"max":m,w);y.domain=()=>{let v=yb(jr(x),I=>_.reduceIndex(I,w),I=>x[I]);return p&&v.sort(p),l&&v.reverse(),(g!==0||S!==1/0)&&(v=v.slice(g,S)),v.map($h)}}}}function s9(e,t){for(let r in e){let n=e[r];if(n.scale===t)return n}}function c9(e,t){let r=e.original;if(r===e)return t;let n=t.value,o=t.value=[];for(let i=0;iMath.abs(i-n[a]),Float64Array)}function S1(e,t,r){let n=e[t];if(!n&&r!==void 0&&(n=e[r]),n)return n.value;throw new Error(`missing channel: ${t}`)}function u9(e){if(e==null||typeof e=="function")return e;switch(`${e}`.toLowerCase()){case"ascending":return qM;case"descending":return HM}throw new Error(`invalid order: ${e}`)}function qM([e,t],[r,n]){return Cr(t,n)||Cr(e,r)}function HM([e,t],[r,n]){return Ps(t,n)||Cr(e,r)}function I1(e,t){let r=e[t];if(r){for(;r.source;)r=r.source;return r.source===null?null:r}}var QM=new Map([["accent",ux],["category10",cx],["dark2",fx],["observable10",lx],["paired",px],["pastel1",mx],["pastel2",dx],["set1",hx],["set2",gx],["set3",yx],["tableau10",bx]]);function JM(e){return e!=null&&QM.has(`${e}`.toLowerCase())}var YM=new Map([...QM,["brbg",Ki(pd,md)],["prgn",Ki(dd,hd)],["piyg",Ki(gd,yd)],["puor",Ki(bd,xd)],["rdbu",Ki(dl,Hc)],["rdgy",Ki(wd,Sd)],["rdylbu",Ki(hl,Yc)],["rdylgn",Ki(vd,Id)],["spectral",Ki(_d,Pd)],["burd",WM(dl,Hc)],["buylrd",WM(hl,Yc)],["blues",ar(Xd,Zd)],["greens",ar(Qd,Jd)],["greys",ar(eh,th)],["oranges",ar(ah,sh)],["purples",ar(rh,nh)],["reds",ar(oh,ih)],["turbo",qi(gh)],["viridis",qi(bh)],["magma",qi(xh)],["inferno",qi(wh)],["plasma",qi(Sh)],["cividis",qi(ch)],["cubehelix",qi(uh)],["warm",qi(lh)],["cool",qi(ph)],["bugn",ar(Td,Md)],["bupu",ar(Cd,Od)],["gnbu",ar(kd,Nd)],["orrd",ar(Rd,Ed)],["pubu",ar($d,Dd)],["pubugn",ar(Ad,Fd)],["purd",ar(Ld,Vd)],["rdpu",ar(jd,Ud)],["ylgn",ar(Gd,Kd)],["ylgnbu",ar(zd,Bd)],["ylorbr",ar(qd,Hd)],["ylorrd",ar(Yd,Wd)],["rainbow",XM(mh)],["sinebow",XM(hh)]]);function ar(e,t){return({length:r})=>r===1?[e[3][1]]:r===2?[e[3][1],e[3][2]]:(r=Math.max(3,Math.floor(r)),r>9?_r(t,r):e[r])}function Ki(e,t){return({length:r})=>r===2?[e[3][0],e[3][2]]:(r=Math.max(3,Math.floor(r)),r>11?_r(t,r):e[r])}function WM(e,t){return({length:r})=>r===2?[e[3][2],e[3][0]]:(r=Math.max(3,Math.floor(r)),r>11?_r(n=>t(1-n),r):e[r].slice().reverse())}function qi(e){return({length:t})=>_r(e,Math.max(2,Math.floor(t)))}function XM(e){return({length:t})=>_r(e,Math.floor(t)+1).slice(0,-1)}function _1(e){let t=`${e}`.toLowerCase();if(!YM.has(t))throw new Error(`unknown ordinal scheme: ${t}`);return YM.get(t)}function Ul(e,t){let r=_1(e),n=typeof r=="function"?r({length:t}):r;return n.length!==t?n.slice(0,t):n}function eC(e,t="greys"){let r=new Set,[n,o]=Ul(t,2);for(let i of e)if(i!=null)if(i===!0)r.add(o);else if(i===!1)r.add(n);else return;return[...r]}var ZM=new Map([["brbg",md],["prgn",hd],["piyg",yd],["puor",xd],["rdbu",Hc],["rdgy",Sd],["rdylbu",Yc],["rdylgn",Id],["spectral",Pd],["burd",e=>Hc(1-e)],["buylrd",e=>Yc(1-e)],["blues",Zd],["greens",Jd],["greys",th],["purples",nh],["reds",ih],["oranges",sh],["turbo",gh],["viridis",bh],["magma",xh],["inferno",wh],["plasma",Sh],["cividis",ch],["cubehelix",uh],["warm",lh],["cool",ph],["bugn",Md],["bupu",Od],["gnbu",Nd],["orrd",Ed],["pubugn",Fd],["pubu",Dd],["purd",Vd],["rdpu",Ud],["ylgnbu",Bd],["ylgn",Kd],["ylorbr",Hd],["ylorrd",Wd],["rainbow",mh],["sinebow",hh]]);function mu(e){let t=`${e}`.toLowerCase();if(!ZM.has(t))throw new Error(`unknown quantitative scheme: ${t}`);return ZM.get(t)}var f9=new Set(["brbg","prgn","piyg","puor","rdbu","rdgy","rdylbu","rdylgn","spectral","burd","buylrd"]);function tC(e){return e!=null&&f9.has(`${e}`.toLowerCase())}var T1=e=>t=>e(1-t),P1=[0,1],rC=new Map([["number",mt],["rgb",Fn],["hsl",Gb],["hcl",Kb],["lab",lm]]);function M1(e){let t=`${e}`.toLowerCase();if(!rC.has(t))throw new Error(`unknown interpolator: ${t}`);return rC.get(t)}function hu(e,t,r,{type:n,nice:o,clamp:i,zero:a,domain:s=lC(e,r),unknown:c,round:u,scheme:f,interval:p,range:l=Xe.get(e)===Os?d9(r,s):Xe.get(e)===ks?h9(r,s):Xe.get(e)===Ns?P1:void 0,interpolate:m=Xe.get(e)===xn?f==null&&l!==void 0?Fn:mu(f!==void 0?f:n==="cyclical"?"rainbow":"turbo"):u?us:mt,reverse:h}){if(s=nC(s),p=ni(p,n),(n==="cyclical"||n==="sequential")&&(n="linear"),typeof m!="function"&&(m=M1(m)),h=!!h,l!==void 0){let b=s.length,y=(l=nC(l)).length;if(b!==y){if(m.length===1)throw new Error("invalid piecewise interpolator");m=jo(m,l),l=void 0}}if(m.length===1?(h&&(m=T1(m),h=!1),l===void 0&&(l=Float64Array.from(s,(b,y)=>y/(s.length-1)),l.length===2&&(l=P1)),t.interpolate((l===P1?bn:zl)(m))):t.interpolate(m),a){let[b,y]=Yt(s);(b>0||y<0)&&(s=Ma(s),(Ui(s)||1)===Math.sign(b)?s[0]=0:s[s.length-1]=0)}return h&&(s=la(s)),t.domain(s).unknown(c),o&&(t.nice(l9(o,n)),s=t.domain()),l!==void 0&&t.range(l),i&&t.clamp(i),{type:n,domain:s,range:l,scale:t,interpolate:m,interval:p}}function nC(e){return e=ri(e),e.length>=2?e:[e[0],e[0]]}function l9(e,t){return e===!0?void 0:typeof e=="number"?e:yM(e,t)}function oC(e,t,r){return hu(e,ys(),t,r)}function iC(e,t,r){return C1(e,t,{...r,exponent:.5})}function C1(e,t,{exponent:r=1,...n}){return hu(e,nl().exponent(r),t,{...n,type:"pow"})}function aC(e,t,{base:r=10,domain:n=g9(t),...o}){return hu(e,tl().base(r),t,{...o,domain:n})}function sC(e,t,{constant:r=1,...n}){return hu(e,rl().constant(r),t,n)}function cC(e,t,{range:r,quantiles:n=r===void 0?5:(r=[...r]).length,n:o=n,scheme:i="rdylbu",domain:a=y9(t),unknown:s,interpolate:c,reverse:u}){return r===void 0&&(r=c!==void 0?_r(c,o):Xe.get(e)===xn?Ul(i,o):void 0),a.length>0&&(a=ol(a,r===void 0?{length:o}:r).quantiles()),Kh(e,t,{domain:a,range:r,reverse:u,unknown:s})}function uC(e,t,{range:r,n=r===void 0?5:(r=[...r]).length,scheme:o="rdylbu",domain:i=lC(e,t),unknown:a,interpolate:s,reverse:c}){let[u,f]=Yt(i),p;return r===void 0?(p=uo(u,f,n),p[0]<=u&&p.splice(0,1),p[p.length-1]>=f&&p.pop(),n=p.length+1,r=s!==void 0?_r(s,n):Xe.get(e)===xn?Ul(o,n):void 0):(p=_r(mt(u,f),n+1).slice(1,-1),u instanceof Date&&(p=p.map(l=>new Date(l)))),Ui(ri(i))<0&&p.reverse(),Kh(e,t,{domain:p,range:r,reverse:c,unknown:a})}function Kh(e,t,{domain:r=[0],unknown:n,scheme:o="rdylbu",interpolate:i,range:a=i!==void 0?_r(i,r.length+1):Xe.get(e)===xn?Ul(o,r.length+1):void 0,reverse:s}){r=ri(r);let c=Ui(r);if(!isNaN(c)&&!p9(r,c))throw new Error(`the ${e} scale has a non-monotonic domain`);return s&&(a=la(a)),{type:"threshold",scale:il(c<0?la(r):r,a===void 0?[]:a).unknown(n),domain:r,range:a}}function p9(e,t){for(let r=1,n=e.length,o=e[0];rt}}function du(e,t=Hx){return e.length?[Fr(e,({value:r})=>r===void 0?r:Fr(r,t)),er(e,({value:r})=>r===void 0?r:er(r,t))]:[0,1]}function lC(e,t){let r=Xe.get(e);return(r===Os||r===Ns||r===ks?m9:du)(t)}function m9(e){return[0,e.length?er(e,({value:t})=>t===void 0?t:er(t,Hx)):1]}function d9(e,t){let r=e.find(({radius:a})=>a!==void 0);if(r!==void 0)return[0,r.radius];let n=En(e,.5,({value:a})=>a===void 0?NaN:En(a,.25,Ts)),o=t.map(a=>3*Math.sqrt(a/n)),i=30/er(o);return i<1?o.map(a=>a*i):o}function h9(e,t){let r=rs(e,({value:i})=>i===void 0?NaN:rs(i,Math.abs)),n=t.map(i=>12*i/r),o=60/er(n);return o<1?n.map(i=>i*o):n}function g9(e){for(let{value:t}of e)if(t!==void 0)for(let r of t){if(r>0)return du(e,Ts);if(r<0)return du(e,eu)}return[1,10]}function y9(e){let t=[];for(let{value:r}of e)if(r!==void 0)for(let n of r)t.push(n);return t}function zl(e){return(t,r)=>n=>e(t+n*(r-t))}var O1=0,k1;function pC(){let e=O1;return O1=0,k1=void 0,e}function Jr(e){e!==k1&&(k1=e,console.warn(e),++O1)}function qh(e,t,r,n,{type:o,nice:i,clamp:a,domain:s=du(n),unknown:c,pivot:u=0,scheme:f,range:p,symmetric:l=!0,interpolate:m=Xe.get(e)===xn?f==null&&p!==void 0?Fn:mu(f!==void 0?f:"rdbu"):mt,reverse:h}){u=+u,s=ri(s);let[b,y]=s;if(s.length>2&&Jr(`Warning: the diverging ${e} scale domain contains extra elements.`),Rn(b,y)<0&&([b,y]=[y,b],h=!h),b=Math.min(b,u),y=Math.max(y,u),typeof m!="function"&&(m=M1(m)),p!==void 0&&(m=m.length===1?zl(m)(...p):jo(m,p)),h&&(m=T1(m)),l){let x=r.apply(u),g=x-r.apply(b),S=r.apply(y)-x;gS&&(y=r.invert(x+g))}return t.domain([b,u,y]).unknown(c).interpolator(m),a&&t.clamp(a),i&&t.nice(i),{type:o,domain:[b,y],pivot:u,interpolate:m,scale:t}}function mC(e,t,r){return qh(e,ml(),b9,t,r)}function dC(e,t,r){return N1(e,t,{...r,exponent:.5})}function N1(e,t,{exponent:r=1,...n}){return qh(e,ld().exponent(r=+r),S9(r),t,{...n,type:"diverging-pow"})}function hC(e,t,{base:r=10,pivot:n=1,domain:o=du(t,n<0?eu:Ts),...i}){return qh(e,ud().base(r=+r),x9,t,{domain:o,pivot:n,...i})}function gC(e,t,{constant:r=1,...n}){return qh(e,fd().constant(r=+r),v9(r),t,n)}var b9={apply(e){return e},invert(e){return e}},x9={apply:Math.log,invert:Math.exp},w9={apply(e){return Math.sign(e)*Math.sqrt(Math.abs(e))},invert(e){return Math.sign(e)*(e*e)}};function S9(e){return e===.5?w9:{apply(t){return Math.sign(t)*Math.pow(Math.abs(t),e)},invert(t){return Math.sign(t)*Math.pow(Math.abs(t),1/e)}}}function v9(e){return{apply(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))},invert(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}}function yC(e,t,r,n){return hu(e,t,r,n)}function bC(e,t,r){return yC(e,ad(),t,r)}function xC(e,t,r){return yC(e,sd(),t,r)}var gu=Symbol("ordinal");function SC(e,t,r,{type:n,interval:o,domain:i,range:a,reverse:s,hint:c}){return o=ni(o,n),i===void 0&&(i=TC(r,o,e)),(n==="categorical"||n===gu)&&(n="ordinal"),s&&(i=la(i)),i=t.domain(i).domain(),a!==void 0&&(typeof a=="function"&&(a=a(i)),t.range(a)),{type:n,domain:i,range:a,scale:t,hint:c,interval:o}}function vC(e,t,{type:r,interval:n,domain:o,range:i,scheme:a,unknown:s,...c}){n=ni(n,r),o===void 0&&(o=TC(t,n,e));let u;if(Xe.get(e)===fu)u=I9(t),i=i===void 0?_9(u):We(i,lu);else if(Xe.get(e)===xn&&(i===void 0&&(r==="ordinal"||r===gu)&&(i=eC(o,a),i!==void 0&&(a=void 0)),a===void 0&&i===void 0&&(a=r==="ordinal"?"turbo":"observable10"),a!==void 0))if(i!==void 0){let f=mu(a),p=i[0],l=i[1]-i[0];i=({length:m})=>_r(h=>f(p+l*h),m)}else i=_1(a);if(s===Zf)throw new Error(`implicit unknown on ${e} scale is not supported`);return SC(e,hs().unknown(s),t,{...c,type:r,domain:o,range:i,hint:u})}function IC(e,t,{align:r=.5,padding:n=.5,...o}){return PC(q0().align(r).padding(n),t,o,e)}function _C(e,t,{align:r=.5,padding:n=.1,paddingInner:o=n,paddingOuter:i=e==="fx"||e==="fy"?0:n,...a}){return PC(wa().align(r).paddingInner(o).paddingOuter(i),t,a,e)}function PC(e,t,r,n){let{round:o}=r;return o!==void 0&&e.round(o=!!o),e=SC(n,e,t,r),e.round=o,e}function TC(e,t,r){let n=new so;for(let{value:o,domain:i}of e){if(i!==void 0)return i();if(o!==void 0)for(let a of o)n.add(a)}if(t!==void 0){let[o,i]=Yt(n).map(t.floor,t);return t.range(o,t.offset(i))}if(n.size>1e4&&Xe.get(r)===Kn)throw new Error(`implicit ordinal domain of ${r} scale has more than 10,000 values`);return _i(n,Cr)}function wC(e,t){let r;for(let{hint:n}of e){let o=n?.[t];if(o!==void 0){if(r===void 0)r=o;else if(r!==o)return}}return r}function I9(e){return{fill:wC(e,"fill"),stroke:wC(e,"stroke")}}function _9(e){return ir(e.fill)?Tx:Mh}function Bl(e,{label:t,inset:r=0,insetTop:n=r,insetRight:o=r,insetBottom:i=r,insetLeft:a=r,round:s,nice:c,clamp:u,zero:f,align:p,padding:l,projection:m,facet:{label:h=t}={},...b}={}){let y={};for(let[x,g]of e){let S=b[x],w=M9(x,g,{round:Xe.get(x)===Kn?s:void 0,nice:c,clamp:u,zero:f,align:p,padding:l,projection:m,...S});if(w){let{label:_=x==="fx"||x==="fy"?h:t,percent:v,transform:I,inset:T,insetTop:P=T!==void 0?T:x==="y"?n:0,insetRight:R=T!==void 0?T:x==="x"?o:0,insetBottom:C=T!==void 0?T:x==="y"?i:0,insetLeft:N=T!==void 0?T:x==="x"?a:0}=S||{};if(I==null)I=void 0;else if(typeof I!="function")throw new Error("invalid scale transform; not a function");w.percent=!!v,w.label=_===void 0?P9(g,w):_,w.transform=I,x==="x"||x==="fx"?(w.insetLeft=+N,w.insetRight=+R):(x==="y"||x==="fy")&&(w.insetTop=+P,w.insetBottom=+C),y[x]=w}}return y}function E1(e){let t={},r={scales:t};for(let[n,o]of Object.entries(e)){let{scale:i,type:a,interval:s,label:c}=o;t[n]=N9(o),r[n]=i,i.type=a,s!=null&&(i.interval=s),c!=null&&(i.label=c)}return r}function NC(e,t){let{x:r,y:n,fx:o,fy:i}=e,a=o||i?Yh(t):t;o&&MC(o,a),i&&CC(i,a);let s=o||i?A1(e,t):t;r&&MC(r,s),n&&CC(n,s)}function P9(e=[],t){let r;for(let{label:n}of e)if(n!==void 0){if(r===void 0)r=n;else if(r!==n)return}if(r!==void 0)return!ii(t)&&t.percent&&(r=`${r} (%)`),{inferred:!0,toString:()=>r}}function RC(e){return Math.sign(Ui(e.domain()))*Math.sign(Ui(e.range()))}function Yh(e){let{marginTop:t,marginRight:r,marginBottom:n,marginLeft:o,width:i,height:a,facet:{marginTop:s,marginRight:c,marginBottom:u,marginLeft:f}}=e;return{marginTop:Math.max(t,s),marginRight:Math.max(r,c),marginBottom:Math.max(n,u),marginLeft:Math.max(o,f),width:i,height:a}}function A1({fx:e,fy:t},r){let{marginTop:n,marginRight:o,marginBottom:i,marginLeft:a,width:s,height:c}=Yh(r);return{marginTop:n,marginRight:o,marginBottom:i,marginLeft:a,width:e?e.scale.bandwidth()+a+o:s,height:t?t.scale.bandwidth()+n+i:c,facet:{width:s,height:c}}}function MC(e,t){if(e.range===void 0){let{insetLeft:r,insetRight:n}=e,{width:o,marginLeft:i=0,marginRight:a=0}=t,s=i+r,c=o-a-n;e.range=[s,Math.max(s,c)],ii(e)||(e.range=AC(e)),e.scale.range(e.range)}EC(e)}function CC(e,t){if(e.range===void 0){let{insetTop:r,insetBottom:n}=e,{height:o,marginTop:i=0,marginBottom:a=0}=t,s=i+r,c=o-a-n;e.range=[Math.max(s,c),s],ii(e)?e.range.reverse():e.range=AC(e),e.scale.range(e.range)}EC(e)}function EC(e){e.round===void 0&&O9(e)&&T9(e)<=30&&e.scale.round(!0)}function T9({scale:e}){let t=e.domain().length,[r,n]=e.range(),o=e.paddingInner?e.paddingInner():1,i=e.paddingOuter?e.paddingOuter():e.padding(),a=t-o,s=Math.abs(n-r)/Math.max(1,a+i*2);return(s-Math.floor(s))*a}function AC(e){let t=e.scale.domain().length+F1(e);if(!(t>2))return e.range;let[r,n]=e.range;return Array.from({length:t},(o,i)=>r+i/(t-1)*(n-r))}function M9(e,t=[],r={}){let n=C9(e,t,r);if(r.type===void 0&&r.domain===void 0&&r.range===void 0&&r.interval==null&&e!=="fx"&&e!=="fy"&&ii({type:n})){let o=t.map(({value:i})=>i).filter(i=>i!==void 0);o.some(Et)?Jr(`Warning: some data associated with the ${e} scale are dates. Dates are typically associated with a "utc" or "time" scale rather than a "${yu(n)}" scale. If you are using a bar mark, you probably want a rect mark with the interval option instead; if you are using a group transform, you probably want a bin transform instead. If you want to treat this data as ordinal, you can specify the interval of the ${e} scale (e.g., d3.utcDay), or you can suppress this warning by setting the type of the ${e} scale to "${yu(n)}".`):o.some(wM)?Jr(`Warning: some data associated with the ${e} scale are strings that appear to be dates (e.g., YYYY-MM-DD). If these strings represent dates, you should parse them to Date objects. Dates are typically associated with a "utc" or "time" scale rather than a "${yu(n)}" scale. If you are using a bar mark, you probably want a rect mark with the interval option instead; if you are using a group transform, you probably want a bin transform instead. If you want to treat this data as ordinal, you can suppress this warning by setting the type of the ${e} scale to "${yu(n)}".`):o.some(SM)&&Jr(`Warning: some data associated with the ${e} scale are strings that appear to be numbers. If these strings represent numbers, you should parse or coerce them to numbers. Numbers are typically associated with a "linear" scale rather than a "${yu(n)}" scale. If you want to treat this data as ordinal, you can specify the interval of the ${e} scale (e.g., 1 for integers), or you can suppress this warning by setting the type of the ${e} scale to "${yu(n)}".`)}switch(r.type=n,n){case"diverging":case"diverging-sqrt":case"diverging-pow":case"diverging-log":case"diverging-symlog":case"cyclical":case"sequential":case"linear":case"sqrt":case"threshold":case"quantile":case"pow":case"log":case"symlog":r=Hh(t,r,ti);break;case"identity":switch(Xe.get(e)){case Kn:r=Hh(t,r,ti);break;case fu:r=Hh(t,r,k9);break}break;case"utc":case"time":r=Hh(t,r,i1);break}switch(n){case"diverging":return mC(e,t,r);case"diverging-sqrt":return dC(e,t,r);case"diverging-pow":return N1(e,t,r);case"diverging-log":return hC(e,t,r);case"diverging-symlog":return gC(e,t,r);case"categorical":case"ordinal":case gu:return vC(e,t,r);case"cyclical":case"sequential":case"linear":return oC(e,t,r);case"sqrt":return iC(e,t,r);case"threshold":return Kh(e,t,r);case"quantile":return cC(e,t,r);case"quantize":return uC(e,t,r);case"pow":return C1(e,t,r);case"log":return aC(e,t,r);case"symlog":return sC(e,t,r);case"utc":return xC(e,t,r);case"time":return bC(e,t,r);case"point":return IC(e,t,r);case"band":return _C(e,t,r);case"identity":return fC(e);case void 0:return;default:throw new Error(`unknown scale type: ${n}`)}}function yu(e){return typeof e=="symbol"?e.description:e}function OC(e){return typeof e=="string"?`${e}`.toLowerCase():e}var kC={toString:()=>"projection"};function C9(e,t,{type:r,domain:n,range:o,scheme:i,pivot:a,projection:s}){if(r=OC(r),e==="fx"||e==="fy")return"band";(e==="x"||e==="y")&&s!=null&&(r=kC);for(let f of t){let p=OC(f.type);if(p!==void 0){if(r===void 0)r=p;else if(r!==p)throw new Error(`scale incompatible with channel: ${r} !== ${p}`)}}if(r===kC)return;if(r!==void 0)return r;if(n===void 0&&!t.some(({value:f})=>f!==void 0))return;let c=Xe.get(e);if(c===Os)return"sqrt";if(c===Ns||c===ks)return"linear";if(c===fu)return"ordinal";let u=(n??o)?.length;if(u<2||u>2)return R1(c);if(n!==void 0){if(f1(n))return R1(c);if(Et(n))return"utc"}else{let f=t.map(({value:p})=>p).filter(p=>p!==void 0);if(f.some(f1))return R1(c);if(f.some(Et))return"utc"}if(c===xn){if(a!=null||tC(i))return"diverging";if(JM(i))return"categorical"}return"linear"}function R1(e){switch(e){case Kn:return"point";case xn:return gu;default:return"ordinal"}}function ii({type:e}){return e==="ordinal"||e==="point"||e==="band"||e===gu}function F1({type:e}){return e==="threshold"}function O9({type:e}){return e==="point"||e==="band"}function wo(e){if(e===void 0)return!0;let t=e.domain(),r=e(t[0]);for(let n=1,o=t.length;n{if(!Xe.has(t=`${t}`))throw new Error(`unknown scale: ${t}`);return e[t]}}function N9({scale:e,type:t,domain:r,range:n,interpolate:o,interval:i,transform:a,percent:s,pivot:c}){if(t==="identity")return{type:"identity",apply:f=>f,invert:f=>f};let u=e.unknown?e.unknown():void 0;return{type:t,domain:Ma(r),...n!==void 0&&{range:Ma(n)},...a!==void 0&&{transform:a},...s&&{percent:s},...u!==void 0&&{unknown:u},...i!==void 0&&{interval:i},...o!==void 0&&{interpolate:o},...e.clamp&&{clamp:e.clamp()},...c!==void 0&&{pivot:c,symmetric:!1},...e.base&&{base:e.base()},...e.exponent&&{exponent:e.exponent()},...e.constant&&{constant:e.constant()},...e.align&&{align:e.align(),round:e.round()},...e.padding&&(e.paddingInner?{paddingInner:e.paddingInner(),paddingOuter:e.paddingOuter()}:{padding:e.padding()}),...e.bandwidth&&{bandwidth:e.bandwidth(),step:e.step()},apply:f=>e(f),...e.invert&&{invert:f=>e.invert(f)}}}function DC(e,t){let{fx:r,fy:n}=Bl(e,t),o=r?.scale.domain(),i=n?.scale.domain();return o&&i?Vp(o,i).map(([a,s],c)=>({x:a,y:s,i:c})):o?o.map((a,s)=>({x:a,i:s})):i?i.map((a,s)=>({y:a,i:s})):void 0}function LC(e,{x:t,y:r}){return t&&=j1(t),r&&=j1(r),e.filter(t&&r?n=>t.has(n.x)&&r.has(n.y):t?n=>t.has(n.x):n=>r.has(n.y)).sort(t&&r?(n,o)=>t.get(n.x)-t.get(o.x)||r.get(n.y)-r.get(o.y):t?(n,o)=>t.get(n.x)-t.get(o.x):(n,o)=>r.get(n.y)-r.get(o.y))}function Xh(e,{fx:t,fy:r}){let n=jr(e),o=t?.value,i=r?.value;return t&&r?co(n,a=>(a.fx=o[a[0]],a.fy=i[a[0]],a),a=>o[a],a=>i[a]):t?co(n,a=>(a.fx=o[a[0]],a),a=>o[a]):co(n,a=>(a.fy=i[a[0]],a),a=>i[a])}function VC(e,t,{marginTop:r,marginLeft:n}){let o=e?({x:a})=>e(a)-n:()=>0,i=t?({y:a})=>t(a)-r:()=>0;return function(a){this.tagName==="svg"?(this.setAttribute("x",o(a)),this.setAttribute("y",i(a))):this.setAttribute("transform",`translate(${o(a)},${i(a)})`)}}function jC(e){let t=[],r=new Uint32Array(dn(e,n=>n.length));for(let n of e){let o=0;for(let i of e)n!==i&&(r.set(i,o),o+=i.length);t.push(r.slice(0,o))}return t}var R9=new Map([["top",$1],["right",V1],["bottom",D1],["left",L1],["top-left",Wh($1,L1)],["top-right",Wh($1,V1)],["bottom-left",Wh(D1,L1)],["bottom-right",Wh(D1,V1)],["top-empty",A9],["right-empty",D9],["bottom-empty",F9],["left-empty",$9],["empty",L9]]);function UC(e){if(e==null)return null;let t=R9.get(`${e}`.toLowerCase());if(t)return t;throw new Error(`invalid facet anchor: ${e}`)}var $C=new WeakMap;function j1(e){let t=$C.get(e);return t||$C.set(e,t=new Ar(We(e,(r,n)=>[r,n]))),t}function Ra(e,t){return j1(e).get(t)}function E9(e,t,r){return t=Bn(t),r=Bn(r),e.find(n=>Object.is(Bn(n.x),t)&&Object.is(Bn(n.y),r))}function Zh(e,t,r){return E9(e,t,r)?.empty}function $1(e,{y:t},{y:r}){return t?Ra(t,r)===0:!0}function D1(e,{y:t},{y:r}){return t?Ra(t,r)===t.length-1:!0}function L1(e,{x:t},{x:r}){return t?Ra(t,r)===0:!0}function V1(e,{x:t},{x:r}){return t?Ra(t,r)===t.length-1:!0}function A9(e,{y:t},{x:r,y:n,empty:o}){if(o)return!1;if(!t)return;let i=Ra(t,n);if(i>0)return Zh(e,r,t[i-1])}function F9(e,{y:t},{x:r,y:n,empty:o}){if(o)return!1;if(!t)return;let i=Ra(t,n);if(i0)return Zh(e,t[i-1],n)}function D9(e,{x:t},{x:r,y:n,empty:o}){if(o)return!1;if(!t)return;let i=Ra(t,r);if(in.get(o)?.get(i)??[]):t?e.map(({x:o})=>n.get(o)??[]):e.map(({y:o})=>n.get(o)??[])}var zC=Math.PI,Hi=2*zC,U1=.618;function BC({projection:e,inset:t=0,insetTop:r=t,insetRight:n=t,insetBottom:o=t,insetLeft:i=t}={},a){if(e==null)return;if(typeof e.stream=="function")return e;let s,c,u="frame";if(yo(e)){let _;if({type:e,domain:c,inset:_,insetTop:r=_!==void 0?_:r,insetRight:n=_!==void 0?_:n,insetBottom:o=_!==void 0?_:o,insetLeft:i=_!==void 0?_:i,clip:u=u,...s}=e,e==null)return}typeof e!="function"&&({type:e}=z1(e));let{width:f,height:p,marginLeft:l,marginRight:m,marginTop:h,marginBottom:b}=a,y=f-l-m-i-n,x=p-h-b-r-o;if(e=e?.({width:y,height:x,clip:u,...s}),e==null)return;u=V9(u,l,h,f-m,p-b);let g=l+i,S=h+r,w;if(c!=null){let[[_,v],[I,T]]=Lc(e).bounds(c),P=Math.min(y/(I-_),x/(T-v));P>0?(g-=(P*(_+I)-y)/2,S-=(P*(v+T)-x)/2,w=Vc({point(R,C){this.stream.point(R*P+g,C*P+S)}})):Jr("Warning: the projection could not be fit to the specified domain; using the default scale.")}return w??=g===0&&S===0?GC():Vc({point(_,v){this.stream.point(_+g,v+S)}}),{stream:_=>e.stream(w.stream(u(_)))}}function z1(e){switch(`${e}`.toLowerCase()){case"albers-usa":return So(T0,.7463,.4673);case"albers":return Jh(Kf,.7463,.4673);case"azimuthal-equal-area":return So(C0,4,4);case"azimuthal-equidistant":return So(k0,Hi,Hi);case"conic-conformal":return Jh(E0,Hi,Hi);case"conic-equal-area":return Jh(xa,6.1702,2.9781);case"conic-equidistant":return Jh(F0,7.312,3.6282);case"equal-earth":return So(D0,5.4133,2.6347);case"equirectangular":return So(A0,Hi,zC);case"gnomonic":return So(V0,3.4641,3.4641);case"identity":return{type:GC};case"reflect-y":return{type:j9};case"mercator":return So(N0,Hi,Hi);case"orthographic":return So(U0,2,2);case"stereographic":return So(B0,2,2);case"transverse-mercator":return So(K0,Hi,Hi);default:throw new Error(`unknown projection type: ${e}`)}}function V9(e,t,r,n,o){if(e===!1||e==null||typeof e=="number")return i=>i;switch(e===!0&&(e="frame"),`${e}`.toLowerCase()){case"frame":return Ec(t,r,n,o);default:throw new Error(`unknown projection clip type: ${e}`)}}function So(e,t,r){return{type:({width:n,height:o,rotate:i,precision:a=.15,clip:s})=>{let c=e();return a!=null&&c.precision?.(a),i!=null&&c.rotate?.(i),typeof s=="number"&&c.clipAngle?.(s),n!=null&&(c.scale(Math.min(n/t,o/r)),c.translate([n/2,o/2])),c},aspectRatio:r/t}}function Jh(e,t,r){let{type:n,aspectRatio:o}=So(e,t,r);return{type:i=>{let{parallels:a,domain:s,width:c,height:u}=i,f=n(i);return a!=null&&(f.parallels(a),s===void 0&&c!=null&&f.fitSize([c,u],{type:"Sphere"})),f},aspectRatio:o}}var GC=bn({stream:e=>e}),j9=bn(Vc({point(e,t){this.stream.point(e,-t)}}));function KC(e,t,r,n){let o=r[e],i=r[t],a=o.length,s=r[e]=new Float64Array(a).fill(NaN),c=r[t]=new Float64Array(a).fill(NaN),u,f=n.stream({point(p,l){s[u]=p,c[u]=l}});for(u=0;u5?5:c:U1}}if(e!=null){if(typeof e!="function"){let{aspectRatio:t}=z1(e);if(t)return t}return U1}}function YC(e){let t=[],r=[],n={scale:"x",value:t},o={scale:"y",value:r},i={point(a,s){t.push(a),r.push(s)},lineStart(){},lineEnd(){},polygonStart(){},polygonEnd(){},sphere(){}};for(let a of e.value)mo(a,i);return[n,o]}function WC({x:e,y:t}){if(e||t)return e??=r=>r,t??=r=>r,Vc({point(r,n){this.stream.point(e(r),t(n))}})}function bu(e={}){let{document:t=typeof window<"u"?window.document:void 0,clip:r}=e;return{document:t,clip:Bh(r)}}function De(e,{document:t}){return $r(Ti(e).call(t.documentElement))}var eg=Symbol("unset");function tg(e){return(e.length===1?U9:z9)(e)}function U9(e){let t,r=eg;return n=>(Object.is(r,n)||(r=n,t=e(n)),t)}function z9(e){let t,r;return(...n)=>((r?.length!==n.length||r.some((o,i)=>!Object.is(o,n[i])))&&(r=n,t=e(...n)),t)}var B9=tg(e=>new Intl.NumberFormat(e)),OSe=tg((e,t)=>new Intl.DateTimeFormat(e,{timeZone:"UTC",...t&&{month:t}})),kSe=tg((e,t)=>new Intl.DateTimeFormat(e,{timeZone:"UTC",...t&&{weekday:t}}));function G9(e="en-US"){let t=B9(e);return r=>r!=null&&!isNaN(r)?t.format(r):void 0}function K9(e){return Eh(e,"Invalid Date")}function q9(e="en-US"){let t=G9(e);return r=>(r instanceof Date?K9:typeof r=="number"?t:At)(r)}var ai=q9();var gr=(typeof window<"u"?window.devicePixelRatio>1:typeof it>"u")?0:.5,H9=0;function ZC(){return`plot-clip-${++H9}`}function QC(e,{title:t,href:r,ariaLabel:n,ariaDescription:o,ariaHidden:i,target:a,fill:s,fillOpacity:c,stroke:u,strokeWidth:f,strokeOpacity:p,strokeLinejoin:l,strokeLinecap:m,strokeMiterlimit:h,strokeDasharray:b,strokeDashoffset:y,opacity:x,mixBlendMode:g,imageFilter:S,paintOrder:w,pointerEvents:_,shapeRendering:v,channels:I},{ariaLabel:T,fill:P="currentColor",fillOpacity:R,stroke:C="none",strokeOpacity:N,strokeWidth:G,strokeLinecap:D,strokeLinejoin:O,strokeMiterlimit:z,paintOrder:U}){P===null&&(s=null,c=null),C===null&&(u=null,p=null),ir(P)?!ir(C)&&(!ir(s)||I?.fill)&&(C="none"):ir(C)&&(!ir(u)||I?.stroke)&&(P="none");let[W,B]=Zr(s,P),[q,X]=Ct(c,R),[J,A]=Zr(u,C),[K,Y]=Ct(p,N),[ee,Z]=Ct(x);Cs(A)||(f===void 0&&(f=G),m===void 0&&(m=D),l===void 0&&(l=O),h===void 0&&!_M(l)&&(h=z),!Cs(B)&&w===void 0&&(w=U));let[ne,M]=Ct(f);return P!==null&&(e.fill=Ot(B,"currentColor"),e.fillOpacity=Gl(X,1)),C!==null&&(e.stroke=Ot(A,"none"),e.strokeWidth=Gl(M,1),e.strokeOpacity=Gl(Y,1),e.strokeLinejoin=Ot(l,"miter"),e.strokeLinecap=Ot(m,"butt"),e.strokeMiterlimit=Gl(h,4),e.strokeDasharray=Ot(b,"none"),e.strokeDashoffset=Ot(y,"0")),e.target=At(a),e.ariaLabel=At(T),e.ariaDescription=At(o),e.ariaHidden=At(i),e.opacity=Gl(Z,1),e.mixBlendMode=Ot(g,"normal"),e.imageFilter=Ot(S,"none"),e.paintOrder=Ot(w,"normal"),e.pointerEvents=Ot(_,"auto"),e.shapeRendering=Ot(v,"auto"),{title:{value:t,optional:!0,filter:null},href:{value:r,optional:!0,filter:null},ariaLabel:{value:n,optional:!0,filter:null},fill:{value:W,scale:"auto",optional:!0},fillOpacity:{value:q,scale:"auto",optional:!0},stroke:{value:J,scale:"auto",optional:!0},strokeOpacity:{value:K,scale:"auto",optional:!0},strokeWidth:{value:ne,optional:!0},opacity:{value:ee,scale:"auto",optional:!0}}}function Y9(e,t){t&&e.filter(r=>Nl(t[r])).append("title").call(X9,t)}function W9(e,t){t&&e.filter(([r])=>Nl(t[r])).append("title").call(Z9,t)}function X9(e,t){t&&e.text(r=>ai(t[r]))}function Z9(e,t){t&&e.text(([r])=>ai(t[r]))}function yr(e,{target:t,tip:r},{ariaLabel:n,title:o,fill:i,fillOpacity:a,stroke:s,strokeOpacity:c,strokeWidth:u,opacity:f,href:p}){n&&de(e,"aria-label",l=>n[l]),i&&de(e,"fill",l=>i[l]),a&&de(e,"fill-opacity",l=>a[l]),s&&de(e,"stroke",l=>s[l]),c&&de(e,"stroke-opacity",l=>c[l]),u&&de(e,"stroke-width",l=>u[l]),f&&de(e,"opacity",l=>f[l]),p&&JC(e,l=>p[l],t),r||Y9(e,o)}function rg(e,{target:t,tip:r},{ariaLabel:n,title:o,fill:i,fillOpacity:a,stroke:s,strokeOpacity:c,strokeWidth:u,opacity:f,href:p}){n&&de(e,"aria-label",([l])=>n[l]),i&&de(e,"fill",([l])=>i[l]),a&&de(e,"fill-opacity",([l])=>a[l]),s&&de(e,"stroke",([l])=>s[l]),c&&de(e,"stroke-opacity",([l])=>c[l]),u&&de(e,"stroke-width",([l])=>u[l]),f&&de(e,"opacity",([l])=>f[l]),p&&JC(e,([l])=>p[l],t),r||W9(e,o)}function Q9({ariaLabel:e,title:t,fill:r,fillOpacity:n,stroke:o,strokeOpacity:i,strokeWidth:a,opacity:s,href:c},{tip:u}){return[e,u?void 0:t,r,n,o,i,a,s,c].filter(f=>f!==void 0)}function J9(e,t,r){let n=Fo(e,o=>t[o]);return r===void 0&&n.size>1+e.length>>1&&Jr("Warning: the implicit z channel has high cardinality. This may occur when the fill or stroke channel is associated with quantitative data rather than ordinal or categorical data. You can suppress this warning by setting the z option explicitly; if this data represents a single series, set z to null."),n.values()}function*ng(e,t,r,n){let{z:o}=r,{z:i}=n,a=Q9(n,r),s=[...t,...a];for(let c of i?J9(e,i,o):[e]){let u,f;e:for(let p of c){for(let l of s)if(!zn(l[p])){f&&f.push(-1);continue e}if(u===void 0){f&&(yield f),u=a.map(l=>Bn(l[p])),f=[p];continue}f.push(p);for(let l=0;lBn(h[p])),f=[p];continue e}}f&&(yield f)}}function e$(e,t,r,n){let o,{clip:i=n.clip}=t;i==="frame"?(e=De("svg:g",n).each(function(){this.appendChild(e.node()),e.node=()=>this}),o=r$(n,r)):i&&(o=o$(i,n)),de(e,"aria-label",t.ariaLabel),de(e,"aria-description",t.ariaDescription),de(e,"aria-hidden",t.ariaHidden),de(e,"clip-path",o)}function t$(e){let t=new WeakMap;return(r,n)=>{let o=t.get(r);if(!o){let i=ZC();$r(r.ownerSVGElement).append("clipPath").attr("id",i).call(e,r,n),t.set(r,o=`url(#${i})`)}return o}}var r$=t$((e,t,r)=>{let{width:n,height:o,marginLeft:i,marginRight:a,marginTop:s,marginBottom:c}=r;e.append("rect").attr("x",i).attr("y",s).attr("width",n-a-i).attr("height",o-s-c)}),XC=new WeakMap,n$={type:"Sphere"};function o$(e,t){let r,n;if((r=XC.get(t))||XC.set(t,r=new WeakMap),e.type==="Sphere"&&(e=n$),!(n=r.get(e))){let o=ZC();$r(t.ownerSVGElement).append("clipPath").attr("id",o).append("path").attr("d",t.path()(e)),r.set(e,n=`url(#${o})`)}return n}function $t(e,t,r,n){e$(e,t,r,n),de(e,"class",t.className),de(e,"fill",t.fill),de(e,"fill-opacity",t.fillOpacity),de(e,"stroke",t.stroke),de(e,"stroke-width",t.strokeWidth),de(e,"stroke-opacity",t.strokeOpacity),de(e,"stroke-linejoin",t.strokeLinejoin),de(e,"stroke-linecap",t.strokeLinecap),de(e,"stroke-miterlimit",t.strokeMiterlimit),de(e,"stroke-dasharray",t.strokeDasharray),de(e,"stroke-dashoffset",t.strokeDashoffset),de(e,"shape-rendering",t.shapeRendering),de(e,"filter",t.imageFilter),de(e,"paint-order",t.paintOrder);let{pointerEvents:o=n.pointerSticky===!1?"none":void 0}=t;de(e,"pointer-events",o)}function It(e,t){i$(e,"mix-blend-mode",t.mixBlendMode),de(e,"opacity",t.opacity)}function JC(e,t,r){e.each(function(n){let o=t(n);if(o!=null){let i=this.ownerDocument.createElementNS($o.svg,"a");i.setAttribute("fill","inherit"),i.setAttributeNS($o.xlink,"href",o),r!=null&&i.setAttribute("target",r),this.parentNode.insertBefore(i,this).appendChild(this)}})}function de(e,t,r){r!=null&&e.attr(t,r)}function i$(e,t,r){r!=null&&e.style(t,r)}function Dt(e,t,{x:r,y:n},o=gr,i=gr){o+=t.dx,i+=t.dy,r?.bandwidth&&(o+=r.bandwidth()/2),n?.bandwidth&&(i+=n.bandwidth()/2),(o||i)&&e.attr("transform",`translate(${o},${i})`)}function Ot(e,t){if((e=At(e))!==t)return e}function Gl(e,t){if((e=Ft(e))!==t)return e}var a$=/^-?([_a-z]|[\240-\377]|\\[0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-f])([_a-z0-9-]|[\240-\377]|\\[0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-f])*$/i;function xu(e){if(e===void 0)return"plot-d6a7b5";if(e=`${e}`,!a$.test(e))throw new Error(`invalid class name: ${e}`);return e}function wu(e,t){if(typeof t=="string")e.property("style",t);else if(t!=null)for(let r of e)Object.assign(r.style,t)}function si({frameAnchor:e},{width:t,height:r,marginTop:n,marginRight:o,marginBottom:i,marginLeft:a}){return[/left$/.test(e)?a:/right$/.test(e)?t-o:(a+t-o)/2,/^top/.test(e)?n:/^bottom/.test(e)?r-i:(n+r-i)/2]}var Ze=class{constructor(t,r={},n={},o){let{facet:i="auto",facetAnchor:a,fx:s,fy:c,sort:u,dx:f=0,dy:p=0,margin:l=0,marginTop:m=l,marginRight:h=l,marginBottom:b=l,marginLeft:y=l,className:x,clip:g=o?.clip,channels:S,tip:w,render:_}=n;if(this.data=t,this.sort=Ca(u)?u:null,this.initializer=Bi(n).initializer,this.transform=this.initializer?n.transform:Rs(n).transform,i===null||i===!1?this.facet=null:(this.facet=Vr(i===!0?"include":i,"facet",["auto","include","exclude","super"]),this.fx=t===ou&&typeof s=="string"?[s]:s,this.fy=t===ou&&typeof c=="string"?[c]:c),this.facetAnchor=UC(a),r=l1(r),S!==void 0&&(r={...s$(S),...r}),o!==void 0&&(r={...QC(this,n,o),...r}),this.channels=Object.fromEntries(Object.entries(r).map(([v,I])=>{if(au(I.value)){let{value:T,label:P=I.label,scale:R=I.scale}=I.value;I={...I,label:P,scale:R,value:T}}if(t===ou&&typeof I.value=="string"){let{value:T}=I;I={...I,value:[T]}}return[v,I]}).filter(([v,{value:I,optional:T}])=>{if(I!=null)return!0;if(T)return!1;throw new Error(`missing channel value: ${v}`)})),this.dx=+f,this.dy=+p,this.marginTop=+m,this.marginRight=+h,this.marginBottom=+b,this.marginLeft=+y,this.clip=Bh(g),this.tip=c$(w),this.className=At(x),this.facet==="super"){if(s||c)throw new Error("super-faceting cannot use fx or fy");for(let v in this.channels){let{scale:I}=r[v];if(!(I!=="x"&&I!=="y"))throw new Error("super-faceting cannot use x or y")}}_!=null&&(this.render=G1(_,this.render))}initialize(t,r,n){let o=zi(this.data);t===void 0&&o!=null&&(t=[jr(o)]);let i=t;this.transform!=null&&({facets:t,data:o}=this.transform(o,t,n),o=zi(o)),t!==void 0&&(t.original=i);let a=BM(this.channels,o);return this.sort!=null&&KM(o,t,a,r,this.sort),{data:o,facets:t,channels:a}}filter(t,r,n){for(let o in r){let{filter:i=zn}=r[o];if(i!==null){let a=n[o];t=t.filter(s=>i(a[s]))}}return t}project(t,r,n){for(let o in t)if(t[o].scale==="x"&&/^x|x$/.test(o)){let i=o.replace(/^x|x$/,"y");i in t&&t[i].scale==="y"&&KC(o,i,r,n.projection)}}scale(t,r,n){let o=GM(t,r);return n.projection&&this.project(t,o,n),o}};function B1(...e){return e.plot=Ze.prototype.plot,e}function G1(e,t){if(e==null)return t===null?void 0:t;if(t==null)return e===null?void 0:e;if(typeof e!="function")throw new TypeError(`invalid render transform: ${e}`);if(typeof t!="function")throw new TypeError(`invalid render transform: ${t}`);return function(r,n,o,i,a,s){return e.call(this,r,n,o,i,a,(c,u,f,p,l)=>t.call(this,c,u,f,p,l,s))}}function s$(e){return Object.fromEntries(Object.entries(l1(e)).map(([t,r])=>(r=typeof r=="string"?{value:r,label:t}:oi(r),r.filter===void 0&&r.scale==null&&(r={...r,filter:null}),[t,r])))}function c$(e){return e===!0?"xy":e===!1||e==null?null:typeof e=="string"?Vr(e,"tip",["x","y","xy"]):e}function Es(e,t){return e?.tip===!0?{...e,tip:t}:yo(e?.tip)&&e.tip.pointer===void 0?{...e,tip:{...e.tip,pointer:t}}:e}function tO(e,t,r={}){let n=.5-gr,o=.5+gr,i=.5+gr,a=.5-gr;for(let{marginTop:b,marginRight:y,marginBottom:x,marginLeft:g}of t)b>n&&(n=b),y>o&&(o=y),x>i&&(i=x),g>a&&(a=g);let{margin:s,marginTop:c=s!==void 0?s:n,marginRight:u=s!==void 0?s:o,marginBottom:f=s!==void 0?s:i,marginLeft:p=s!==void 0?s:a}=r;c=+c,u=+u,f=+f,p=+p;let{width:l=640,height:m=u$(e,r,{width:l,marginTopDefault:n,marginRightDefault:o,marginBottomDefault:i,marginLeftDefault:a})+Math.max(0,c-n+f-i)}=r;l=+l,m=+m;let h={width:l,height:m,marginTop:c,marginRight:u,marginBottom:f,marginLeft:p};if(e.fx||e.fy){let{margin:b,marginTop:y=b!==void 0?b:c,marginRight:x=b!==void 0?b:u,marginBottom:g=b!==void 0?b:f,marginLeft:S=b!==void 0?b:p}=r.facet??{};y=+y,x=+x,g=+g,S=+S,h.facet={marginTop:y,marginRight:x,marginBottom:g,marginLeft:S}}return h}function u$({x:e,y:t,fy:r,fx:n},{projection:o,aspectRatio:i},{width:a,marginTopDefault:s,marginRightDefault:c,marginBottomDefault:u,marginLeftDefault:f}){let p=r&&r.scale.domain().length||1,l=HC(o);if(l){let h=n?n.scale.domain().length:1,b=(1.1*p-.1)/(1.1*h-.1)*l,y=Math.max(.1,Math.min(10,b));return Math.round((a-f-c)*y+s+u)}let m=t?ii(t)?t.scale.domain().length||1:Math.max(7,17/p):1;if(i!=null){if(i=+i,!(isFinite(i)&&i>0))throw new Error(`invalid aspectRatio: ${i}`);let h=eO("y",t)/(eO("x",e)*i),b=n?n.scale.bandwidth():1,y=r?r.scale.bandwidth():1,x=b*(a-f-c)-e.insetLeft-e.insetRight;return(h*x+t.insetTop+t.insetBottom)/y+s+u}return!!(t||r)*Math.max(1,Math.min(60,m*p))*20+!!n*30+60}function eO(e,t){if(!t)throw new Error(`aspectRatio requires ${e} scale`);let{type:r,domain:n}=t,o;switch(r){case"linear":case"utc":case"time":o=Number;break;case"pow":{let s=t.scale.exponent();o=c=>Math.pow(c,s);break}case"log":o=Math.log;break;case"point":case"band":return n.length;default:throw new Error(`unsupported ${e} scale for aspectRatio: ${r}`)}let[i,a]=Yt(n);return Math.abs(o(a)-o(i))}var rO=new WeakMap;function K1(e,t,{x:r,y:n,px:o,py:i,maxRadius:a=40,channels:s,render:c,...u}={}){return a=+a,o!=null&&(r??=null,s={...s,px:{value:o,scale:"x"}}),i!=null&&(n??=null,s={...s,py:{value:i,scale:"y"}}),{x:r,y:n,channels:s,...u,render:G1(function(f,p,l,m,h,b){h={...h,pointerSticky:!1};let y=h.ownerSVGElement,{data:x}=h.getMarkState(this),g=rO.get(y);g||rO.set(y,g={sticky:!1,roots:[],renders:[]});let S=g.renders.push(A)-1,{x:w,y:_,fx:v,fy:I}=p,T=v?v(f.fx)-m.marginLeft:0,P=I?I(f.fy)-m.marginTop:0;w?.bandwidth&&(T+=w.bandwidth()/2),_?.bandwidth&&(P+=_.bandwidth()/2);let R=f.fi!=null,C;if(R){let Z=g.facetStates;Z||(g.facetStates=Z=new Map),C=Z.get(this),C||Z.set(this,C=new Map)}let[N,G]=si(this,m),{px:D,py:O}=l,z=D?Z=>D[Z]:H1(l,N),U=O?Z=>O[Z]:Y1(l,G),W,B,q,X;function J(Z,ne){if(R)if(X&&(X=cancelAnimationFrame(X)),Z==null)C.delete(f.fi);else{C.set(f.fi,ne),X=requestAnimationFrame(()=>{X=null;for(let[M,$]of C)if($1)){let $=W==null?null:go(x)?x[W]:x.get(W);h.dispatchValue($)}return M}function K(Z){if(g.sticky||Z.pointerType==="mouse"&&Z.buttons===1)return;let[ne,M]=ma(Z);ne-=T,M-=P;let $=nem.width-m.marginRight?1:e,H=Mm.height-m.marginBottom?1:t,E=null,re=a*a;for(let oe of f){let be=$*(z(oe)-ne),we=H*(U(oe)-M),Ve=be*be+we*we;Ve<=re&&(E=oe,re=Ve)}if(E!=null&&(e!==1||t!==1)){let oe=z(E)-ne,be=U(E)-M;re=oe*oe+be*be}J(E,re)}function Y(Z){Z.pointerType==="mouse"&&W!=null&&(g.sticky&&g.roots.some(ne=>ne?.contains(Z.target))||(g.sticky?(g.sticky=!1,g.renders.forEach(ne=>ne(null))):(g.sticky=!0,A(W)),Z.stopImmediatePropagation()))}function ee(Z){Z.pointerType==="mouse"&&(g.sticky||J(null))}return y.addEventListener("pointerenter",K),y.addEventListener("pointermove",K),y.addEventListener("pointerdown",Y),y.addEventListener("pointerleave",ee),A(null)},c)}}function nO(e){return K1(1,1,e)}function oO(e){return K1(1,.01,e)}function q1(e){return K1(.01,1,e)}function H1({x1:e,x2:t,x:r=e},n){return e&&t?o=>(e[o]+t[o])/2:r?o=>r[o]:()=>n}function Y1({y1:e,y2:t,y:r=e},n){return e&&t?o=>(e[o]+t[o])/2:r?o=>r[o]:()=>n}function og(e){return ii(e)&&e.interval===void 0?void 0:"tabular-nums"}function iO(e,t){let{label:r=e.label,tickSize:n=6,width:o=240,height:i=44+n,marginTop:a=18,marginRight:s=0,marginBottom:c=16+n,marginLeft:u=0,style:f,ticks:p=(o-u-s)/64,tickFormat:l,fontVariant:m=og(e),round:h=!0,opacity:b,className:y}=t,x=bu(t);y=xu(y),b=Ct(b)[1],l===null&&(l=()=>null);let g=De("svg",x).attr("class",`${y}-ramp`).attr("font-family","system-ui, sans-serif").attr("font-size",10).attr("width",o).attr("height",i).attr("viewBox",`0 0 ${o} ${i}`).call(N=>N.append("style").text(`:where(.${y}-ramp) { +${r}`}function jF(e){return e==="time"?Dh:e==="utc"?Al:VF}function fT(e,t,r){let n=nr(Qp(t,(o,i)=>Math.abs(i-o)));if(n<1e3)return aT("millisecond","utc",r);for(let[o,i,a,s]of jF(e)){if(n>s||o==="hour"&&!n)break;if(t.every(c=>i.floor(c)>=c))return aT(o,a,r)}}function tu(e,t,r){return(n,o,i)=>{let a=e(n,o),s=t(n,o),c=o-Ui(i);return o!==c&&i[c]!==void 0&&s===t(i[c],c)?a:r(a,s)}}var n1=Object.getPrototypeOf(Uint8Array),UF=Object.prototype.toString;function go(e){return e instanceof Array||e instanceof n1}function mT(e){return e instanceof n1&&!BF(e)}function dT(e){return e?.prototype instanceof n1&&!GF(e)}function BF(e){return e instanceof BigInt64Array||e instanceof BigUint64Array}function GF(e){return e===BigInt64Array||e===BigUint64Array}var o1=Symbol("reindex");function dt(e,t,r){let n=typeof t;return n==="string"?RT(e)?i1(e.getChild(t),r):lT(e,a1(t),r):n==="function"?lT(e,t,r):n==="number"||t instanceof Date||n==="boolean"?Xe(e,xn(t),r):typeof t?.transform=="function"?r1(t.transform(e),r):KF(r1(t,r),e?.[o1])}function KF(e,t){return e!=null&&t?jh(e,t):e}function lT(e,t,r){return Xe(e,dT(r)?(n,o)=>s1(t(n,o)):t,r)}function r1(e,t){return t===void 0?ni(e):ET(e)?i1(e,t):e instanceof t?e:t.from(e,dT(t)&&!mT(e)?s1:void 0)}function i1(e,t){return e==null?e:(t===void 0||t===Array)&&WF(e.type)?c1(pT(e)):r1(pT(e),t)}function pT(e){return e.nullCount?e.toJSON():e.toArray()}var ou=[null],a1=e=>t=>{let r=t[e];return r===void 0&&t.type==="Feature"?t.properties?.[e]:r},bo={transform:Br},Ze={transform:e=>e};var hT=()=>1,gT=()=>!0,Ft=e=>e==null?e:`${e}`,$t=e=>e==null?e:+e;var Vh=e=>e?e[0]:void 0,$l=e=>e?e[1]:void 0;var xn=e=>()=>e;function bT(e){let t=+`${e}`.slice(1)/100;return(r,n)=>En(r,t,n)}function ri(e){return mT(e)?e:Xe(e,s1,Float64Array)}function s1(e){return e==null?NaN:Number(e)}function c1(e){return Xe(e,u1)}function u1(e){return e instanceof Date&&!isNaN(e)?e:typeof e=="string"?El(e):e==null||isNaN(e=Number(e))?void 0:new Date(e)}function Jr(e,t){return e===void 0&&(e=t),e===null?[void 0,"none"]:uu(e)?[void 0,e]:[e,void 0]}function Ct(e,t){return e===void 0&&(e=t),e===null||typeof e=="number"?[void 0,e]:[e,void 0]}function f1(e,t,r){if(e!=null)return Ur(e,t,r)}function Ur(e,t,r){let n=`${e}`.toLowerCase();if(!r.includes(n))throw new Error(`invalid ${t}: ${e}`);return n}function Bi(e){return RT(e)?e:ni(e)}function ni(e){if(e==null||go(e))return e;if(ET(e))return i1(e);if(yT(e))switch(e.type){case"FeatureCollection":return e.features;case"GeometryCollection":return e.geometries;default:return[e]}return Array.from(e)}function yT(e){switch(e?.type){case"FeatureCollection":case"GeometryCollection":case"Feature":case"LineString":case"MultiLineString":case"MultiPoint":case"MultiPolygon":case"Point":case"Polygon":case"Sphere":return!0;default:return!1}}function Xe(e,t,r=Array){return e==null?e:e instanceof r?e.map(t):r.from(e,t)}function Ta(e,t=Array){return e instanceof t?e.slice():t.from(e)}function xT({x:e,x1:t,x2:r}){return e!==void 0||t!==void 0||r!==void 0}function l1({y:e,y1:t,y2:r}){return e!==void 0||t!==void 0||r!==void 0}function zh(e){return xT(e)||l1(e)||e.interval!==void 0}function yo(e){return e?.toString===UF}function iu(e){return yo(e)&&(e.type!==void 0||e.domain!==void 0)}function au(e){return yo(e)&&typeof e.transform!="function"}function Oa(e){return au(e)&&e.value===void 0&&e.channel===void 0}function wT(e,t,r,n=Ze){return t===void 0&&r===void 0?(t=0,r=e===void 0?n:e):t===void 0?t=e===void 0?0:e:r===void 0&&(r=e===void 0?0:e),[t,r]}function xo(e,t){return e===void 0&&t===void 0?[Vh,$l]:[e,t]}function su({z:e,fill:t,stroke:r}={}){return e===void 0&&([e]=Jr(t)),e===void 0&&([e]=Jr(r)),e}function Ca(e){return go(e)?e.length:e?.numRows}function Br(e){let t=Ca(e),r=new Uint32Array(t);for(let n=0;ne[r],e.constructor):Xe(t,r=>e.at(r))}function ST(e,t,r){return e.subarray?e.subarray(t,r):e.slice(t,r)}function Bn(e){return e!==null&&typeof e=="object"?e.valueOf():e}function vT(e,t){if(t[e]!==void 0)return t[e];switch(e){case"x1":case"x2":e="x";break;case"y1":case"y2":e="y";break}return t[e]}function cu(e){let t;return[{transform:()=>t,label:wo(e)},r=>t=r]}function Gn(e){return e==null?[e]:cu(e)}function wo(e,t){return typeof e=="string"?e:e&&e.label!==void 0?e.label:t}function Dl(e,t){return{transform(r){let n=e.transform(r),o=t.transform(r);return At(n)||At(o)?Xe(n,(i,a)=>new Date((+n[a]+ +o[a])/2)):Xe(n,(i,a)=>(+n[a]+ +o[a])/2,Float64Array)},label:e.label}}function Ll(e,t){let r=p1(t?.interval,t?.type);return r?Xe(e,r):e}function p1(e,t){let r=Uh(e,t);return r&&(n=>Un(n)?r.floor(n):n)}function Uh(e,t){if(e!=null){if(typeof e=="number")return qF(e);if(typeof e=="string")return(t==="time"?e1:Fl)(e);if(typeof e.floor!="function")throw new Error("invalid interval; missing floor method");if(typeof e.offset!="function")throw new Error("invalid interval; missing offset method");return e}}function qF(e){e=+e,0Math.floor(r*t)/t,offset:(r,n=1)=>(r*t+Math.floor(n))/t,range:(r,n)=>os(Math.ceil(r*t),n*t).map(o=>o/t)}:{floor:r=>Math.floor(r/t)*t,offset:(r,n=1)=>r+t*Math.floor(n),range:(r,n)=>os(Math.ceil(r/t),n/t).map(o=>o*t)}}function oi(e,t){if(e=Uh(e,t),e&&typeof e.range!="function")throw new Error("invalid interval: missing range method");return e}function IT(e,t){if(e=oi(e,t),e&&typeof e.ceil!="function")throw new Error("invalid interval: missing ceil method");return e}function _T(e){return ka(e)&&typeof e?.floor=="function"&&e.floor()instanceof Date}function ka(e){return typeof e?.range=="function"}function ii(e){return e===void 0||au(e)?e:{value:e}}function PT(e){return e==null?null:{transform:t=>dt(t,e,Float64Array),label:wo(e)}}function en(e){return e&&typeof e[Symbol.iterator]=="function"}function Bh(e){for(let t of e)if(t!=null)return typeof t!="object"||t instanceof Date}function m1(e){for(let t of e){if(t==null)continue;let r=typeof t;return r==="string"||r==="boolean"}}function At(e){for(let t of e)if(t!=null)return t instanceof Date}function MT(e){for(let t of e)if(t!=null)return typeof t=="string"&&isNaN(t)&&El(t)}function TT(e){for(let t of e)if(t!=null){if(typeof t!="string")return!1;if(t.trim())return!isNaN(t)}}function OT(e){for(let t of e)if(t!=null)return typeof t=="number"}function Gh(e,t){let r;for(let n of e)if(n!=null){if(!t(n))return!1;r=!0}return r}var HF=new Set("none,currentcolor,transparent,aliceblue,antiquewhite,aqua,aquamarine,azure,beige,bisque,black,blanchedalmond,blue,blueviolet,brown,burlywood,cadetblue,chartreuse,chocolate,coral,cornflowerblue,cornsilk,crimson,cyan,darkblue,darkcyan,darkgoldenrod,darkgray,darkgreen,darkgrey,darkkhaki,darkmagenta,darkolivegreen,darkorange,darkorchid,darkred,darksalmon,darkseagreen,darkslateblue,darkslategray,darkslategrey,darkturquoise,darkviolet,deeppink,deepskyblue,dimgray,dimgrey,dodgerblue,firebrick,floralwhite,forestgreen,fuchsia,gainsboro,ghostwhite,gold,goldenrod,gray,green,greenyellow,grey,honeydew,hotpink,indianred,indigo,ivory,khaki,lavender,lavenderblush,lawngreen,lemonchiffon,lightblue,lightcoral,lightcyan,lightgoldenrodyellow,lightgray,lightgreen,lightgrey,lightpink,lightsalmon,lightseagreen,lightskyblue,lightslategray,lightslategrey,lightsteelblue,lightyellow,lime,limegreen,linen,magenta,maroon,mediumaquamarine,mediumblue,mediumorchid,mediumpurple,mediumseagreen,mediumslateblue,mediumspringgreen,mediumturquoise,mediumvioletred,midnightblue,mintcream,mistyrose,moccasin,navajowhite,navy,oldlace,olive,olivedrab,orange,orangered,orchid,palegoldenrod,palegreen,paleturquoise,palevioletred,papayawhip,peachpuff,peru,pink,plum,powderblue,purple,rebeccapurple,red,rosybrown,royalblue,saddlebrown,salmon,sandybrown,seagreen,seashell,sienna,silver,skyblue,slateblue,slategray,slategrey,snow,springgreen,steelblue,tan,teal,thistle,tomato,turquoise,violet,wheat,white,whitesmoke,yellow".split(","));function uu(e){return typeof e!="string"?!1:(e=e.toLowerCase().trim(),/^#[0-9a-f]{3,8}$/.test(e)||/^(?:url|var|rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch|color|color-mix)\(.*\)$/.test(e)||HF.has(e))}function CT(e){return typeof e=="number"&&(0<=e&&e<=1||isNaN(e))}function cr(e){return e==null||Cs(e)}function Cs(e){return/^\s*none\s*$/i.test(e)}function kT(e){return/^\s*round\s*$/i.test(e)}function Kh(e,t){return f1(e,t,["middle","top-left","top","top-right","right","bottom-right","bottom","bottom-left","left"])}function Na(e="middle"){return Kh(e,"frameAnchor")}function NT(e={},...t){let r=e;for(let n of t)for(let o in n)if(r[o]===void 0){let i=n[o];r===e?r={...r,[o]:i}:r[o]=i}return r}function YF(e){console.warn("named iterables are deprecated; please use an object instead");let t=new Set;return Object.fromEntries(Array.from(e,r=>{let{name:n}=r;if(n==null)throw new Error("missing name");let o=`${n}`;if(o==="__proto__")throw new Error(`illegal name: ${o}`);if(t.has(o))throw new Error(`duplicate name: ${o}`);return t.add(o),[n,r]}))}function d1(e){return en(e)?YF(e):e}function qh(e){return e===!0?e="frame":e===!1?e=null:!yT(e)&&e!=null&&(e=Ur(e,"clip",["frame","sphere"]),e==="sphere"&&(e={type:"Sphere"})),e}function RT(e){return e&&typeof e.getChild=="function"&&typeof e.toArray=="function"&&e.schema&&Array.isArray(e.schema.fields)}function ET(e){return e&&typeof e.toArray=="function"&&e.type}function WF(e){return e&&(e.typeId===8||e.typeId===10)&&e.unit===1}var Kn=Symbol("position"),wn=Symbol("color"),ks=Symbol("radius"),Ns=Symbol("length"),Rs=Symbol("opacity"),fu=Symbol("symbol"),AT=Symbol("projection"),Qe=new Map([["x",Kn],["y",Kn],["fx",Kn],["fy",Kn],["r",ks],["color",wn],["opacity",Rs],["symbol",fu],["length",Ns],["projection",AT]]);function FT(e){return e===Kn||e===AT}function $T(e){return e===Kn||e===ks||e===Ns||e===Rs}var XF=Math.sqrt(3),ZF=2/XF,QF={draw(e,t){let r=Math.sqrt(t/Math.PI),n=r*ZF,o=n/2;e.moveTo(0,n),e.lineTo(r,o),e.lineTo(r,-o),e.lineTo(0,-n),e.lineTo(-r,-o),e.lineTo(-r,o),e.closePath()}},h1=new Map([["asterisk",xl],["circle",zi],["cross",wl],["diamond",Sl],["diamond2",vl],["hexagon",QF],["plus",Il],["square",_l],["square2",Pl],["star",Ml],["times",Zc],["triangle",Tl],["triangle2",Ol],["wye",Cl]]);function g1(e){return e&&typeof e.draw=="function"}function DT(e){return g1(e)?!0:typeof e!="string"?!1:h1.has(e.toLowerCase())}function lu(e){if(e==null||g1(e))return e;let t=h1.get(`${e}`.toLowerCase());if(t)return t;throw new Error(`invalid symbol: ${e}`)}function LT(e){if(e==null||g1(e))return[void 0,e];if(typeof e=="string"){let t=h1.get(`${e}`.toLowerCase());if(t)return[void 0,t]}return[e,void 0]}function Es({filter:e,sort:t,reverse:r,transform:n,initializer:o,...i}={},a){if(n===void 0&&(e!=null&&(n=VT(e)),t!=null&&!Oa(t)&&(n=b1(n,x1(t))),r&&(n=b1(n,zT))),a!=null&&o!=null)throw new Error("transforms cannot be applied after initializers");return{...i,...(t===null||Oa(t))&&{sort:t},transform:b1(n,a)}}function Gi({filter:e,sort:t,reverse:r,initializer:n,...o}={},i){return n===void 0&&(e!=null&&(n=VT(e)),t!=null&&!Oa(t)&&(n=y1(n,x1(t))),r&&(n=y1(n,zT))),{...o,...(t===null||Oa(t))&&{sort:t},initializer:y1(n,i)}}function b1(e,t){return e==null?t===null?void 0:t:t==null?e===null?void 0:e:function(r,n,o){return{data:r,facets:n}=e.call(this,r,n,o),t.call(this,Bi(r),n,o)}}function y1(e,t){return e==null?t===null?void 0:t:t==null?e===null?void 0:e:function(r,n,o,...i){let a,s,c,f,u,p;return{data:s=r,facets:c=n,channels:a}=e.call(this,r,n,o,...i),{data:u=s,facets:p=c,channels:f}=t.call(this,s,c,{...o,...a},...i),{data:u,facets:p,channels:{...a,...f}}}}function JF(e,t){return(e.initializer!=null?Gi:Es)(e,t)}function VT(e){return(t,r)=>{let n=dt(t,e);return{data:t,facets:r.map(o=>o.filter(i=>n[i]))}}}function zT(e,t){return{data:e,facets:t.map(r=>r.slice().reverse())}}function jT(e,{sort:t,...r}={}){return{...(au(e)&&e.channel!==void 0?Gi:JF)(r,x1(e)),sort:Oa(t)?t:null}}function x1(e){return(typeof e=="function"&&e.length!==1?e$:t$)(e)}function e$(e){return(t,r)=>{let n=go(t)?(o,i)=>e(t[o],t[i]):(o,i)=>e(t.get(o),t.get(i));return{data:t,facets:r.map(o=>o.slice().sort(n))}}}function t$(e){let t,r;({channel:t,value:e,order:r}={...ii(e)});let n=t?.startsWith("-");if(n&&(t=t.slice(1)),r===void 0&&(r=n?Ms:Nr),typeof r!="function")switch(`${r}`.toLowerCase()){case"ascending":r=Nr;break;case"descending":r=Ms;break;default:throw new Error(`invalid order: ${r}`)}return(o,i,a)=>{let s;if(t===void 0)s=dt(o,e);else{if(a===void 0)throw new Error("channel sort requires an initializer");if(s=a[t],!s)return{};s=s.value}let c=(f,u)=>r(s[f],s[u]);return{data:o,facets:i.map(f=>f.slice().sort(c))}}}function zl(e,...t){for(let{name:r}of e)if(t.includes(r))return!0;return!1}function GT(e,t,r=w1){let n=Object.entries(e);return t.title!=null&&e.title===void 0&&n.push(["title",a$]),t.href!=null&&e.href===void 0&&n.push(["href",Hh]),n.filter(([,o])=>o!==void 0).map(([o,i])=>i===null?r$(o):r(o,i,t))}function w1(e,t,r,n=S1){let o;yo(t)&&"reduce"in t&&(o=t.scale,t=t.reduce);let i=n(e,t,r),[a,s]=cu(i.label),c;return{name:e,output:o===void 0?a:{value:a,scale:o},initialize(f){i.initialize(f),c=s([])},scope(f,u){i.scope(f,u)},reduce(f,u){c.push(i.reduce(f,u))}}}function r$(e){return{name:e,initialize(){},scope(){},reduce(){}}}function S1(e,t,r,n=jl){let o=vT(e,r),i=n(t,o),a,s;return{label:wo(i===Vl?null:o,i.label),initialize(c){a=o===void 0?c:dt(c,o),i.scope==="data"&&(s=i.reduceIndex(Br(c),a))},scope(c,f){i.scope===c&&(s=i.reduceIndex(f,a))},reduce(c,f){return i.scope==null?i.reduceIndex(c,a,f):i.reduceIndex(c,a,s,f)}}}function v1(e,t){return t?Do(e,r=>t[r]):[[,e]]}function jl(e,t,r=n$){if(e==null)return r(e);if(typeof e.reduceIndex=="function")return e;if(typeof e.reduce=="function"&&yo(e))return o$(e);if(typeof e=="function")return i$(e);if(/^p\d{2}$/i.test(e))return Ki(bT(e));switch(`${e}`.toLowerCase()){case"first":return Hh;case"last":return s$;case"identity":return I1;case"count":return Vl;case"distinct":return c$;case"sum":return t==null?Vl:u$;case"proportion":return BT(t,"data");case"proportion-facet":return BT(t,"facet");case"deviation":return Ki(yc);case"min":return Ki(Lr);case"min-index":return Ki(Hp);case"max":return Ki(nr);case"max-index":return Ki(qp);case"mean":return UT(Xp);case"median":return UT(ns);case"variance":return Ki(bc);case"mode":return Ki(Zp)}return r(e)}function n$(e){throw new Error(`invalid reduce: ${e}`)}function KT(e,t){for(let r in t){let n=t[r];if(n!==void 0&&!e.some(o=>o.name===r))return n}}function qT(e,t,r){if(t){let n=t.output.transform(),o=(i,a)=>Nr(n[i],n[a]);e.forEach(i=>i.sort(o))}r&&e.forEach(n=>n.reverse())}function o$(e){return console.warn("deprecated reduce interface; implement reduceIndex instead."),{...e,reduceIndex:e.reduce.bind(e)}}function i$(e){return{reduceIndex(t,r,n){return e(jh(r,t),n)}}}function Ki(e){return{reduceIndex(t,r){return e(t,n=>r[n])}}}function UT(e){return{reduceIndex(t,r){let n=e(t,o=>r[o]);return At(r)?new Date(n):n}}}var I1={reduceIndex(e,t){return jh(t,e)}},Hh={reduceIndex(e,t){return t[e[0]]}},a$={reduceIndex(e,t){let n=Pi(co(e,i=>i.length,i=>t[i]),$l),o=n.slice(-5).reverse();if(o.length`${i} (${a.toLocaleString("en-US")})`).join(` +`)}},s$={reduceIndex(e,t){return t[e[e.length-1]]}},Vl={label:"Frequency",reduceIndex(e){return e.length}},c$={label:"Distinct",reduceIndex(e,t){let r=new so;for(let n of e)r.add(t[n]);return r.size}},u$=Ki(hn);function BT(e,t){return e==null?{scope:t,label:"Frequency",reduceIndex:(r,n,o=1)=>r.length/o}:{scope:t,reduceIndex:(r,n,o=1)=>hn(r,i=>n[i])/o}}var HT={reduceIndex(e,t,{z:r}){return r}};function pu(e,{scale:t,type:r,value:n,filter:o,hint:i,label:a=wo(n)},s){return i===void 0&&typeof n?.transform=="function"&&(i=n.hint),P1(s,{scale:t,type:r,value:dt(e,n),label:a,filter:o,hint:i})}function WT(e,t){return Object.fromEntries(Object.entries(e).map(([r,n])=>[r,pu(t,n,r)]))}function XT(e,t){let r=Object.fromEntries(Object.entries(e).map(([n,{scale:o,value:i}])=>{let a=o==null?null:t[o];return[n,a==null?i:Xe(i,a)]}));return r.channels=e,r}function P1(e,t){let{scale:r,value:n}=t;if(r===!0||r==="auto")switch(e){case"fill":case"stroke":case"color":t.scale=r!==!0&&Gh(n,uu)?null:"color",t.defaultScale="color";break;case"fillOpacity":case"strokeOpacity":case"opacity":t.scale=r!==!0&&Gh(n,CT)?null:"opacity",t.defaultScale="opacity";break;case"symbol":r!==!0&&Gh(n,DT)?(t.scale=null,t.value=Xe(n,lu)):t.scale="symbol",t.defaultScale="symbol";break;default:t.scale=Qe.has(e)?e:null;break}else if(r===!1)t.scale=null;else if(r!=null&&!Qe.has(r))throw new Error(`unknown scale: ${r}`);return t}function ZT(e,t,r,n,o){let{order:i,reverse:a,reduce:s=!0,limit:c}=o;for(let f in o){if(!Qe.has(f))continue;let{value:u,order:p=i,reverse:l=a,reduce:m=s,limit:h=c}=ii(o[f]),y=u?.startsWith("-");if(y&&(u=u.slice(1)),p=p===void 0?y!==(u==="width"||u==="height")?JT:QT:p$(p),m==null||m===!1)continue;let b=f==="fx"||f==="fy"?l$(t,n[f]):f$(r,f);if(!b)throw new Error(`missing channel for scale: ${f}`);let x=b.value,[g=0,S=1/0]=en(h)?h:h<0?[h]:[0,h];if(u==null)b.domain=()=>{let w=Array.from(new so(x));return l&&(w=w.reverse()),(g!==0||S!==1/0)&&(w=w.slice(g,S)),w};else{let w=u==="data"?e:u==="height"?YT(r,"y1","y2"):u==="width"?YT(r,"x1","x2"):_1(r,u,u==="y"?"y2":u==="x"?"x2":void 0),_=jl(m===!0?"max":m,w);b.domain=()=>{let v=wy(Br(x),I=>_.reduceIndex(I,w),I=>x[I]);return p&&v.sort(p),l&&v.reverse(),(g!==0||S!==1/0)&&(v=v.slice(g,S)),v.map(Vh)}}}}function f$(e,t){for(let r in e){let n=e[r];if(n.scale===t)return n}}function l$(e,t){let r=e.original;if(r===e)return t;let n=t.value,o=t.value=[];for(let i=0;iMath.abs(i-n[a]),Float64Array)}function _1(e,t,r){let n=e[t];if(!n&&r!==void 0&&(n=e[r]),n)return n.value;throw new Error(`missing channel: ${t}`)}function p$(e){if(e==null||typeof e=="function")return e;switch(`${e}`.toLowerCase()){case"ascending":return QT;case"descending":return JT}throw new Error(`invalid order: ${e}`)}function QT([e,t],[r,n]){return Nr(t,n)||Nr(e,r)}function JT([e,t],[r,n]){return Ms(t,n)||Nr(e,r)}function M1(e,t){let r=e[t];if(r){for(;r.source;)r=r.source;return r.source===null?null:r}}var oO=new Map([["accent",px],["category10",lx],["dark2",mx],["observable10",dx],["paired",hx],["pastel1",gx],["pastel2",bx],["set1",yx],["set2",xx],["set3",wx],["tableau10",Sx]]);function iO(e){return e!=null&&oO.has(`${e}`.toLowerCase())}var eO=new Map([...oO,["brbg",qi(hd,gd)],["prgn",qi(bd,yd)],["piyg",qi(xd,wd)],["puor",qi(Sd,vd)],["rdbu",qi(hl,Hc)],["rdgy",qi(Id,_d)],["rdylbu",qi(gl,Yc)],["rdylgn",qi(Pd,Md)],["spectral",qi(Td,Od)],["burd",tO(hl,Hc)],["buylrd",tO(gl,Yc)],["blues",ur(Jd,eh)],["greens",ur(th,rh)],["greys",ur(nh,oh)],["oranges",ur(uh,fh)],["purples",ur(ih,ah)],["reds",ur(sh,ch)],["turbo",Hi(xh)],["viridis",Hi(Sh)],["magma",Hi(vh)],["inferno",Hi(Ih)],["plasma",Hi(_h)],["cividis",Hi(lh)],["cubehelix",Hi(ph)],["warm",Hi(dh)],["cool",Hi(hh)],["bugn",ur(Cd,kd)],["bupu",ur(Nd,Rd)],["gnbu",ur(Ed,Ad)],["orrd",ur(Fd,$d)],["pubu",ur(Vd,zd)],["pubugn",ur(Dd,Ld)],["purd",ur(jd,Ud)],["rdpu",ur(Bd,Gd)],["ylgn",ur(Hd,Yd)],["ylgnbu",ur(Kd,qd)],["ylorbr",ur(Wd,Xd)],["ylorrd",ur(Zd,Qd)],["rainbow",rO(gh)],["sinebow",rO(yh)]]);function ur(e,t){return({length:r})=>r===1?[e[3][1]]:r===2?[e[3][1],e[3][2]]:(r=Math.max(3,Math.floor(r)),r>9?Tr(t,r):e[r])}function qi(e,t){return({length:r})=>r===2?[e[3][0],e[3][2]]:(r=Math.max(3,Math.floor(r)),r>11?Tr(t,r):e[r])}function tO(e,t){return({length:r})=>r===2?[e[3][2],e[3][0]]:(r=Math.max(3,Math.floor(r)),r>11?Tr(n=>t(1-n),r):e[r].slice().reverse())}function Hi(e){return({length:t})=>Tr(e,Math.max(2,Math.floor(t)))}function rO(e){return({length:t})=>Tr(e,Math.floor(t)+1).slice(0,-1)}function T1(e){let t=`${e}`.toLowerCase();if(!eO.has(t))throw new Error(`unknown ordinal scheme: ${t}`);return eO.get(t)}function Ul(e,t){let r=T1(e),n=typeof r=="function"?r({length:t}):r;return n.length!==t?n.slice(0,t):n}function aO(e,t="greys"){let r=new Set,[n,o]=Ul(t,2);for(let i of e)if(i!=null)if(i===!0)r.add(o);else if(i===!1)r.add(n);else return;return[...r]}var nO=new Map([["brbg",gd],["prgn",yd],["piyg",wd],["puor",vd],["rdbu",Hc],["rdgy",_d],["rdylbu",Yc],["rdylgn",Md],["spectral",Od],["burd",e=>Hc(1-e)],["buylrd",e=>Yc(1-e)],["blues",eh],["greens",rh],["greys",oh],["purples",ah],["reds",ch],["oranges",fh],["turbo",xh],["viridis",Sh],["magma",vh],["inferno",Ih],["plasma",_h],["cividis",lh],["cubehelix",ph],["warm",dh],["cool",hh],["bugn",kd],["bupu",Rd],["gnbu",Ad],["orrd",$d],["pubugn",Ld],["pubu",zd],["purd",Ud],["rdpu",Gd],["ylgnbu",qd],["ylgn",Yd],["ylorbr",Xd],["ylorrd",Qd],["rainbow",gh],["sinebow",yh]]);function mu(e){let t=`${e}`.toLowerCase();if(!nO.has(t))throw new Error(`unknown quantitative scheme: ${t}`);return nO.get(t)}var m$=new Set(["brbg","prgn","piyg","puor","rdbu","rdgy","rdylbu","rdylgn","spectral","burd","buylrd"]);function sO(e){return e!=null&&m$.has(`${e}`.toLowerCase())}var C1=e=>t=>e(1-t),O1=[0,1],cO=new Map([["number",mt],["rgb",Fn],["hsl",Hy],["hcl",Yy],["lab",dm]]);function k1(e){let t=`${e}`.toLowerCase();if(!cO.has(t))throw new Error(`unknown interpolator: ${t}`);return cO.get(t)}function hu(e,t,r,{type:n,nice:o,clamp:i,zero:a,domain:s=bO(e,r),unknown:c,round:f,scheme:u,interval:p,range:l=Qe.get(e)===ks?b$(r,s):Qe.get(e)===Ns?y$(r,s):Qe.get(e)===Rs?O1:void 0,interpolate:m=Qe.get(e)===wn?u==null&&l!==void 0?Fn:mu(u!==void 0?u:n==="cyclical"?"rainbow":"turbo"):f?fs:mt,reverse:h}){if(s=uO(s),p=oi(p,n),(n==="cyclical"||n==="sequential")&&(n="linear"),typeof m!="function"&&(m=k1(m)),h=!!h,l!==void 0){let y=s.length,b=(l=uO(l)).length;if(y!==b){if(m.length===1)throw new Error("invalid piecewise interpolator");m=Uo(m,l),l=void 0}}if(m.length===1?(h&&(m=C1(m),h=!1),l===void 0&&(l=Float64Array.from(s,(y,b)=>b/(s.length-1)),l.length===2&&(l=O1)),t.interpolate((l===O1?xn:Bl)(m))):t.interpolate(m),a){let[y,b]=Wt(s);(y>0||b<0)&&(s=Ta(s),(Ui(s)||1)===Math.sign(y)?s[0]=0:s[s.length-1]=0)}return h&&(s=la(s)),t.domain(s).unknown(c),o&&(t.nice(d$(o,n)),s=t.domain()),l!==void 0&&t.range(l),i&&t.clamp(i),{type:n,domain:s,range:l,scale:t,interpolate:m,interval:p}}function uO(e){return e=ni(e),e.length>=2?e:[e[0],e[0]]}function d$(e,t){return e===!0?void 0:typeof e=="number"?e:IT(e,t)}function fO(e,t,r){return hu(e,ys(),t,r)}function lO(e,t,r){return N1(e,t,{...r,exponent:.5})}function N1(e,t,{exponent:r=1,...n}){return hu(e,ol().exponent(r),t,{...n,type:"pow"})}function pO(e,t,{base:r=10,domain:n=x$(t),...o}){return hu(e,rl().base(r),t,{...o,domain:n})}function mO(e,t,{constant:r=1,...n}){return hu(e,nl().constant(r),t,n)}function dO(e,t,{range:r,quantiles:n=r===void 0?5:(r=[...r]).length,n:o=n,scheme:i="rdylbu",domain:a=w$(t),unknown:s,interpolate:c,reverse:f}){return r===void 0&&(r=c!==void 0?Tr(c,o):Qe.get(e)===wn?Ul(i,o):void 0),a.length>0&&(a=il(a,r===void 0?{length:o}:r).quantiles()),Yh(e,t,{domain:a,range:r,reverse:f,unknown:s})}function hO(e,t,{range:r,n=r===void 0?5:(r=[...r]).length,scheme:o="rdylbu",domain:i=bO(e,t),unknown:a,interpolate:s,reverse:c}){let[f,u]=Wt(i),p;return r===void 0?(p=uo(f,u,n),p[0]<=f&&p.splice(0,1),p[p.length-1]>=u&&p.pop(),n=p.length+1,r=s!==void 0?Tr(s,n):Qe.get(e)===wn?Ul(o,n):void 0):(p=Tr(mt(f,u),n+1).slice(1,-1),f instanceof Date&&(p=p.map(l=>new Date(l)))),Ui(ni(i))<0&&p.reverse(),Yh(e,t,{domain:p,range:r,reverse:c,unknown:a})}function Yh(e,t,{domain:r=[0],unknown:n,scheme:o="rdylbu",interpolate:i,range:a=i!==void 0?Tr(i,r.length+1):Qe.get(e)===wn?Ul(o,r.length+1):void 0,reverse:s}){r=ni(r);let c=Ui(r);if(!isNaN(c)&&!h$(r,c))throw new Error(`the ${e} scale has a non-monotonic domain`);return s&&(a=la(a)),{type:"threshold",scale:al(c<0?la(r):r,a===void 0?[]:a).unknown(n),domain:r,range:a}}function h$(e,t){for(let r=1,n=e.length,o=e[0];rt}}function du(e,t=Xx){return e.length?[Lr(e,({value:r})=>r===void 0?r:Lr(r,t)),nr(e,({value:r})=>r===void 0?r:nr(r,t))]:[0,1]}function bO(e,t){let r=Qe.get(e);return(r===ks||r===Rs||r===Ns?g$:du)(t)}function g$(e){return[0,e.length?nr(e,({value:t})=>t===void 0?t:nr(t,Xx)):1]}function b$(e,t){let r=e.find(({radius:a})=>a!==void 0);if(r!==void 0)return[0,r.radius];let n=En(e,.5,({value:a})=>a===void 0?NaN:En(a,.25,Ts)),o=t.map(a=>3*Math.sqrt(a/n)),i=30/nr(o);return i<1?o.map(a=>a*i):o}function y$(e,t){let r=ns(e,({value:i})=>i===void 0?NaN:ns(i,Math.abs)),n=t.map(i=>12*i/r),o=60/nr(n);return o<1?n.map(i=>i*o):n}function x$(e){for(let{value:t}of e)if(t!==void 0)for(let r of t){if(r>0)return du(e,Ts);if(r<0)return du(e,eu)}return[1,10]}function w$(e){let t=[];for(let{value:r}of e)if(r!==void 0)for(let n of r)t.push(n);return t}function Bl(e){return(t,r)=>n=>e(t+n*(r-t))}var R1=0,E1;function yO(){let e=R1;return R1=0,E1=void 0,e}function tn(e){e!==E1&&(E1=e,console.warn(e),++R1)}function Wh(e,t,r,n,{type:o,nice:i,clamp:a,domain:s=du(n),unknown:c,pivot:f=0,scheme:u,range:p,symmetric:l=!0,interpolate:m=Qe.get(e)===wn?u==null&&p!==void 0?Fn:mu(u!==void 0?u:"rdbu"):mt,reverse:h}){f=+f,s=ni(s);let[y,b]=s;if(s.length>2&&tn(`Warning: the diverging ${e} scale domain contains extra elements.`),Rn(y,b)<0&&([y,b]=[b,y],h=!h),y=Math.min(y,f),b=Math.max(b,f),typeof m!="function"&&(m=k1(m)),p!==void 0&&(m=m.length===1?Bl(m)(...p):Uo(m,p)),h&&(m=C1(m)),l){let x=r.apply(f),g=x-r.apply(y),S=r.apply(b)-x;gS&&(b=r.invert(x+g))}return t.domain([y,f,b]).unknown(c).interpolator(m),a&&t.clamp(a),i&&t.nice(i),{type:o,domain:[y,b],pivot:f,interpolate:m,scale:t}}function xO(e,t,r){return Wh(e,dl(),S$,t,r)}function wO(e,t,r){return A1(e,t,{...r,exponent:.5})}function A1(e,t,{exponent:r=1,...n}){return Wh(e,dd().exponent(r=+r),_$(r),t,{...n,type:"diverging-pow"})}function SO(e,t,{base:r=10,pivot:n=1,domain:o=du(t,n<0?eu:Ts),...i}){return Wh(e,pd().base(r=+r),v$,t,{domain:o,pivot:n,...i})}function vO(e,t,{constant:r=1,...n}){return Wh(e,md().constant(r=+r),P$(r),t,n)}var S$={apply(e){return e},invert(e){return e}},v$={apply:Math.log,invert:Math.exp},I$={apply(e){return Math.sign(e)*Math.sqrt(Math.abs(e))},invert(e){return Math.sign(e)*(e*e)}};function _$(e){return e===.5?I$:{apply(t){return Math.sign(t)*Math.pow(Math.abs(t),e)},invert(t){return Math.sign(t)*Math.pow(Math.abs(t),1/e)}}}function P$(e){return{apply(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))},invert(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}}function IO(e,t,r,n){return hu(e,t,r,n)}function _O(e,t,r){return IO(e,ud(),t,r)}function PO(e,t,r){return IO(e,fd(),t,r)}var gu=Symbol("ordinal");function TO(e,t,r,{type:n,interval:o,domain:i,range:a,reverse:s,hint:c}){return o=oi(o,n),i===void 0&&(i=RO(r,o,e)),(n==="categorical"||n===gu)&&(n="ordinal"),s&&(i=la(i)),i=t.domain(i).domain(),a!==void 0&&(typeof a=="function"&&(a=a(i)),t.range(a)),{type:n,domain:i,range:a,scale:t,hint:c,interval:o}}function OO(e,t,{type:r,interval:n,domain:o,range:i,scheme:a,unknown:s,...c}){n=oi(n,r),o===void 0&&(o=RO(t,n,e));let f;if(Qe.get(e)===fu)f=M$(t),i=i===void 0?T$(f):Xe(i,lu);else if(Qe.get(e)===wn&&(i===void 0&&(r==="ordinal"||r===gu)&&(i=aO(o,a),i!==void 0&&(a=void 0)),a===void 0&&i===void 0&&(a=r==="ordinal"?"turbo":"observable10"),a!==void 0))if(i!==void 0){let u=mu(a),p=i[0],l=i[1]-i[0];i=({length:m})=>Tr(h=>u(p+l*h),m)}else i=T1(a);if(s===Qf)throw new Error(`implicit unknown on ${e} scale is not supported`);return TO(e,gs().unknown(s),t,{...c,type:r,domain:o,range:i,hint:f})}function CO(e,t,{align:r=.5,padding:n=.5,...o}){return NO(W0().align(r).padding(n),t,o,e)}function kO(e,t,{align:r=.5,padding:n=.1,paddingInner:o=n,paddingOuter:i=e==="fx"||e==="fy"?0:n,...a}){return NO(wa().align(r).paddingInner(o).paddingOuter(i),t,a,e)}function NO(e,t,r,n){let{round:o}=r;return o!==void 0&&e.round(o=!!o),e=TO(n,e,t,r),e.round=o,e}function RO(e,t,r){let n=new so;for(let{value:o,domain:i}of e){if(i!==void 0)return i();if(o!==void 0)for(let a of o)n.add(a)}if(t!==void 0){let[o,i]=Wt(n).map(t.floor,t);return t.range(o,t.offset(i))}if(n.size>1e4&&Qe.get(r)===Kn)throw new Error(`implicit ordinal domain of ${r} scale has more than 10,000 values`);return Pi(n,Nr)}function MO(e,t){let r;for(let{hint:n}of e){let o=n?.[t];if(o!==void 0){if(r===void 0)r=o;else if(r!==o)return}}return r}function M$(e){return{fill:MO(e,"fill"),stroke:MO(e,"stroke")}}function T$(e){return cr(e.fill)?Cx:kh}function Gl(e,{label:t,inset:r=0,insetTop:n=r,insetRight:o=r,insetBottom:i=r,insetLeft:a=r,round:s,nice:c,clamp:f,zero:u,align:p,padding:l,projection:m,facet:{label:h=t}={},...y}={}){let b={};for(let[x,g]of e){let S=y[x],w=k$(x,g,{round:Qe.get(x)===Kn?s:void 0,nice:c,clamp:f,zero:u,align:p,padding:l,projection:m,...S});if(w){let{label:_=x==="fx"||x==="fy"?h:t,percent:v,transform:I,inset:O,insetTop:M=O!==void 0?O:x==="y"?n:0,insetRight:E=O!==void 0?O:x==="x"?o:0,insetBottom:C=O!==void 0?O:x==="y"?i:0,insetLeft:N=O!==void 0?O:x==="x"?a:0}=S||{};if(I==null)I=void 0;else if(typeof I!="function")throw new Error("invalid scale transform; not a function");w.percent=!!v,w.label=_===void 0?O$(g,w):_,w.transform=I,x==="x"||x==="fx"?(w.insetLeft=+N,w.insetRight=+E):(x==="y"||x==="fy")&&(w.insetTop=+M,w.insetBottom=+C),b[x]=w}}return b}function $1(e){let t={},r={scales:t};for(let[n,o]of Object.entries(e)){let{scale:i,type:a,interval:s,label:c}=o;t[n]=A$(o),r[n]=i,i.type=a,s!=null&&(i.interval=s),c!=null&&(i.label=c)}return r}function DO(e,t){let{x:r,y:n,fx:o,fy:i}=e,a=o||i?Zh(t):t;o&&EO(o,a),i&&AO(i,a);let s=o||i?D1(e,t):t;r&&EO(r,s),n&&AO(n,s)}function O$(e=[],t){let r;for(let{label:n}of e)if(n!==void 0){if(r===void 0)r=n;else if(r!==n)return}if(r!==void 0)return!ai(t)&&t.percent&&(r=`${r} (%)`),{inferred:!0,toString:()=>r}}function LO(e){return Math.sign(Ui(e.domain()))*Math.sign(Ui(e.range()))}function Zh(e){let{marginTop:t,marginRight:r,marginBottom:n,marginLeft:o,width:i,height:a,facet:{marginTop:s,marginRight:c,marginBottom:f,marginLeft:u}}=e;return{marginTop:Math.max(t,s),marginRight:Math.max(r,c),marginBottom:Math.max(n,f),marginLeft:Math.max(o,u),width:i,height:a}}function D1({fx:e,fy:t},r){let{marginTop:n,marginRight:o,marginBottom:i,marginLeft:a,width:s,height:c}=Zh(r);return{marginTop:n,marginRight:o,marginBottom:i,marginLeft:a,width:e?e.scale.bandwidth()+a+o:s,height:t?t.scale.bandwidth()+n+i:c,facet:{width:s,height:c}}}function EO(e,t){if(e.range===void 0){let{insetLeft:r,insetRight:n}=e,{width:o,marginLeft:i=0,marginRight:a=0}=t,s=i+r,c=o-a-n;e.range=[s,Math.max(s,c)],ai(e)||(e.range=zO(e)),e.scale.range(e.range)}VO(e)}function AO(e,t){if(e.range===void 0){let{insetTop:r,insetBottom:n}=e,{height:o,marginTop:i=0,marginBottom:a=0}=t,s=i+r,c=o-a-n;e.range=[Math.max(s,c),s],ai(e)?e.range.reverse():e.range=zO(e),e.scale.range(e.range)}VO(e)}function VO(e){e.round===void 0&&R$(e)&&C$(e)<=30&&e.scale.round(!0)}function C$({scale:e}){let t=e.domain().length,[r,n]=e.range(),o=e.paddingInner?e.paddingInner():1,i=e.paddingOuter?e.paddingOuter():e.padding(),a=t-o,s=Math.abs(n-r)/Math.max(1,a+i*2);return(s-Math.floor(s))*a}function zO(e){let t=e.scale.domain().length+L1(e);if(!(t>2))return e.range;let[r,n]=e.range;return Array.from({length:t},(o,i)=>r+i/(t-1)*(n-r))}function k$(e,t=[],r={}){let n=N$(e,t,r);if(r.type===void 0&&r.domain===void 0&&r.range===void 0&&r.interval==null&&e!=="fx"&&e!=="fy"&&ai({type:n})){let o=t.map(({value:i})=>i).filter(i=>i!==void 0);o.some(At)?tn(`Warning: some data associated with the ${e} scale are dates. Dates are typically associated with a "utc" or "time" scale rather than a "${bu(n)}" scale. If you are using a bar mark, you probably want a rect mark with the interval option instead; if you are using a group transform, you probably want a bin transform instead. If you want to treat this data as ordinal, you can specify the interval of the ${e} scale (e.g., d3.utcDay), or you can suppress this warning by setting the type of the ${e} scale to "${bu(n)}".`):o.some(MT)?tn(`Warning: some data associated with the ${e} scale are strings that appear to be dates (e.g., YYYY-MM-DD). If these strings represent dates, you should parse them to Date objects. Dates are typically associated with a "utc" or "time" scale rather than a "${bu(n)}" scale. If you are using a bar mark, you probably want a rect mark with the interval option instead; if you are using a group transform, you probably want a bin transform instead. If you want to treat this data as ordinal, you can suppress this warning by setting the type of the ${e} scale to "${bu(n)}".`):o.some(TT)&&tn(`Warning: some data associated with the ${e} scale are strings that appear to be numbers. If these strings represent numbers, you should parse or coerce them to numbers. Numbers are typically associated with a "linear" scale rather than a "${bu(n)}" scale. If you want to treat this data as ordinal, you can specify the interval of the ${e} scale (e.g., 1 for integers), or you can suppress this warning by setting the type of the ${e} scale to "${bu(n)}".`)}switch(r.type=n,n){case"diverging":case"diverging-sqrt":case"diverging-pow":case"diverging-log":case"diverging-symlog":case"cyclical":case"sequential":case"linear":case"sqrt":case"threshold":case"quantile":case"pow":case"log":case"symlog":r=Xh(t,r,ri);break;case"identity":switch(Qe.get(e)){case Kn:r=Xh(t,r,ri);break;case fu:r=Xh(t,r,E$);break}break;case"utc":case"time":r=Xh(t,r,c1);break}switch(n){case"diverging":return xO(e,t,r);case"diverging-sqrt":return wO(e,t,r);case"diverging-pow":return A1(e,t,r);case"diverging-log":return SO(e,t,r);case"diverging-symlog":return vO(e,t,r);case"categorical":case"ordinal":case gu:return OO(e,t,r);case"cyclical":case"sequential":case"linear":return fO(e,t,r);case"sqrt":return lO(e,t,r);case"threshold":return Yh(e,t,r);case"quantile":return dO(e,t,r);case"quantize":return hO(e,t,r);case"pow":return N1(e,t,r);case"log":return pO(e,t,r);case"symlog":return mO(e,t,r);case"utc":return PO(e,t,r);case"time":return _O(e,t,r);case"point":return CO(e,t,r);case"band":return kO(e,t,r);case"identity":return gO(e);case void 0:return;default:throw new Error(`unknown scale type: ${n}`)}}function bu(e){return typeof e=="symbol"?e.description:e}function FO(e){return typeof e=="string"?`${e}`.toLowerCase():e}var $O={toString:()=>"projection"};function N$(e,t,{type:r,domain:n,range:o,scheme:i,pivot:a,projection:s}){if(r=FO(r),e==="fx"||e==="fy")return"band";(e==="x"||e==="y")&&s!=null&&(r=$O);for(let u of t){let p=FO(u.type);if(p!==void 0){if(r===void 0)r=p;else if(r!==p)throw new Error(`scale incompatible with channel: ${r} !== ${p}`)}}if(r===$O)return;if(r!==void 0)return r;if(n===void 0&&!t.some(({value:u})=>u!==void 0))return;let c=Qe.get(e);if(c===ks)return"sqrt";if(c===Rs||c===Ns)return"linear";if(c===fu)return"ordinal";let f=(n??o)?.length;if(f<2||f>2)return F1(c);if(n!==void 0){if(m1(n))return F1(c);if(At(n))return"utc"}else{let u=t.map(({value:p})=>p).filter(p=>p!==void 0);if(u.some(m1))return F1(c);if(u.some(At))return"utc"}if(c===wn){if(a!=null||sO(i))return"diverging";if(iO(i))return"categorical"}return"linear"}function F1(e){switch(e){case Kn:return"point";case wn:return gu;default:return"ordinal"}}function ai({type:e}){return e==="ordinal"||e==="point"||e==="band"||e===gu}function L1({type:e}){return e==="threshold"}function R$({type:e}){return e==="point"||e==="band"}function So(e){if(e===void 0)return!0;let t=e.domain(),r=e(t[0]);for(let n=1,o=t.length;n{if(!Qe.has(t=`${t}`))throw new Error(`unknown scale: ${t}`);return e[t]}}function A$({scale:e,type:t,domain:r,range:n,interpolate:o,interval:i,transform:a,percent:s,pivot:c}){if(t==="identity")return{type:"identity",apply:u=>u,invert:u=>u};let f=e.unknown?e.unknown():void 0;return{type:t,domain:Ta(r),...n!==void 0&&{range:Ta(n)},...a!==void 0&&{transform:a},...s&&{percent:s},...f!==void 0&&{unknown:f},...i!==void 0&&{interval:i},...o!==void 0&&{interpolate:o},...e.clamp&&{clamp:e.clamp()},...c!==void 0&&{pivot:c,symmetric:!1},...e.base&&{base:e.base()},...e.exponent&&{exponent:e.exponent()},...e.constant&&{constant:e.constant()},...e.align&&{align:e.align(),round:e.round()},...e.padding&&(e.paddingInner?{paddingInner:e.paddingInner(),paddingOuter:e.paddingOuter()}:{padding:e.padding()}),...e.bandwidth&&{bandwidth:e.bandwidth(),step:e.step()},apply:u=>e(u),...e.invert&&{invert:u=>e.invert(u)}}}function BO(e,t){let{fx:r,fy:n}=Gl(e,t),o=r?.scale.domain(),i=n?.scale.domain();return o&&i?Up(o,i).map(([a,s],c)=>({x:a,y:s,i:c})):o?o.map((a,s)=>({x:a,i:s})):i?i.map((a,s)=>({y:a,i:s})):void 0}function GO(e,{x:t,y:r}){return t&&=B1(t),r&&=B1(r),e.filter(t&&r?n=>t.has(n.x)&&r.has(n.y):t?n=>t.has(n.x):n=>r.has(n.y)).sort(t&&r?(n,o)=>t.get(n.x)-t.get(o.x)||r.get(n.y)-r.get(o.y):t?(n,o)=>t.get(n.x)-t.get(o.x):(n,o)=>r.get(n.y)-r.get(o.y))}function Jh(e,{fx:t,fy:r}){let n=Br(e),o=t?.value,i=r?.value;return t&&r?co(n,a=>(a.fx=o[a[0]],a.fy=i[a[0]],a),a=>o[a],a=>i[a]):t?co(n,a=>(a.fx=o[a[0]],a),a=>o[a]):co(n,a=>(a.fy=i[a[0]],a),a=>i[a])}function KO(e,t,{marginTop:r,marginLeft:n}){let o=e?({x:a})=>e(a)-n:()=>0,i=t?({y:a})=>t(a)-r:()=>0;return function(a){this.tagName==="svg"?(this.setAttribute("x",o(a)),this.setAttribute("y",i(a))):this.setAttribute("transform",`translate(${o(a)},${i(a)})`)}}function qO(e){let t=[],r=new Uint32Array(hn(e,n=>n.length));for(let n of e){let o=0;for(let i of e)n!==i&&(r.set(i,o),o+=i.length);t.push(r.slice(0,o))}return t}var F$=new Map([["top",V1],["right",U1],["bottom",z1],["left",j1],["top-left",Qh(V1,j1)],["top-right",Qh(V1,U1)],["bottom-left",Qh(z1,j1)],["bottom-right",Qh(z1,U1)],["top-empty",D$],["right-empty",z$],["bottom-empty",L$],["left-empty",V$],["empty",j$]]);function HO(e){if(e==null)return null;let t=F$.get(`${e}`.toLowerCase());if(t)return t;throw new Error(`invalid facet anchor: ${e}`)}var UO=new WeakMap;function B1(e){let t=UO.get(e);return t||UO.set(e,t=new Dr(Xe(e,(r,n)=>[r,n]))),t}function Ra(e,t){return B1(e).get(t)}function $$(e,t,r){return t=Bn(t),r=Bn(r),e.find(n=>Object.is(Bn(n.x),t)&&Object.is(Bn(n.y),r))}function eg(e,t,r){return $$(e,t,r)?.empty}function V1(e,{y:t},{y:r}){return t?Ra(t,r)===0:!0}function z1(e,{y:t},{y:r}){return t?Ra(t,r)===t.length-1:!0}function j1(e,{x:t},{x:r}){return t?Ra(t,r)===0:!0}function U1(e,{x:t},{x:r}){return t?Ra(t,r)===t.length-1:!0}function D$(e,{y:t},{x:r,y:n,empty:o}){if(o)return!1;if(!t)return;let i=Ra(t,n);if(i>0)return eg(e,r,t[i-1])}function L$(e,{y:t},{x:r,y:n,empty:o}){if(o)return!1;if(!t)return;let i=Ra(t,n);if(i0)return eg(e,t[i-1],n)}function z$(e,{x:t},{x:r,y:n,empty:o}){if(o)return!1;if(!t)return;let i=Ra(t,r);if(in.get(o)?.get(i)??[]):t?e.map(({x:o})=>n.get(o)??[]):e.map(({y:o})=>n.get(o)??[])}var YO=Math.PI,Yi=2*YO,G1=.618;function WO({projection:e,inset:t=0,insetTop:r=t,insetRight:n=t,insetBottom:o=t,insetLeft:i=t}={},a){if(e==null)return;if(typeof e.stream=="function")return e;let s,c,f="frame";if(yo(e)){let _;if({type:e,domain:c,inset:_,insetTop:r=_!==void 0?_:r,insetRight:n=_!==void 0?_:n,insetBottom:o=_!==void 0?_:o,insetLeft:i=_!==void 0?_:i,clip:f=f,...s}=e,e==null)return}typeof e!="function"&&({type:e}=K1(e));let{width:u,height:p,marginLeft:l,marginRight:m,marginTop:h,marginBottom:y}=a,b=u-l-m-i-n,x=p-h-y-r-o;if(e=e?.({width:b,height:x,clip:f,...s}),e==null)return;f=U$(f,l,h,u-m,p-y);let g=l+i,S=h+r,w;if(c!=null){let[[_,v],[I,O]]=Lc(e).bounds(c),M=Math.min(b/(I-_),x/(O-v));M>0?(g-=(M*(_+I)-b)/2,S-=(M*(v+O)-x)/2,w=Vc({point(E,C){this.stream.point(E*M+g,C*M+S)}})):tn("Warning: the projection could not be fit to the specified domain; using the default scale.")}return w??=g===0&&S===0?XO():Vc({point(_,v){this.stream.point(_+g,v+S)}}),{stream:_=>e.stream(w.stream(f(_)))}}function K1(e){switch(`${e}`.toLowerCase()){case"albers-usa":return vo(C0,.7463,.4673);case"albers":return rg(qf,.7463,.4673);case"azimuthal-equal-area":return vo(N0,4,4);case"azimuthal-equidistant":return vo(E0,Yi,Yi);case"conic-conformal":return rg($0,Yi,Yi);case"conic-equal-area":return rg(xa,6.1702,2.9781);case"conic-equidistant":return rg(L0,7.312,3.6282);case"equal-earth":return vo(z0,5.4133,2.6347);case"equirectangular":return vo(D0,Yi,YO);case"gnomonic":return vo(U0,3.4641,3.4641);case"identity":return{type:XO};case"reflect-y":return{type:B$};case"mercator":return vo(A0,Yi,Yi);case"orthographic":return vo(G0,2,2);case"stereographic":return vo(q0,2,2);case"transverse-mercator":return vo(Y0,Yi,Yi);default:throw new Error(`unknown projection type: ${e}`)}}function U$(e,t,r,n,o){if(e===!1||e==null||typeof e=="number")return i=>i;switch(e===!0&&(e="frame"),`${e}`.toLowerCase()){case"frame":return Ec(t,r,n,o);default:throw new Error(`unknown projection clip type: ${e}`)}}function vo(e,t,r){return{type:({width:n,height:o,rotate:i,precision:a=.15,clip:s})=>{let c=e();return a!=null&&c.precision?.(a),i!=null&&c.rotate?.(i),typeof s=="number"&&c.clipAngle?.(s),n!=null&&(c.scale(Math.min(n/t,o/r)),c.translate([n/2,o/2])),c},aspectRatio:r/t}}function rg(e,t,r){let{type:n,aspectRatio:o}=vo(e,t,r);return{type:i=>{let{parallels:a,domain:s,width:c,height:f}=i,u=n(i);return a!=null&&(u.parallels(a),s===void 0&&c!=null&&u.fitSize([c,f],{type:"Sphere"})),u},aspectRatio:o}}var XO=xn({stream:e=>e}),B$=xn(Vc({point(e,t){this.stream.point(e,-t)}}));function ZO(e,t,r,n){let o=r[e],i=r[t],a=o.length,s=r[e]=new Float64Array(a).fill(NaN),c=r[t]=new Float64Array(a).fill(NaN),f,u=n.stream({point(p,l){s[f]=p,c[f]=l}});for(f=0;f5?5:c:G1}}if(e!=null){if(typeof e!="function"){let{aspectRatio:t}=K1(e);if(t)return t}return G1}}function eC(e){let t=[],r=[],n={scale:"x",value:t},o={scale:"y",value:r},i={point(a,s){t.push(a),r.push(s)},lineStart(){},lineEnd(){},polygonStart(){},polygonEnd(){},sphere(){}};for(let a of e.value)mo(a,i);return[n,o]}function tC({x:e,y:t}){if(e||t)return e??=r=>r,t??=r=>r,Vc({point(r,n){this.stream.point(e(r),t(n))}})}function yu(e={}){let{document:t=typeof window<"u"?window.document:void 0,clip:r}=e;return{document:t,clip:qh(r)}}function Le(e,{document:t}){return Vr(Ti(e).call(t.documentElement))}var ng=Symbol("unset");function og(e){return(e.length===1?G$:K$)(e)}function G$(e){let t,r=ng;return n=>(Object.is(r,n)||(r=n,t=e(n)),t)}function K$(e){let t,r;return(...n)=>((r?.length!==n.length||r.some((o,i)=>!Object.is(o,n[i])))&&(r=n,t=e(...n)),t)}var q$=og(e=>new Intl.NumberFormat(e)),DSe=og((e,t)=>new Intl.DateTimeFormat(e,{timeZone:"UTC",...t&&{month:t}})),LSe=og((e,t)=>new Intl.DateTimeFormat(e,{timeZone:"UTC",...t&&{weekday:t}}));function H$(e="en-US"){let t=q$(e);return r=>r!=null&&!isNaN(r)?t.format(r):void 0}function Y$(e){return $h(e,"Invalid Date")}function W$(e="en-US"){let t=H$(e);return r=>(r instanceof Date?Y$:typeof r=="number"?t:Ft)(r)}var si=W$();var xr=(typeof window<"u"?window.devicePixelRatio>1:typeof it>"u")?0:.5,X$=0;function nC(){return`plot-clip-${++X$}`}function oC(e,{title:t,href:r,ariaLabel:n,ariaDescription:o,ariaHidden:i,target:a,fill:s,fillOpacity:c,stroke:f,strokeWidth:u,strokeOpacity:p,strokeLinejoin:l,strokeLinecap:m,strokeMiterlimit:h,strokeDasharray:y,strokeDashoffset:b,opacity:x,mixBlendMode:g,imageFilter:S,paintOrder:w,pointerEvents:_,shapeRendering:v,channels:I},{ariaLabel:O,fill:M="currentColor",fillOpacity:E,stroke:C="none",strokeOpacity:N,strokeWidth:K,strokeLinecap:F,strokeLinejoin:T,strokeMiterlimit:V,paintOrder:D}){M===null&&(s=null,c=null),C===null&&(f=null,p=null),cr(M)?!cr(C)&&(!cr(s)||I?.fill)&&(C="none"):cr(C)&&(!cr(f)||I?.stroke)&&(M="none");let[H,G]=Jr(s,M),[Y,W]=Ct(c,E),[Z,q]=Jr(f,C),[ie,ee]=Ct(p,N),[oe,re]=Ct(x);Cs(q)||(u===void 0&&(u=K),m===void 0&&(m=F),l===void 0&&(l=T),h===void 0&&!kT(l)&&(h=V),!Cs(G)&&w===void 0&&(w=D));let[L,P]=Ct(u);return M!==null&&(e.fill=kt(G,"currentColor"),e.fillOpacity=Kl(W,1)),C!==null&&(e.stroke=kt(q,"none"),e.strokeWidth=Kl(P,1),e.strokeOpacity=Kl(ee,1),e.strokeLinejoin=kt(l,"miter"),e.strokeLinecap=kt(m,"butt"),e.strokeMiterlimit=Kl(h,4),e.strokeDasharray=kt(y,"none"),e.strokeDashoffset=kt(b,"0")),e.target=Ft(a),e.ariaLabel=Ft(O),e.ariaDescription=Ft(o),e.ariaHidden=Ft(i),e.opacity=Kl(re,1),e.mixBlendMode=kt(g,"normal"),e.imageFilter=kt(S,"none"),e.paintOrder=kt(w,"normal"),e.pointerEvents=kt(_,"auto"),e.shapeRendering=kt(v,"auto"),{title:{value:t,optional:!0,filter:null},href:{value:r,optional:!0,filter:null},ariaLabel:{value:n,optional:!0,filter:null},fill:{value:H,scale:"auto",optional:!0},fillOpacity:{value:Y,scale:"auto",optional:!0},stroke:{value:Z,scale:"auto",optional:!0},strokeOpacity:{value:ie,scale:"auto",optional:!0},strokeWidth:{value:L,optional:!0},opacity:{value:oe,scale:"auto",optional:!0}}}function Z$(e,t){t&&e.filter(r=>Rl(t[r])).append("title").call(J$,t)}function Q$(e,t){t&&e.filter(([r])=>Rl(t[r])).append("title").call(e9,t)}function J$(e,t){t&&e.text(r=>si(t[r]))}function e9(e,t){t&&e.text(([r])=>si(t[r]))}function wr(e,{target:t,tip:r},{ariaLabel:n,title:o,fill:i,fillOpacity:a,stroke:s,strokeOpacity:c,strokeWidth:f,opacity:u,href:p}){n&&he(e,"aria-label",l=>n[l]),i&&he(e,"fill",l=>i[l]),a&&he(e,"fill-opacity",l=>a[l]),s&&he(e,"stroke",l=>s[l]),c&&he(e,"stroke-opacity",l=>c[l]),f&&he(e,"stroke-width",l=>f[l]),u&&he(e,"opacity",l=>u[l]),p&&iC(e,l=>p[l],t),r||Z$(e,o)}function ig(e,{target:t,tip:r},{ariaLabel:n,title:o,fill:i,fillOpacity:a,stroke:s,strokeOpacity:c,strokeWidth:f,opacity:u,href:p}){n&&he(e,"aria-label",([l])=>n[l]),i&&he(e,"fill",([l])=>i[l]),a&&he(e,"fill-opacity",([l])=>a[l]),s&&he(e,"stroke",([l])=>s[l]),c&&he(e,"stroke-opacity",([l])=>c[l]),f&&he(e,"stroke-width",([l])=>f[l]),u&&he(e,"opacity",([l])=>u[l]),p&&iC(e,([l])=>p[l],t),r||Q$(e,o)}function t9({ariaLabel:e,title:t,fill:r,fillOpacity:n,stroke:o,strokeOpacity:i,strokeWidth:a,opacity:s,href:c},{tip:f}){return[e,f?void 0:t,r,n,o,i,a,s,c].filter(u=>u!==void 0)}function r9(e,t,r){let n=Do(e,o=>t[o]);return r===void 0&&n.size>1+e.length>>1&&tn("Warning: the implicit z channel has high cardinality. This may occur when the fill or stroke channel is associated with quantitative data rather than ordinal or categorical data. You can suppress this warning by setting the z option explicitly; if this data represents a single series, set z to null."),n.values()}function*ag(e,t,r,n){let{z:o}=r,{z:i}=n,a=t9(n,r),s=[...t,...a];for(let c of i?r9(e,i,o):[e]){let f,u;e:for(let p of c){for(let l of s)if(!Un(l[p])){u&&u.push(-1);continue e}if(f===void 0){u&&(yield u),f=a.map(l=>Bn(l[p])),u=[p];continue}u.push(p);for(let l=0;lBn(h[p])),u=[p];continue e}}u&&(yield u)}}function n9(e,t,r,n){let o,{clip:i=n.clip}=t;i==="frame"?(e=Le("svg:g",n).each(function(){this.appendChild(e.node()),e.node=()=>this}),o=i9(n,r)):i&&(o=s9(i,n)),he(e,"aria-label",t.ariaLabel),he(e,"aria-description",t.ariaDescription),he(e,"aria-hidden",t.ariaHidden),he(e,"clip-path",o)}function o9(e){let t=new WeakMap;return(r,n)=>{let o=t.get(r);if(!o){let i=nC();Vr(r.ownerSVGElement).append("clipPath").attr("id",i).call(e,r,n),t.set(r,o=`url(#${i})`)}return o}}var i9=o9((e,t,r)=>{let{width:n,height:o,marginLeft:i,marginRight:a,marginTop:s,marginBottom:c}=r;e.append("rect").attr("x",i).attr("y",s).attr("width",n-a-i).attr("height",o-s-c)}),rC=new WeakMap,a9={type:"Sphere"};function s9(e,t){let r,n;if((r=rC.get(t))||rC.set(t,r=new WeakMap),e.type==="Sphere"&&(e=a9),!(n=r.get(e))){let o=nC();Vr(t.ownerSVGElement).append("clipPath").attr("id",o).append("path").attr("d",t.path()(e)),r.set(e,n=`url(#${o})`)}return n}function Dt(e,t,r,n){n9(e,t,r,n),he(e,"class",t.className),he(e,"fill",t.fill),he(e,"fill-opacity",t.fillOpacity),he(e,"stroke",t.stroke),he(e,"stroke-width",t.strokeWidth),he(e,"stroke-opacity",t.strokeOpacity),he(e,"stroke-linejoin",t.strokeLinejoin),he(e,"stroke-linecap",t.strokeLinecap),he(e,"stroke-miterlimit",t.strokeMiterlimit),he(e,"stroke-dasharray",t.strokeDasharray),he(e,"stroke-dashoffset",t.strokeDashoffset),he(e,"shape-rendering",t.shapeRendering),he(e,"filter",t.imageFilter),he(e,"paint-order",t.paintOrder);let{pointerEvents:o=n.pointerSticky===!1?"none":void 0}=t;he(e,"pointer-events",o)}function It(e,t){c9(e,"mix-blend-mode",t.mixBlendMode),he(e,"opacity",t.opacity)}function iC(e,t,r){e.each(function(n){let o=t(n);if(o!=null){let i=this.ownerDocument.createElementNS(Lo.svg,"a");i.setAttribute("fill","inherit"),i.setAttributeNS(Lo.xlink,"href",o),r!=null&&i.setAttribute("target",r),this.parentNode.insertBefore(i,this).appendChild(this)}})}function he(e,t,r){r!=null&&e.attr(t,r)}function c9(e,t,r){r!=null&&e.style(t,r)}function Lt(e,t,{x:r,y:n},o=xr,i=xr){o+=t.dx,i+=t.dy,r?.bandwidth&&(o+=r.bandwidth()/2),n?.bandwidth&&(i+=n.bandwidth()/2),(o||i)&&e.attr("transform",`translate(${o},${i})`)}function kt(e,t){if((e=Ft(e))!==t)return e}function Kl(e,t){if((e=$t(e))!==t)return e}var u9=/^-?([_a-z]|[\240-\377]|\\[0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-f])([_a-z0-9-]|[\240-\377]|\\[0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-f])*$/i;function xu(e){if(e===void 0)return"plot-d6a7b5";if(e=`${e}`,!u9.test(e))throw new Error(`invalid class name: ${e}`);return e}function wu(e,t){if(typeof t=="string")e.property("style",t);else if(t!=null)for(let r of e)Object.assign(r.style,t)}function ci({frameAnchor:e},{width:t,height:r,marginTop:n,marginRight:o,marginBottom:i,marginLeft:a}){return[/left$/.test(e)?a:/right$/.test(e)?t-o:(a+t-o)/2,/^top/.test(e)?n:/^bottom/.test(e)?r-i:(n+r-i)/2]}var Je=class{constructor(t,r={},n={},o){let{facet:i="auto",facetAnchor:a,fx:s,fy:c,sort:f,dx:u=0,dy:p=0,margin:l=0,marginTop:m=l,marginRight:h=l,marginBottom:y=l,marginLeft:b=l,className:x,clip:g=o?.clip,channels:S,tip:w,render:_}=n;if(this.data=t,this.sort=Oa(f)?f:null,this.initializer=Gi(n).initializer,this.transform=this.initializer?n.transform:Es(n).transform,i===null||i===!1?this.facet=null:(this.facet=Ur(i===!0?"include":i,"facet",["auto","include","exclude","super"]),this.fx=t===ou&&typeof s=="string"?[s]:s,this.fy=t===ou&&typeof c=="string"?[c]:c),this.facetAnchor=HO(a),r=d1(r),S!==void 0&&(r={...f9(S),...r}),o!==void 0&&(r={...oC(this,n,o),...r}),this.channels=Object.fromEntries(Object.entries(r).map(([v,I])=>{if(au(I.value)){let{value:O,label:M=I.label,scale:E=I.scale}=I.value;I={...I,label:M,scale:E,value:O}}if(t===ou&&typeof I.value=="string"){let{value:O}=I;I={...I,value:[O]}}return[v,I]}).filter(([v,{value:I,optional:O}])=>{if(I!=null)return!0;if(O)return!1;throw new Error(`missing channel value: ${v}`)})),this.dx=+u,this.dy=+p,this.marginTop=+m,this.marginRight=+h,this.marginBottom=+y,this.marginLeft=+b,this.clip=qh(g),this.tip=l9(w),this.className=Ft(x),this.facet==="super"){if(s||c)throw new Error("super-faceting cannot use fx or fy");for(let v in this.channels){let{scale:I}=r[v];if(!(I!=="x"&&I!=="y"))throw new Error("super-faceting cannot use x or y")}}_!=null&&(this.render=H1(_,this.render))}initialize(t,r,n){let o=Bi(this.data);t===void 0&&o!=null&&(t=[Br(o)]);let i=t;this.transform!=null&&({facets:t,data:o}=this.transform(o,t,n),o=Bi(o)),t!==void 0&&(t.original=i);let a=WT(this.channels,o);return this.sort!=null&&ZT(o,t,a,r,this.sort),{data:o,facets:t,channels:a}}filter(t,r,n){for(let o in r){let{filter:i=Un}=r[o];if(i!==null){let a=n[o];t=t.filter(s=>i(a[s]))}}return t}project(t,r,n){for(let o in t)if(t[o].scale==="x"&&/^x|x$/.test(o)){let i=o.replace(/^x|x$/,"y");i in t&&t[i].scale==="y"&&ZO(o,i,r,n.projection)}}scale(t,r,n){let o=XT(t,r);return n.projection&&this.project(t,o,n),o}};function q1(...e){return e.plot=Je.prototype.plot,e}function H1(e,t){if(e==null)return t===null?void 0:t;if(t==null)return e===null?void 0:e;if(typeof e!="function")throw new TypeError(`invalid render transform: ${e}`);if(typeof t!="function")throw new TypeError(`invalid render transform: ${t}`);return function(r,n,o,i,a,s){return e.call(this,r,n,o,i,a,(c,f,u,p,l)=>t.call(this,c,f,u,p,l,s))}}function f9(e){return Object.fromEntries(Object.entries(d1(e)).map(([t,r])=>(r=typeof r=="string"?{value:r,label:t}:ii(r),r.filter===void 0&&r.scale==null&&(r={...r,filter:null}),[t,r])))}function l9(e){return e===!0?"xy":e===!1||e==null?null:typeof e=="string"?Ur(e,"tip",["x","y","xy"]):e}function As(e,t){return e?.tip===!0?{...e,tip:t}:yo(e?.tip)&&e.tip.pointer===void 0?{...e,tip:{...e.tip,pointer:t}}:e}function sC(e,t,r={}){let n=.5-xr,o=.5+xr,i=.5+xr,a=.5-xr;for(let{marginTop:y,marginRight:b,marginBottom:x,marginLeft:g}of t)y>n&&(n=y),b>o&&(o=b),x>i&&(i=x),g>a&&(a=g);let{margin:s,marginTop:c=s!==void 0?s:n,marginRight:f=s!==void 0?s:o,marginBottom:u=s!==void 0?s:i,marginLeft:p=s!==void 0?s:a}=r;c=+c,f=+f,u=+u,p=+p;let{width:l=640,height:m=p9(e,r,{width:l,marginTopDefault:n,marginRightDefault:o,marginBottomDefault:i,marginLeftDefault:a})+Math.max(0,c-n+u-i)}=r;l=+l,m=+m;let h={width:l,height:m,marginTop:c,marginRight:f,marginBottom:u,marginLeft:p};if(e.fx||e.fy){let{margin:y,marginTop:b=y!==void 0?y:c,marginRight:x=y!==void 0?y:f,marginBottom:g=y!==void 0?y:u,marginLeft:S=y!==void 0?y:p}=r.facet??{};b=+b,x=+x,g=+g,S=+S,h.facet={marginTop:b,marginRight:x,marginBottom:g,marginLeft:S}}return h}function p9({x:e,y:t,fy:r,fx:n},{projection:o,aspectRatio:i},{width:a,marginTopDefault:s,marginRightDefault:c,marginBottomDefault:f,marginLeftDefault:u}){let p=r&&r.scale.domain().length||1,l=JO(o);if(l){let h=n?n.scale.domain().length:1,y=(1.1*p-.1)/(1.1*h-.1)*l,b=Math.max(.1,Math.min(10,y));return Math.round((a-u-c)*b+s+f)}let m=t?ai(t)?t.scale.domain().length||1:Math.max(7,17/p):1;if(i!=null){if(i=+i,!(isFinite(i)&&i>0))throw new Error(`invalid aspectRatio: ${i}`);let h=aC("y",t)/(aC("x",e)*i),y=n?n.scale.bandwidth():1,b=r?r.scale.bandwidth():1,x=y*(a-u-c)-e.insetLeft-e.insetRight;return(h*x+t.insetTop+t.insetBottom)/b+s+f}return!!(t||r)*Math.max(1,Math.min(60,m*p))*20+!!n*30+60}function aC(e,t){if(!t)throw new Error(`aspectRatio requires ${e} scale`);let{type:r,domain:n}=t,o;switch(r){case"linear":case"utc":case"time":o=Number;break;case"pow":{let s=t.scale.exponent();o=c=>Math.pow(c,s);break}case"log":o=Math.log;break;case"point":case"band":return n.length;default:throw new Error(`unsupported ${e} scale for aspectRatio: ${r}`)}let[i,a]=Wt(n);return Math.abs(o(a)-o(i))}var cC=new WeakMap;function Y1(e,t,{x:r,y:n,px:o,py:i,maxRadius:a=40,channels:s,render:c,...f}={}){return a=+a,o!=null&&(r??=null,s={...s,px:{value:o,scale:"x"}}),i!=null&&(n??=null,s={...s,py:{value:i,scale:"y"}}),{x:r,y:n,channels:s,...f,render:H1(function(u,p,l,m,h,y){h={...h,pointerSticky:!1};let b=h.ownerSVGElement,{data:x}=h.getMarkState(this),g=cC.get(b);g||cC.set(b,g={sticky:!1,roots:[],renders:[]});let S=g.renders.push(q)-1,{x:w,y:_,fx:v,fy:I}=p,O=v?v(u.fx)-m.marginLeft:0,M=I?I(u.fy)-m.marginTop:0;w?.bandwidth&&(O+=w.bandwidth()/2),_?.bandwidth&&(M+=_.bandwidth()/2);let E=u.fi!=null,C;if(E){let re=g.facetStates;re||(g.facetStates=re=new Map),C=re.get(this),C||re.set(this,C=new Map)}let[N,K]=ci(this,m),{px:F,py:T}=l,V=F?re=>F[re]:X1(l,N),D=T?re=>T[re]:Z1(l,K),H,G,Y,W;function Z(re,L){if(E)if(W&&(W=cancelAnimationFrame(W)),re==null)C.delete(u.fi);else{C.set(u.fi,L),W=requestAnimationFrame(()=>{W=null;for(let[P,A]of C)if(A1)){let A=H==null?null:go(x)?x[H]:x.get(H);h.dispatchValue(A)}return P}function ie(re){if(g.sticky||re.pointerType==="mouse"&&re.buttons===1)return;let[L,P]=ma(re);L-=O,P-=M;let A=Lm.width-m.marginRight?1:e,z=Pm.height-m.marginBottom?1:t,R=null,Q=a*a;for(let X of u){let le=A*(V(X)-L),xe=z*(D(X)-P),Me=le*le+xe*xe;Me<=Q&&(R=X,Q=Me)}if(R!=null&&(e!==1||t!==1)){let X=V(R)-L,le=D(R)-P;Q=X*X+le*le}Z(R,Q)}function ee(re){re.pointerType==="mouse"&&H!=null&&(g.sticky&&g.roots.some(L=>L?.contains(re.target))||(g.sticky?(g.sticky=!1,g.renders.forEach(L=>L(null))):(g.sticky=!0,q(H)),re.stopImmediatePropagation()))}function oe(re){re.pointerType==="mouse"&&(g.sticky||Z(null))}return b.addEventListener("pointerenter",ie),b.addEventListener("pointermove",ie),b.addEventListener("pointerdown",ee),b.addEventListener("pointerleave",oe),q(null)},c)}}function uC(e){return Y1(1,1,e)}function fC(e){return Y1(1,.01,e)}function W1(e){return Y1(.01,1,e)}function X1({x1:e,x2:t,x:r=e},n){return e&&t?o=>(e[o]+t[o])/2:r?o=>r[o]:()=>n}function Z1({y1:e,y2:t,y:r=e},n){return e&&t?o=>(e[o]+t[o])/2:r?o=>r[o]:()=>n}function sg(e){return ai(e)&&e.interval===void 0?void 0:"tabular-nums"}function lC(e,t){let{label:r=e.label,tickSize:n=6,width:o=240,height:i=44+n,marginTop:a=18,marginRight:s=0,marginBottom:c=16+n,marginLeft:f=0,style:u,ticks:p=(o-f-s)/64,tickFormat:l,fontVariant:m=sg(e),round:h=!0,opacity:y,className:b}=t,x=yu(t);b=xu(b),y=Ct(y)[1],l===null&&(l=()=>null);let g=Le("svg",x).attr("class",`${b}-ramp`).attr("font-family","system-ui, sans-serif").attr("font-size",10).attr("width",o).attr("height",i).attr("viewBox",`0 0 ${o} ${i}`).call(N=>N.append("style").text(`:where(.${b}-ramp) { display: block; height: auto; height: intrinsic; max-width: 100%; overflow: visible; } -:where(.${y}-ramp text) { +:where(.${b}-ramp text) { white-space: pre; -}`)).call(wu,f),S=N=>N.selectAll(".tick line").attr("y1",a+c-i),w,_=h?(N,G)=>N.rangeRound(G):(N,G)=>N.range(G),{type:v,domain:I,range:T,interpolate:P,scale:R,pivot:C}=e;if(P){let N=T===void 0?P:jo(P.length===1?zl(P):P,T);w=_(R.copy(),_r(mt(u,o-s),Math.min(I.length+(C!==void 0),T===void 0?1/0:T.length)));let G=256,D=x.document.createElement("canvas");D.width=G,D.height=1;let O=D.getContext("2d");for(let z=0,U=G-1;zD:typeof l=="string"?$n(l):l;w=_(ys().domain([-1,T.length-1]),[u,o-s]),g.append("g").attr("fill-opacity",b).selectAll().data(T).enter().append("rect").attr("x",(D,O)=>w(O-1)).attr("y",a).attr("width",(D,O)=>w(O)-w(O-1)).attr("height",i-a-c).attr("fill",D=>D),p=We(N,(D,O)=>O),l=D=>G(N[D],D)}else w=_(wa().domain(I),[u,o-s]),g.append("g").attr("fill-opacity",b).selectAll().data(I).enter().append("rect").attr("x",w).attr("y",a).attr("width",Math.max(0,w.bandwidth()-1)).attr("height",i-a-c).attr("fill",R),S=()=>{};return g.append("g").attr("transform",`translate(0,${i-c})`).call(Pb(w).ticks(Array.isArray(p)?null:p,typeof l=="string"?l:void 0).tickFormat(typeof l=="function"?l:void 0).tickSize(n).tickValues(Array.isArray(p)?p:null)).attr("font-size",null).attr("font-family",null).attr("font-variant",Ot(m,"normal")).call(S).call(N=>N.select(".domain").remove()),r!==void 0&&g.append("text").attr("x",u).attr("y",a-6).attr("fill","currentColor").attr("font-weight","bold").text(r),g.node()}var W1=Math.PI/180;function Kl(e,{marker:t,markerStart:r=t,markerMid:n=t,markerEnd:o=t}={}){e.markerStart=X1(r),e.markerMid=X1(n),e.markerEnd=X1(o)}function X1(e){if(e==null||e===!1)return null;if(e===!0)return sO;if(typeof e=="function")return e;switch(`${e}`.toLowerCase()){case"none":return null;case"arrow":return aO("auto");case"arrow-reverse":return aO("auto-start-reverse");case"dot":return f$;case"circle":case"circle-fill":return sO;case"circle-stroke":return l$;case"tick":return Z1("auto");case"tick-x":return Z1(90);case"tick-y":return Z1(0)}throw new Error(`invalid marker: ${e}`)}function aO(e){return(t,r)=>De("svg:marker",r).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("orient",e).attr("fill","none").attr("stroke",t).attr("stroke-width",1.5).attr("stroke-linecap","round").attr("stroke-linejoin","round").call(n=>n.append("path").attr("d","M-1.5,-3l3,3l-3,3")).node()}function f$(e,t){return De("svg:marker",t).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("fill",e).attr("stroke","none").call(r=>r.append("circle").attr("r",2.5)).node()}function sO(e,t){return De("svg:marker",t).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("fill",e).attr("stroke","var(--plot-background)").attr("stroke-width",1.5).call(r=>r.append("circle").attr("r",3)).node()}function l$(e,t){return De("svg:marker",t).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("fill","var(--plot-background)").attr("stroke",e).attr("stroke-width",1.5).call(r=>r.append("circle").attr("r",3)).node()}function Z1(e){return(t,r)=>De("svg:marker",r).attr("viewBox","-3 -3 6 6").attr("markerWidth",6).attr("markerHeight",6).attr("orient",e).attr("stroke",t).call(n=>n.append("path").attr("d","M0,-3v6")).node()}var p$=0;function J1(e,t,{stroke:r},n){return fO(e,t,r&&(o=>r[o]),null,n)}function cO(e,t,{stroke:r,z:n},o){return fO(e,t,r&&(([i])=>r[i]),n,o)}var Q1=1,uO=2;function m$(e,t){let r=new Uint8Array(t.length),n=e.data().filter(i=>i.length>1),o=n.length;for(let i=0,a=eg;i1){let c=s[0];a!==(a=Bn(t[c]))&&(r[c]|=Q1)}}for(let i=o-1,a=eg;i>=0;--i){let s=n[i];if(s.length>1){let c=s[0];a!==(a=Bn(t[c]))&&(r[c]|=uO)}}return([i])=>r[i]}function fO(e,{markerStart:t,markerMid:r,markerEnd:n,stroke:o},i=()=>o,a,s){if(!t&&!r&&!n)return;let c=new Map,u=a&&m$(e,a);function f(p,l,m){return function(h){if(m&&!m(h))return;let b=i(h),y=c.get(l);y||c.set(l,y=new Map);let x=y.get(b);if(!x){let g=this.parentNode.insertBefore(l(b,s),this),S=`plot-marker-${++p$}`;g.setAttribute("id",S),y.set(b,x=`url(#${S})`)}this.setAttribute(p,x)}}t&&e.each(f("marker-start",t,u&&(p=>u(p)&Q1))),r&&u&&e.each(f("marker-start",r,p=>!(u(p)&Q1))),r&&e.each(f("marker-mid",r)),n&&e.each(f("marker-end",n,u&&(p=>u(p)&uO)))}function Su({inset:e,insetLeft:t,insetRight:r,...n}={}){return[t,r]=lO(e,t,r),{inset:e,insetLeft:t,insetRight:r,...n}}function ig({inset:e,insetTop:t,insetBottom:r,...n}={}){return[t,r]=lO(e,t,r),{inset:e,insetTop:t,insetBottom:r,...n}}function lO(e,t,r){return e===void 0&&t===void 0&&r===void 0?gr?[1,0]:[.5,.5]:[t,r]}function pO(e,{interval:t}){return e={...oi(e)},e.interval=Vh(e.interval===void 0?t:e.interval),e}function ew(e,t,r,n){let{[e]:o,[`${e}1`]:i,[`${e}2`]:a}=r,{value:s,interval:c}=pO(o,r);if(s==null||c==null&&!n)return r;let u=xo(o);if(c==null){let m,h={transform:b=>m||(m=dt(b,s)),label:u};return{...r,[e]:void 0,[`${e}1`]:i===void 0?h:i,[`${e}2`]:a===void 0&&!(i===a&&n)?h:a}}let f,p;function l(m){return p!==void 0&&m===f?p:p=We(dt(f=m,s),h=>c.floor(h))}return t({...r,[e]:void 0,[`${e}1`]:i===void 0?{transform:l,label:u}:i,[`${e}2`]:a===void 0?{transform:m=>l(m).map(h=>c.offset(h)),label:u}:a})}function mO(e,t,r){let{[e]:n}=r,{value:o,interval:i}=pO(n,r);return o==null||i==null?r:t({...r,[e]:{label:xo(n),transform:a=>{let s=We(dt(a,o),u=>i.floor(u)),c=s.map(u=>i.offset(u));return s.map(Et(s)?(u,f)=>u==null||isNaN(u=+u)||(f=c[f],f==null)||isNaN(f=+f)?void 0:new Date((u+f)/2):(u,f)=>u==null||(f=c[f],f==null)?NaN:(+u+ +f)/2)}}})}function dO(e={}){return ew("x",Su,e,!0)}function tw(e={}){return ew("x",Su,e)}function ag(e={}){return ew("y",ig,e)}function hO(e={}){return mO("x",Su,e)}function gO(e={}){return mO("y",ig,e)}var yO={ariaLabel:"rule",fill:null,stroke:"currentColor"},sg=class extends Ze{constructor(t,r={}){let{x:n,y1:o,y2:i,inset:a=0,insetTop:s=a,insetBottom:c=a}=r;super(t,{x:{value:n,scale:"x",optional:!0},y1:{value:o,scale:"y",optional:!0},y2:{value:i,scale:"y",optional:!0}},Es(r,"x"),yO),this.insetTop=Ft(s),this.insetBottom=Ft(c),Kl(this,r)}render(t,r,n,o,i){let{x:a,y:s}=r,{x:c,y1:u,y2:f}=n,{width:p,height:l,marginTop:m,marginRight:h,marginLeft:b,marginBottom:y}=o,{insetTop:x,insetBottom:g}=this;return De("svg:g",i).call($t,this,o,i).call(Dt,this,{x:c&&a},gr,0).call(S=>S.selectAll().data(t).enter().append("line").call(It,this).attr("x1",c?w=>c[w]:(b+p-h)/2).attr("x2",c?w=>c[w]:(b+p-h)/2).attr("y1",u&&!wo(s)?w=>u[w]+x:m+x).attr("y2",f&&!wo(s)?s.bandwidth?w=>f[w]+s.bandwidth()-g:w=>f[w]-g:l-y-g).call(yr,this,n).call(J1,this,n,i)).node()}},cg=class extends Ze{constructor(t,r={}){let{x1:n,x2:o,y:i,inset:a=0,insetRight:s=a,insetLeft:c=a}=r;super(t,{y:{value:i,scale:"y",optional:!0},x1:{value:n,scale:"x",optional:!0},x2:{value:o,scale:"x",optional:!0}},Es(r,"y"),yO),this.insetRight=Ft(s),this.insetLeft=Ft(c),Kl(this,r)}render(t,r,n,o,i){let{x:a,y:s}=r,{y:c,x1:u,x2:f}=n,{width:p,height:l,marginTop:m,marginRight:h,marginLeft:b,marginBottom:y}=o,{insetLeft:x,insetRight:g}=this;return De("svg:g",i).call($t,this,o,i).call(Dt,this,{y:c&&s},0,gr).call(S=>S.selectAll().data(t).enter().append("line").call(It,this).attr("x1",u&&!wo(a)?w=>u[w]+x:b+x).attr("x2",f&&!wo(a)?a.bandwidth?w=>f[w]+a.bandwidth()-g:w=>f[w]-g:p-h-g).attr("y1",c?w=>c[w]:(m+l-y)/2).attr("y2",c?w=>c[w]:(m+l-y)/2).call(yr,this,n).call(J1,this,n,i)).node()}};function As(e,t){let{x:r=nt,y:n,y1:o,y2:i,...a}=ag(t);return[o,i]=bO(n,o,i),new sg(e,{...a,x:r,y1:o,y2:i})}function vo(e,t){let{y:r=nt,x:n,x1:o,x2:i,...a}=tw(t);return[o,i]=bO(n,o,i),new cg(e,{...a,y:r,x1:o,x2:i})}function bO(e,t,r){if(e==null){if(t===void 0){if(r!==void 0)return[0,r]}else if(r===void 0)return[0,t]}else{if(t===void 0)return r===void 0?[0,e]:[e,r];if(r===void 0)return[e,t]}return[t,r]}function vu(e,...t){let r=t.length;for(let n=0,o=!0;n{let o=e[0];for(let i=0;i=0))throw new Error(`invalid lineWidth: ${f}`);this.splitLines=sw(this),this.clipLine=cw(this)}render(t,r,n,o,i){let{x:a,y:s}=r,{x:c,y:u,rotate:f,text:p,title:l,fontSize:m}=n,{rotate:h}=this,[b,y]=si(this,o);return De("svg:g",i).call($t,this,o,i).call(aw,this,p,o).call(Dt,this,{x:c&&a,y:u&&s}).call(x=>x.selectAll().data(t).enter().append("text").call(It,this).call(h$,this,p,l).attr("transform",vu`translate(${c?g=>c[g]:b},${u?g=>u[g]:y})${f?g=>` rotate(${f[g]})`:h?` rotate(${h})`:""}`).call(de,"font-size",m&&(g=>m[g])).call(yr,this,n)).node()}};function nw(e){return e==null?null:Vr(e,"textOverflow",["clip","ellipsis","clip-start","clip-end","ellipsis-start","ellipsis-middle","ellipsis-end"]).replace(/^(clip|ellipsis)$/,"$1-end")}function h$(e,t,r,n){if(!r)return;let{lineAnchor:o,lineHeight:i,textOverflow:a,splitLines:s,clipLine:c}=t;e.each(function(u){let f=s(ai(r[u])??"").map(c),p=f.length,l=o==="top"?.71:o==="bottom"?1-p:(164-p*100)/200;if(p>1){let m=0;for(let h=0;ho&&r(e,o,s)>t&&(n.push(e.slice(o,i)+(e[i-1]===IO?"-":"")),o=a),c){n.push(e.slice(o,s)),o=void 0;continue}i=s}return n}function*w$(e){let t=0,r=0,n=e.length;for(;rN.selectAll(".tick line").attr("y1",a+c-i),w,_=h?(N,K)=>N.rangeRound(K):(N,K)=>N.range(K),{type:v,domain:I,range:O,interpolate:M,scale:E,pivot:C}=e;if(M){let N=O===void 0?M:Uo(M.length===1?Bl(M):M,O);w=_(E.copy(),Tr(mt(f,o-s),Math.min(I.length+(C!==void 0),O===void 0?1/0:O.length)));let K=256,F=x.document.createElement("canvas");F.width=K,F.height=1;let T=F.getContext("2d");for(let V=0,D=K-1;VF:typeof l=="string"?$n(l):l;w=_(ys().domain([-1,O.length-1]),[f,o-s]),g.append("g").attr("fill-opacity",y).selectAll().data(O).enter().append("rect").attr("x",(F,T)=>w(T-1)).attr("y",a).attr("width",(F,T)=>w(T)-w(T-1)).attr("height",i-a-c).attr("fill",F=>F),p=Xe(N,(F,T)=>T),l=F=>K(N[F],F)}else w=_(wa().domain(I),[f,o-s]),g.append("g").attr("fill-opacity",y).selectAll().data(I).enter().append("rect").attr("x",w).attr("y",a).attr("width",Math.max(0,w.bandwidth()-1)).attr("height",i-a-c).attr("fill",E),S=()=>{};return g.append("g").attr("transform",`translate(0,${i-c})`).call(Oy(w).ticks(Array.isArray(p)?null:p,typeof l=="string"?l:void 0).tickFormat(typeof l=="function"?l:void 0).tickSize(n).tickValues(Array.isArray(p)?p:null)).attr("font-size",null).attr("font-family",null).attr("font-variant",kt(m,"normal")).call(S).call(N=>N.select(".domain").remove()),r!==void 0&&g.append("text").attr("x",f).attr("y",a-6).attr("fill","currentColor").attr("font-weight","bold").text(r),g.node()}var Q1=Math.PI/180;function ql(e,{marker:t,markerStart:r=t,markerMid:n=t,markerEnd:o=t}={}){e.markerStart=J1(r),e.markerMid=J1(n),e.markerEnd=J1(o)}function J1(e){if(e==null||e===!1)return null;if(e===!0)return mC;if(typeof e=="function")return e;switch(`${e}`.toLowerCase()){case"none":return null;case"arrow":return pC("auto");case"arrow-reverse":return pC("auto-start-reverse");case"dot":return m9;case"circle":case"circle-fill":return mC;case"circle-stroke":return d9;case"tick":return ew("auto");case"tick-x":return ew(90);case"tick-y":return ew(0)}throw new Error(`invalid marker: ${e}`)}function pC(e){return(t,r)=>Le("svg:marker",r).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("orient",e).attr("fill","none").attr("stroke",t).attr("stroke-width",1.5).attr("stroke-linecap","round").attr("stroke-linejoin","round").call(n=>n.append("path").attr("d","M-1.5,-3l3,3l-3,3")).node()}function m9(e,t){return Le("svg:marker",t).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("fill",e).attr("stroke","none").call(r=>r.append("circle").attr("r",2.5)).node()}function mC(e,t){return Le("svg:marker",t).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("fill",e).attr("stroke","var(--plot-background)").attr("stroke-width",1.5).call(r=>r.append("circle").attr("r",3)).node()}function d9(e,t){return Le("svg:marker",t).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("fill","var(--plot-background)").attr("stroke",e).attr("stroke-width",1.5).call(r=>r.append("circle").attr("r",3)).node()}function ew(e){return(t,r)=>Le("svg:marker",r).attr("viewBox","-3 -3 6 6").attr("markerWidth",6).attr("markerHeight",6).attr("orient",e).attr("stroke",t).call(n=>n.append("path").attr("d","M0,-3v6")).node()}var h9=0;function rw(e,t,{stroke:r},n){return gC(e,t,r&&(o=>r[o]),null,n)}function dC(e,t,{stroke:r,z:n},o){return gC(e,t,r&&(([i])=>r[i]),n,o)}var tw=1,hC=2;function g9(e,t){let r=new Uint8Array(t.length),n=e.data().filter(i=>i.length>1),o=n.length;for(let i=0,a=ng;i1){let c=s[0];a!==(a=Bn(t[c]))&&(r[c]|=tw)}}for(let i=o-1,a=ng;i>=0;--i){let s=n[i];if(s.length>1){let c=s[0];a!==(a=Bn(t[c]))&&(r[c]|=hC)}}return([i])=>r[i]}function gC(e,{markerStart:t,markerMid:r,markerEnd:n,stroke:o},i=()=>o,a,s){if(!t&&!r&&!n)return;let c=new Map,f=a&&g9(e,a);function u(p,l,m){return function(h){if(m&&!m(h))return;let y=i(h),b=c.get(l);b||c.set(l,b=new Map);let x=b.get(y);if(!x){let g=this.parentNode.insertBefore(l(y,s),this),S=`plot-marker-${++h9}`;g.setAttribute("id",S),b.set(y,x=`url(#${S})`)}this.setAttribute(p,x)}}t&&e.each(u("marker-start",t,f&&(p=>f(p)&tw))),r&&f&&e.each(u("marker-start",r,p=>!(f(p)&tw))),r&&e.each(u("marker-mid",r)),n&&e.each(u("marker-end",n,f&&(p=>f(p)&hC)))}function Su({inset:e,insetLeft:t,insetRight:r,...n}={}){return[t,r]=bC(e,t,r),{inset:e,insetLeft:t,insetRight:r,...n}}function cg({inset:e,insetTop:t,insetBottom:r,...n}={}){return[t,r]=bC(e,t,r),{inset:e,insetTop:t,insetBottom:r,...n}}function bC(e,t,r){return e===void 0&&t===void 0&&r===void 0?xr?[1,0]:[.5,.5]:[t,r]}function yC(e,{interval:t}){return e={...ii(e)},e.interval=Uh(e.interval===void 0?t:e.interval),e}function nw(e,t,r,n){let{[e]:o,[`${e}1`]:i,[`${e}2`]:a}=r,{value:s,interval:c}=yC(o,r);if(s==null||c==null&&!n)return r;let f=wo(o);if(c==null){let m,h={transform:y=>m||(m=dt(y,s)),label:f};return{...r,[e]:void 0,[`${e}1`]:i===void 0?h:i,[`${e}2`]:a===void 0&&!(i===a&&n)?h:a}}let u,p;function l(m){return p!==void 0&&m===u?p:p=Xe(dt(u=m,s),h=>c.floor(h))}return t({...r,[e]:void 0,[`${e}1`]:i===void 0?{transform:l,label:f}:i,[`${e}2`]:a===void 0?{transform:m=>l(m).map(h=>c.offset(h)),label:f}:a})}function xC(e,t,r){let{[e]:n}=r,{value:o,interval:i}=yC(n,r);return o==null||i==null?r:t({...r,[e]:{label:wo(n),transform:a=>{let s=Xe(dt(a,o),f=>i.floor(f)),c=s.map(f=>i.offset(f));return s.map(At(s)?(f,u)=>f==null||isNaN(f=+f)||(u=c[u],u==null)||isNaN(u=+u)?void 0:new Date((f+u)/2):(f,u)=>f==null||(u=c[u],u==null)?NaN:(+f+ +u)/2)}}})}function wC(e={}){return nw("x",Su,e,!0)}function ow(e={}){return nw("x",Su,e)}function ug(e={}){return nw("y",cg,e)}function SC(e={}){return xC("x",Su,e)}function vC(e={}){return xC("y",cg,e)}var IC={ariaLabel:"rule",fill:null,stroke:"currentColor"},fg=class extends Je{constructor(t,r={}){let{x:n,y1:o,y2:i,inset:a=0,insetTop:s=a,insetBottom:c=a}=r;super(t,{x:{value:n,scale:"x",optional:!0},y1:{value:o,scale:"y",optional:!0},y2:{value:i,scale:"y",optional:!0}},As(r,"x"),IC),this.insetTop=$t(s),this.insetBottom=$t(c),ql(this,r)}render(t,r,n,o,i){let{x:a,y:s}=r,{x:c,y1:f,y2:u}=n,{width:p,height:l,marginTop:m,marginRight:h,marginLeft:y,marginBottom:b}=o,{insetTop:x,insetBottom:g}=this;return Le("svg:g",i).call(Dt,this,o,i).call(Lt,this,{x:c&&a},xr,0).call(S=>S.selectAll().data(t).enter().append("line").call(It,this).attr("x1",c?w=>c[w]:(y+p-h)/2).attr("x2",c?w=>c[w]:(y+p-h)/2).attr("y1",f&&!So(s)?w=>f[w]+x:m+x).attr("y2",u&&!So(s)?s.bandwidth?w=>u[w]+s.bandwidth()-g:w=>u[w]-g:l-b-g).call(wr,this,n).call(rw,this,n,i)).node()}},lg=class extends Je{constructor(t,r={}){let{x1:n,x2:o,y:i,inset:a=0,insetRight:s=a,insetLeft:c=a}=r;super(t,{y:{value:i,scale:"y",optional:!0},x1:{value:n,scale:"x",optional:!0},x2:{value:o,scale:"x",optional:!0}},As(r,"y"),IC),this.insetRight=$t(s),this.insetLeft=$t(c),ql(this,r)}render(t,r,n,o,i){let{x:a,y:s}=r,{y:c,x1:f,x2:u}=n,{width:p,height:l,marginTop:m,marginRight:h,marginLeft:y,marginBottom:b}=o,{insetLeft:x,insetRight:g}=this;return Le("svg:g",i).call(Dt,this,o,i).call(Lt,this,{y:c&&s},0,xr).call(S=>S.selectAll().data(t).enter().append("line").call(It,this).attr("x1",f&&!So(a)?w=>f[w]+x:y+x).attr("x2",u&&!So(a)?a.bandwidth?w=>u[w]+a.bandwidth()-g:w=>u[w]-g:p-h-g).attr("y1",c?w=>c[w]:(m+l-b)/2).attr("y2",c?w=>c[w]:(m+l-b)/2).call(wr,this,n).call(rw,this,n,i)).node()}};function Fs(e,t){let{x:r=Ze,y:n,y1:o,y2:i,...a}=ug(t);return[o,i]=_C(n,o,i),new fg(e,{...a,x:r,y1:o,y2:i})}function Io(e,t){let{y:r=Ze,x:n,x1:o,x2:i,...a}=ow(t);return[o,i]=_C(n,o,i),new lg(e,{...a,y:r,x1:o,x2:i})}function _C(e,t,r){if(e==null){if(t===void 0){if(r!==void 0)return[0,r]}else if(r===void 0)return[0,t]}else{if(t===void 0)return r===void 0?[0,e]:[e,r];if(r===void 0)return[e,t]}return[t,r]}function vu(e,...t){let r=t.length;for(let n=0,o=!0;n{let o=e[0];for(let i=0;i=0))throw new Error(`invalid lineWidth: ${u}`);this.splitLines=fw(this),this.clipLine=lw(this)}render(t,r,n,o,i){let{x:a,y:s}=r,{x:c,y:f,rotate:u,text:p,title:l,fontSize:m}=n,{rotate:h}=this,[y,b]=ci(this,o);return Le("svg:g",i).call(Dt,this,o,i).call(uw,this,p,o).call(Lt,this,{x:c&&a,y:f&&s}).call(x=>x.selectAll().data(t).enter().append("text").call(It,this).call(y9,this,p,l).attr("transform",vu`translate(${c?g=>c[g]:y},${f?g=>f[g]:b})${u?g=>` rotate(${u[g]})`:h?` rotate(${h})`:""}`).call(he,"font-size",m&&(g=>m[g])).call(wr,this,n)).node()}};function aw(e){return e==null?null:Ur(e,"textOverflow",["clip","ellipsis","clip-start","clip-end","ellipsis-start","ellipsis-middle","ellipsis-end"]).replace(/^(clip|ellipsis)$/,"$1-end")}function y9(e,t,r,n){if(!r)return;let{lineAnchor:o,lineHeight:i,textOverflow:a,splitLines:s,clipLine:c}=t;e.each(function(f){let u=s(si(r[f])??"").map(c),p=u.length,l=o==="top"?.71:o==="bottom"?1-p:(164-p*100)/200;if(p>1){let m=0;for(let h=0;ho&&r(e,o,s)>t&&(n.push(e.slice(o,i)+(e[i-1]===CC?"-":"")),o=a),c){n.push(e.slice(o,s)),o=void 0;continue}i=s}return n}function*I9(e){let t=0,r=0,n=e.length;for(;ri.split(/\r\n?|\n/g);let n=e?fg:ug,o=t*100;return i=>x$(i,o,n)}function cw({monospace:e,lineWidth:t,textOverflow:r}){if(r==null||t==1/0)return i=>i;let n=e?fg:ug,o=t*100;switch(r){case"clip-start":return i=>SO(i,o,n,"");case"clip-end":return i=>wO(i,o,n,"");case"ellipsis-start":return i=>SO(i,o,n,Fs);case"ellipsis-middle":return i=>S$(i,o,n,Fs);case"ellipsis-end":return i=>wO(i,o,n,Fs)}}var Fs="\u2026";function $s(e,t,r,n){let o=[],i=0;for(let a=0,s=0,c=e.length;at){for(i+=n;i>t&&a>0;)s=a,a=o.pop(),i-=r(e,a,s);return[a,t-i]}i+=u,o.push(a)}return[-1,0]}function wO(e,t,r,n){e=e.trim();let o=r(n),[i]=$s(e,t,r,o);return i<0?e:e.slice(0,i).trimEnd()+n}function S$(e,t,r,n){e=e.trim();let o=r(e);if(o<=t)return e;let i=r(n)/2,[a,s]=$s(e,t/2,r,i),[c]=$s(e,o-t/2-s+i,r,-i);return c<0?n:e.slice(0,a).trimEnd()+n+e.slice(_u(e,c)).trimStart()}function SO(e,t,r,n){e=e.trim();let o=r(e);if(o<=t)return e;let i=r(n),[a]=$s(e,o-t+i,r,-i);return a<0?n:n+e.slice(_u(e,a)).trimStart()}var rw=/[\p{Combining_Mark}\p{Emoji_Modifier}]+/uy,vO=/\p{Extended_Pictographic}/uy;function _u(e,t){return t+=v$(e,t)?2:1,_$(e,t)&&(t=rw.lastIndex),I$(e,t)?_u(e,t+1):t}function _O(e,t){return e.charCodeAt(t)<128}function v$(e,t){let r=e.charCodeAt(t);if(r>=55296&&r<56320){let n=e.charCodeAt(t+1);return n>=56320&&n<57344}return!1}function I$(e,t){return e.charCodeAt(t)===8205}function _$(e,t){return _O(e,t)?!1:(rw.lastIndex=t,rw.test(e))}function PO(e,t){return _O(e,t)?!1:(vO.lastIndex=t,vO.test(e))}var P$={ariaLabel:"vector",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinejoin:"round",strokeLinecap:"round"},TO=3.5,T$=TO*5,MO={draw(e,t,r){let n=t*r/T$;e.moveTo(0,0),e.lineTo(0,-t),e.moveTo(-n,n-t),e.lineTo(0,-t),e.lineTo(n,n-t)}},M$={draw(e,t,r){e.moveTo(-r,0),e.lineTo(0,-t),e.lineTo(r,0)}},C$=new Map([["arrow",MO],["spike",M$]]);function O$(e){return e&&typeof e.draw=="function"}function k$(e){if(O$(e))return e;let t=C$.get(`${e}`.toLowerCase());if(t)return t;throw new Error(`invalid shape: ${e}`)}var lg=class extends Ze{constructor(t,r={}){let{x:n,y:o,r:i=TO,length:a,rotate:s,shape:c=MO,anchor:u="middle",frameAnchor:f}=r,[p,l]=Ct(a,12),[m,h]=Ct(s,0);super(t,{x:{value:n,scale:"x",optional:!0},y:{value:o,scale:"y",optional:!0},length:{value:p,scale:"length",optional:!0},rotate:{value:m,optional:!0}},r,P$),this.r=+i,this.length=l,this.rotate=h,this.shape=k$(c),this.anchor=Vr(u,"anchor",["start","middle","end"]),this.frameAnchor=Na(f)}render(t,r,n,o,i){let{x:a,y:s}=r,{x:c,y:u,length:f,rotate:p}=n,{length:l,rotate:m,anchor:h,shape:b,r:y}=this,[x,g]=si(this,o);return De("svg:g",i).call($t,this,o,i).call(Dt,this,{x:c&&a,y:u&&s}).call(S=>S.selectAll().data(t).enter().append("path").call(It,this).attr("transform",vu`translate(${c?w=>c[w]:x},${u?w=>u[w]:g})${p?w=>` rotate(${p[w]})`:m?` rotate(${m})`:""}${h==="start"?"":h==="end"?f?w=>` translate(0,${f[w]})`:` translate(0,${l})`:f?w=>` translate(0,${f[w]/2})`:` translate(0,${l/2})`}`).attr("d",f?w=>{let _=po();return b.draw(_,f[w],y),_}:(()=>{let w=po();return b.draw(w,l,y),w})()).call(yr,this,n)).node()}};function CO(e,t={}){let{x:r=nt,...n}=t;return new lg(e,{...n,x:r})}function OO(e,t={}){let{y:r=nt,...n}=t;return new lg(e,{...n,y:r})}function Aa(e,t){return arguments.length<2&&!Qr(e)&&(t=e,e=null),t===void 0&&(t={}),[e,t]}function pg({anchor:e}={},t){return e===void 0?t[0]:Vr(e,"anchor",t)}function kO(e){return pg(e,["left","right"])}function NO(e){return pg(e,["right","left"])}function RO(e){return pg(e,["bottom","top"])}function EO(e){return pg(e,["top","bottom"])}function fw(){let[e,t]=Aa(...arguments);return $O("y",kO(t),e,t)}function AO(){let[e,t]=Aa(...arguments);return $O("fy",NO(t),e,t)}function lw(){let[e,t]=Aa(...arguments);return DO("x",RO(t),e,t)}function FO(){let[e,t]=Aa(...arguments);return DO("fx",EO(t),e,t)}function $O(e,t,r,{color:n="currentColor",opacity:o=1,stroke:i=n,strokeOpacity:a=o,strokeWidth:s=1,fill:c=n,fillOpacity:u=o,textAnchor:f,textStroke:p,textStrokeOpacity:l,textStrokeWidth:m,tickSize:h=e==="y"?6:0,tickPadding:b,tickRotate:y,x,margin:g,marginTop:S=g===void 0?20:g,marginRight:w=g===void 0?t==="right"?40:0:g,marginBottom:_=g===void 0?20:g,marginLeft:v=g===void 0?t==="left"?40:0:g,label:I,labelAnchor:T,labelArrow:P,labelOffset:R,ariaLabel:C=`${e}-axis`,...N}){return h=Ft(h),b=Ft(b),y=Ft(y),T!==void 0&&(T=Vr(T,"labelAnchor",["center","top","bottom"])),P=WO(P),B1(h&&!ir(i)?N$(e,t,r,{stroke:i,strokeOpacity:a,strokeWidth:s,tickSize:h,tickPadding:b,tickRotate:y,x,ariaLabel:C,...N}):null,ir(c)?null:E$(e,t,r,{fill:c,fillOpacity:u,stroke:p,strokeOpacity:l,strokeWidth:m,textAnchor:f,tickSize:h,tickPadding:b,tickRotate:y,x,marginTop:S,marginRight:w,marginBottom:_,marginLeft:v,ariaLabel:C,...N}),!ir(c)&&I!==null?Ea([],KO({fill:c,fillOpacity:u,...N},function(G,D,O,z,U){let W=z[e],{marginTop:B,marginRight:q,marginBottom:X,marginLeft:J}=e==="y"&&U.inset||U,A=T??(W.bandwidth?"center":"top"),K=R??(t==="right"?q:J)-3;return A==="center"?(this.textAnchor=void 0,this.lineAnchor=t==="right"?"bottom":"top",this.frameAnchor=t,this.rotate=-90):(this.textAnchor=t==="right"?"end":"start",this.lineAnchor=A,this.frameAnchor=`${A}-${t}`,this.rotate=0),this.dy=A==="top"?3-B:A==="bottom"?X-3:0,this.dx=t==="right"?K:-K,this.ariaLabel=`${C} label`,{facets:[[0]],channels:{text:{value:[YO(e,W,{anchor:t,label:I,labelAnchor:A,labelArrow:P})]}}}})):null)}function DO(e,t,r,{color:n="currentColor",opacity:o=1,stroke:i=n,strokeOpacity:a=o,strokeWidth:s=1,fill:c=n,fillOpacity:u=o,textAnchor:f,textStroke:p,textStrokeOpacity:l,textStrokeWidth:m,tickSize:h=e==="x"?6:0,tickPadding:b,tickRotate:y,y:x,margin:g,marginTop:S=g===void 0?t==="top"?30:0:g,marginRight:w=g===void 0?20:g,marginBottom:_=g===void 0?t==="bottom"?30:0:g,marginLeft:v=g===void 0?20:g,label:I,labelAnchor:T,labelArrow:P,labelOffset:R,ariaLabel:C=`${e}-axis`,...N}){return h=Ft(h),b=Ft(b),y=Ft(y),T!==void 0&&(T=Vr(T,"labelAnchor",["center","left","right"])),P=WO(P),B1(h&&!ir(i)?R$(e,t,r,{stroke:i,strokeOpacity:a,strokeWidth:s,tickSize:h,tickPadding:b,tickRotate:y,y:x,ariaLabel:C,...N}):null,ir(c)?null:A$(e,t,r,{fill:c,fillOpacity:u,stroke:p,strokeOpacity:l,strokeWidth:m,textAnchor:f,tickSize:h,tickPadding:b,tickRotate:y,y:x,marginTop:S,marginRight:w,marginBottom:_,marginLeft:v,ariaLabel:C,...N}),!ir(c)&&I!==null?Ea([],KO({fill:c,fillOpacity:u,...N},function(G,D,O,z,U){let W=z[e],{marginTop:B,marginRight:q,marginBottom:X,marginLeft:J}=e==="x"&&U.inset||U,A=T??(W.bandwidth?"center":"right"),K=R??(t==="top"?B:X)-3;return A==="center"?(this.frameAnchor=t,this.textAnchor=void 0):(this.frameAnchor=`${t}-${A}`,this.textAnchor=A==="right"?"end":"start"),this.lineAnchor=t,this.dy=t==="top"?-K:K,this.dx=A==="right"?q-3:A==="left"?3-J:0,this.ariaLabel=`${C} label`,{facets:[[0]],channels:{text:{value:[YO(e,W,{anchor:t,label:I,labelAnchor:A,labelArrow:P})]}}}})):null)}function N$(e,t,r,{strokeWidth:n=1,strokeLinecap:o=null,strokeLinejoin:i=null,facetAnchor:a=t+(e==="y"?"-empty":""),frameAnchor:s=t,tickSize:c,inset:u=0,insetLeft:f=u,insetRight:p=u,dx:l=0,y:m=e==="y"?void 0:null,ariaLabel:h,...b}){return Pu(OO,e,r,{ariaLabel:`${h} tick`,ariaHidden:!0},{strokeWidth:n,strokeLinecap:o,strokeLinejoin:i,facetAnchor:a,frameAnchor:s,y:m,...b,dx:t==="left"?+l-gr+ +f:+l+gr-p,anchor:"start",length:c,shape:t==="left"?L$:V$})}function R$(e,t,r,{strokeWidth:n=1,strokeLinecap:o=null,strokeLinejoin:i=null,facetAnchor:a=t+(e==="x"?"-empty":""),frameAnchor:s=t,tickSize:c,inset:u=0,insetTop:f=u,insetBottom:p=u,dy:l=0,x:m=e==="x"?void 0:null,ariaLabel:h,...b}){return Pu(CO,e,r,{ariaLabel:`${h} tick`,ariaHidden:!0},{strokeWidth:n,strokeLinejoin:i,strokeLinecap:o,facetAnchor:a,frameAnchor:s,x:m,...b,dy:t==="bottom"?+l-gr-p:+l+gr+ +f,anchor:"start",length:c,shape:t==="bottom"?$$:D$})}function E$(e,t,r,{facetAnchor:n=t+(e==="y"?"-empty":""),frameAnchor:o=t,tickSize:i,tickRotate:a=0,tickPadding:s=Math.max(3,9-i)+(Math.abs(a)>60?4*Math.cos(a*W1):0),text:c,textAnchor:u=Math.abs(a)>60?"middle":t==="left"?"end":"start",lineAnchor:f=a>60?"top":a<-60?"bottom":"middle",fontVariant:p,inset:l=0,insetLeft:m=l,insetRight:h=l,dx:b=0,ariaLabel:y,y:x=e==="y"?void 0:null,...g}){return Pu(iw,e,r,{ariaLabel:`${y} tick label`},{facetAnchor:n,frameAnchor:o,text:c,textAnchor:u,lineAnchor:f,fontVariant:p,rotate:a,y:x,...g,dx:t==="left"?+b-i-s+ +m:+b+ +i+ +s-h},function(S,w,_,v,I){p===void 0&&(this.fontVariant=HO(S)),c===void 0&&(I.text=qO(S,w,_,v,t))})}function A$(e,t,r,{facetAnchor:n=t+(e==="x"?"-empty":""),frameAnchor:o=t,tickSize:i,tickRotate:a=0,tickPadding:s=Math.max(3,9-i)+(Math.abs(a)>=10?4*Math.cos(a*W1):0),text:c,textAnchor:u=Math.abs(a)>=10?a<0^t==="bottom"?"start":"end":"middle",lineAnchor:f=Math.abs(a)>=10?"middle":t==="bottom"?"top":"bottom",fontVariant:p,inset:l=0,insetTop:m=l,insetBottom:h=l,dy:b=0,x:y=e==="x"?void 0:null,ariaLabel:x,...g}){return Pu(ow,e,r,{ariaLabel:`${x} tick label`},{facetAnchor:n,frameAnchor:o,text:c===void 0?null:c,textAnchor:u,lineAnchor:f,fontVariant:p,rotate:a,x:y,...g,dy:t==="bottom"?+b+ +i+ +s-h:+b-i-s+ +m},function(S,w,_,v,I){p===void 0&&(this.fontVariant=HO(S)),c===void 0&&(I.text=qO(S,w,_,v,t))})}function LO(){let[e,t]=Aa(...arguments);return zO("y",kO(t),e,t)}function VO(){let[e,t]=Aa(...arguments);return zO("fy",NO(t),e,t)}function jO(){let[e,t]=Aa(...arguments);return BO("x",RO(t),e,t)}function UO(){let[e,t]=Aa(...arguments);return BO("fx",EO(t),e,t)}function zO(e,t,r,{y:n=e==="y"?void 0:null,x:o=null,x1:i=t==="left"?o:null,x2:a=t==="right"?o:null,ariaLabel:s=`${e}-grid`,ariaHidden:c=!0,...u}){return Pu(vo,e,r,{ariaLabel:s,ariaHidden:c},{y:n,x1:i,x2:a,...GO(u)})}function BO(e,t,r,{x:n=e==="x"?void 0:null,y:o=null,y1:i=t==="top"?o:null,y2:a=t==="bottom"?o:null,ariaLabel:s=`${e}-grid`,ariaHidden:c=!0,...u}){return Pu(As,e,r,{ariaLabel:s,ariaHidden:c},{x:n,y1:i,y2:a,...GO(u)})}function GO({color:e="currentColor",opacity:t=.1,stroke:r=e,strokeOpacity:n=t,strokeWidth:o=1,...i}){return{stroke:r,strokeOpacity:n,strokeWidth:o,...i}}function KO({fill:e,fillOpacity:t,fontFamily:r,fontSize:n,fontStyle:o,fontVariant:i,fontWeight:a,monospace:s,pointerEvents:c,shapeRendering:u,clip:f=!1},p){return[,e]=Zr(e),[,t]=Ct(t),{facet:"super",x:null,y:null,fill:e,fillOpacity:t,fontFamily:r,fontSize:n,fontStyle:o,fontVariant:i,fontWeight:a,monospace:s,pointerEvents:c,shapeRendering:u,clip:f,initializer:p}}function Pu(e,t,r,n,o,i){let a;function s(f,p,l,m,h,b){let y=f==null&&(t==="fx"||t==="fy"),{[t]:x}=m;if(!x)throw new Error(`missing scale: ${t}`);let g=x.domain(),{interval:S,ticks:w,tickFormat:_,tickSpacing:v=t==="x"?80:35}=o;if(typeof w=="string"&&XO(x)&&(S=w,w=void 0),w===void 0&&(w=ni(S,x.type)??F$(x,v)),f==null){if(Qr(w))f=ri(w);else if(ka(w))f=uw(w,...Yt(g));else if(x.interval){let T=x.interval;if(x.ticks){let[P,R]=Yt(g),C=(R-P)/T[nu];T=Qx(T,C/w)??T,f=uw(T,P,R)}else{f=g;let P=f.length;T=Qx(T,P/w)??T,T!==x.interval&&(f=uw(T,...Yt(f)))}if(T===x.interval){let P=Math.round(f.length/w);P>1&&(f=f.filter((R,C)=>C%P===0))}}else x.ticks?f=x.ticks(w):f=g;if(!x.ticks&&f.length&&f!==g){let T=new so(g);f=f.filter(P=>T.has(P)),f.length||Jr(`Warning: the ${t}-axis ticks appear to not align with the scale domain, resulting in no ticks. Try different ticks?`)}t==="y"||t==="x"?p=[jr(f)]:a[t]={scale:t,value:nt}}i?.call(this,x,f,w,_,a);let I=Object.fromEntries(Object.entries(a).map(([T,P])=>[T,{...P,value:dt(f,P.value)}]));return y&&(p=b.filterFacets(f,I)),{data:f,facets:p,channels:I}}let c=Bi(o).initializer,u=e(r,Bi({...o,initializer:s},c));return r==null?(a=u.channels,u.channels={}):a={},n!==void 0&&Object.assign(u,n),u.clip===void 0&&(u.clip=!1),u}function F$(e,t){let[r,n]=Yt(e.range());return(n-r)/t}function qO(e,t,r,n,o){return{value:ql(e,t,r,n,o)}}function ql(e,t,r,n,o){return typeof n=="function"&&!(e.type==="log"&&e.tickFormat)?n:n===void 0&&t&&Et(t)?oM(e.type,t,o)??ai:e.tickFormat?e.tickFormat(typeof r=="number"?r:null,n):typeof n=="string"&&e.domain().length>0?(Et(e.domain())?Zo:$n)(n):n===void 0?ai:bn(n)}function uw(e,t,r){return e.range(t,e.offset(e.floor(r)))}var $$={draw(e,t){e.moveTo(0,0),e.lineTo(0,t)}},D$={draw(e,t){e.moveTo(0,0),e.lineTo(0,-t)}},L$={draw(e,t){e.moveTo(0,0),e.lineTo(-t,0)}},V$={draw(e,t){e.moveTo(0,0),e.lineTo(t,0)}};function HO(e){return e.bandwidth&&!e.interval?void 0:"tabular-nums"}function YO(e,t,{anchor:r,label:n=t.label,labelAnchor:o,labelArrow:i}={}){if(!(n==null||n.inferred&&XO(t)&&/^(date|time|year)$/i.test(n))){if(n=String(n),i==="auto"&&(i=(!t.bandwidth||t.interval)&&!/[↑↓→←]/.test(n)),!i)return n;if(i===!0){let a=RC(t);a&&(i=/x$/.test(e)||o==="center"?/x$/.test(e)===a<0?"left":"right":a<0?"up":"down")}switch(i){case"left":return`\u2190 ${n}`;case"right":return`${n} \u2192`;case"up":return r==="right"?`${n} \u2191`:`\u2191 ${n}`;case"down":return r==="right"?`${n} \u2193`:`\u2193 ${n}`}return n}}function WO(e="auto"){return ir(e)?!1:typeof e=="boolean"?e:Vr(e,"labelArrow",["auto","up","right","down","left"])}function XO(e){return Et(e.domain())}function ZO(e,t){if(t==null)return t;let r=e(t);if(!r)throw new Error(`scale not found: ${t}`);return r}function QO(e,{opacity:t,...r}={}){if(!ii(e)&&!F1(e))throw new Error(`swatches legend requires ordinal or threshold color scale (not ${e.type})`);return ek(e,r,(n,o,i,a)=>n.append("svg").attr("width",i).attr("height",a).attr("fill",o.scale).attr("fill-opacity",Ct(t)[1]).append("rect").attr("width","100%").attr("height","100%"))}function JO(e,{fill:t=e.hint?.fill!==void 0?e.hint.fill:"none",fillOpacity:r=1,stroke:n=e.hint?.stroke!==void 0?e.hint.stroke:ir(t)?"currentColor":"none",strokeOpacity:o=1,strokeWidth:i=1.5,r:a=4.5,...s}={},c){let[u,f]=Zr(t),[p,l]=Zr(n),m=ZO(c,u),h=ZO(c,p),b=a*a*Math.PI;return r=Ct(r)[1],o=Ct(o)[1],i=Ct(i)[1],ek(e,s,(y,x,g,S)=>y.append("svg").attr("viewBox","-8 -8 16 16").attr("width",g).attr("height",S).attr("fill",u==="color"?w=>m.scale(w):f).attr("fill-opacity",r).attr("stroke",p==="color"?w=>h.scale(w):l).attr("stroke-opacity",o).attr("stroke-width",i).append("path").attr("d",w=>{let _=po();return e.scale(w).draw(_,b),_}))}function ek(e,t={},r){let{columns:n,tickFormat:o,fontVariant:i=og(e),swatchSize:a=15,swatchWidth:s=a,swatchHeight:c=a,marginLeft:u=0,className:f,style:p,width:l}=t,m=bu(t);f=xu(f),o=ql(e.scale,e.domain,void 0,o);let h=De("div",m).attr("class",`${f}-swatches ${f}-swatches-${n!=null?"columns":"wrap"}`),b;return n!=null?(b=`:where(.${f}-swatches-columns .${f}-swatch) { +`:yield[t,r,!0],r+=o,t=r;break;default:++r;break}}yield[t,r,!0]}var PC={a:56,b:63,c:57,d:63,e:58,f:37,g:62,h:60,i:26,j:26,k:55,l:26,m:88,n:60,o:60,p:62,q:62,r:39,s:54,t:38,u:60,v:55,w:79,x:54,y:55,z:55,A:69,B:67,C:73,D:74,E:61,F:58,G:76,H:75,I:28,J:55,K:67,L:58,M:89,N:75,O:78,P:65,Q:78,R:67,S:65,T:65,U:75,V:69,W:98,X:69,Y:67,Z:67,0:64,1:48,2:62,3:64,4:66,5:63,6:65,7:58,8:65,9:65," ":29,"!":32,'"':49,"'":31,"(":39,")":39,",":31,"-":48,".":31,"/":32,":":31,";":31,"?":52,"\u2018":31,"\u2019":31,"\u201C":47,"\u201D":47,"\u2026":82};function pg(e,t=0,r=e.length){let n=0;for(let o=t;oi.split(/\r\n?|\n/g);let n=e?mg:pg,o=t*100;return i=>v9(i,o,n)}function lw({monospace:e,lineWidth:t,textOverflow:r}){if(r==null||t==1/0)return i=>i;let n=e?mg:pg,o=t*100;switch(r){case"clip-start":return i=>TC(i,o,n,"");case"clip-end":return i=>MC(i,o,n,"");case"ellipsis-start":return i=>TC(i,o,n,$s);case"ellipsis-middle":return i=>_9(i,o,n,$s);case"ellipsis-end":return i=>MC(i,o,n,$s)}}var $s="\u2026";function Ds(e,t,r,n){let o=[],i=0;for(let a=0,s=0,c=e.length;at){for(i+=n;i>t&&a>0;)s=a,a=o.pop(),i-=r(e,a,s);return[a,t-i]}i+=f,o.push(a)}return[-1,0]}function MC(e,t,r,n){e=e.trim();let o=r(n),[i]=Ds(e,t,r,o);return i<0?e:e.slice(0,i).trimEnd()+n}function _9(e,t,r,n){e=e.trim();let o=r(e);if(o<=t)return e;let i=r(n)/2,[a,s]=Ds(e,t/2,r,i),[c]=Ds(e,o-t/2-s+i,r,-i);return c<0?n:e.slice(0,a).trimEnd()+n+e.slice(_u(e,c)).trimStart()}function TC(e,t,r,n){e=e.trim();let o=r(e);if(o<=t)return e;let i=r(n),[a]=Ds(e,o-t+i,r,-i);return a<0?n:n+e.slice(_u(e,a)).trimStart()}var iw=/[\p{Combining_Mark}\p{Emoji_Modifier}]+/uy,OC=/\p{Extended_Pictographic}/uy;function _u(e,t){return t+=P9(e,t)?2:1,T9(e,t)&&(t=iw.lastIndex),M9(e,t)?_u(e,t+1):t}function kC(e,t){return e.charCodeAt(t)<128}function P9(e,t){let r=e.charCodeAt(t);if(r>=55296&&r<56320){let n=e.charCodeAt(t+1);return n>=56320&&n<57344}return!1}function M9(e,t){return e.charCodeAt(t)===8205}function T9(e,t){return kC(e,t)?!1:(iw.lastIndex=t,iw.test(e))}function NC(e,t){return kC(e,t)?!1:(OC.lastIndex=t,OC.test(e))}var O9={ariaLabel:"vector",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinejoin:"round",strokeLinecap:"round"},RC=3.5,C9=RC*5,EC={draw(e,t,r){let n=t*r/C9;e.moveTo(0,0),e.lineTo(0,-t),e.moveTo(-n,n-t),e.lineTo(0,-t),e.lineTo(n,n-t)}},k9={draw(e,t,r){e.moveTo(-r,0),e.lineTo(0,-t),e.lineTo(r,0)}},N9=new Map([["arrow",EC],["spike",k9]]);function R9(e){return e&&typeof e.draw=="function"}function E9(e){if(R9(e))return e;let t=N9.get(`${e}`.toLowerCase());if(t)return t;throw new Error(`invalid shape: ${e}`)}var dg=class extends Je{constructor(t,r={}){let{x:n,y:o,r:i=RC,length:a,rotate:s,shape:c=EC,anchor:f="middle",frameAnchor:u}=r,[p,l]=Ct(a,12),[m,h]=Ct(s,0);super(t,{x:{value:n,scale:"x",optional:!0},y:{value:o,scale:"y",optional:!0},length:{value:p,scale:"length",optional:!0},rotate:{value:m,optional:!0}},r,O9),this.r=+i,this.length=l,this.rotate=h,this.shape=E9(c),this.anchor=Ur(f,"anchor",["start","middle","end"]),this.frameAnchor=Na(u)}render(t,r,n,o,i){let{x:a,y:s}=r,{x:c,y:f,length:u,rotate:p}=n,{length:l,rotate:m,anchor:h,shape:y,r:b}=this,[x,g]=ci(this,o);return Le("svg:g",i).call(Dt,this,o,i).call(Lt,this,{x:c&&a,y:f&&s}).call(S=>S.selectAll().data(t).enter().append("path").call(It,this).attr("transform",vu`translate(${c?w=>c[w]:x},${f?w=>f[w]:g})${p?w=>` rotate(${p[w]})`:m?` rotate(${m})`:""}${h==="start"?"":h==="end"?u?w=>` translate(0,${u[w]})`:` translate(0,${l})`:u?w=>` translate(0,${u[w]/2})`:` translate(0,${l/2})`}`).attr("d",u?w=>{let _=po();return y.draw(_,u[w],b),_}:(()=>{let w=po();return y.draw(w,l,b),w})()).call(wr,this,n)).node()}};function AC(e,t={}){let{x:r=Ze,...n}=t;return new dg(e,{...n,x:r})}function FC(e,t={}){let{y:r=Ze,...n}=t;return new dg(e,{...n,y:r})}function Aa(e,t){return arguments.length<2&&!en(e)&&(t=e,e=null),t===void 0&&(t={}),[e,t]}function hg({anchor:e}={},t){return e===void 0?t[0]:Ur(e,"anchor",t)}function $C(e){return hg(e,["left","right"])}function DC(e){return hg(e,["right","left"])}function LC(e){return hg(e,["bottom","top"])}function VC(e){return hg(e,["top","bottom"])}function mw(){let[e,t]=Aa(...arguments);return UC("y",$C(t),e,t)}function zC(){let[e,t]=Aa(...arguments);return UC("fy",DC(t),e,t)}function dw(){let[e,t]=Aa(...arguments);return BC("x",LC(t),e,t)}function jC(){let[e,t]=Aa(...arguments);return BC("fx",VC(t),e,t)}function UC(e,t,r,{color:n="currentColor",opacity:o=1,stroke:i=n,strokeOpacity:a=o,strokeWidth:s=1,fill:c=n,fillOpacity:f=o,textAnchor:u,textStroke:p,textStrokeOpacity:l,textStrokeWidth:m,tickSize:h=e==="y"?6:0,tickPadding:y,tickRotate:b,x,margin:g,marginTop:S=g===void 0?20:g,marginRight:w=g===void 0?t==="right"?40:0:g,marginBottom:_=g===void 0?20:g,marginLeft:v=g===void 0?t==="left"?40:0:g,label:I,labelAnchor:O,labelArrow:M,labelOffset:E,ariaLabel:C=`${e}-axis`,...N}){return h=$t(h),y=$t(y),b=$t(b),O!==void 0&&(O=Ur(O,"labelAnchor",["center","top","bottom"])),M=tk(M),q1(h&&!cr(i)?A9(e,t,r,{stroke:i,strokeOpacity:a,strokeWidth:s,tickSize:h,tickPadding:y,tickRotate:b,x,ariaLabel:C,...N}):null,cr(c)?null:$9(e,t,r,{fill:c,fillOpacity:f,stroke:p,strokeOpacity:l,strokeWidth:m,textAnchor:u,tickSize:h,tickPadding:y,tickRotate:b,x,marginTop:S,marginRight:w,marginBottom:_,marginLeft:v,ariaLabel:C,...N}),!cr(c)&&I!==null?Ea([],ZC({fill:c,fillOpacity:f,...N},function(K,F,T,V,D){let H=V[e],{marginTop:G,marginRight:Y,marginBottom:W,marginLeft:Z}=e==="y"&&D.inset||D,q=O??(H.bandwidth?"center":"top"),ie=E??(t==="right"?Y:Z)-3;return q==="center"?(this.textAnchor=void 0,this.lineAnchor=t==="right"?"bottom":"top",this.frameAnchor=t,this.rotate=-90):(this.textAnchor=t==="right"?"end":"start",this.lineAnchor=q,this.frameAnchor=`${q}-${t}`,this.rotate=0),this.dy=q==="top"?3-G:q==="bottom"?W-3:0,this.dx=t==="right"?ie:-ie,this.ariaLabel=`${C} label`,{facets:[[0]],channels:{text:{value:[ek(e,H,{anchor:t,label:I,labelAnchor:q,labelArrow:M})]}}}})):null)}function BC(e,t,r,{color:n="currentColor",opacity:o=1,stroke:i=n,strokeOpacity:a=o,strokeWidth:s=1,fill:c=n,fillOpacity:f=o,textAnchor:u,textStroke:p,textStrokeOpacity:l,textStrokeWidth:m,tickSize:h=e==="x"?6:0,tickPadding:y,tickRotate:b,y:x,margin:g,marginTop:S=g===void 0?t==="top"?30:0:g,marginRight:w=g===void 0?20:g,marginBottom:_=g===void 0?t==="bottom"?30:0:g,marginLeft:v=g===void 0?20:g,label:I,labelAnchor:O,labelArrow:M,labelOffset:E,ariaLabel:C=`${e}-axis`,...N}){return h=$t(h),y=$t(y),b=$t(b),O!==void 0&&(O=Ur(O,"labelAnchor",["center","left","right"])),M=tk(M),q1(h&&!cr(i)?F9(e,t,r,{stroke:i,strokeOpacity:a,strokeWidth:s,tickSize:h,tickPadding:y,tickRotate:b,y:x,ariaLabel:C,...N}):null,cr(c)?null:D9(e,t,r,{fill:c,fillOpacity:f,stroke:p,strokeOpacity:l,strokeWidth:m,textAnchor:u,tickSize:h,tickPadding:y,tickRotate:b,y:x,marginTop:S,marginRight:w,marginBottom:_,marginLeft:v,ariaLabel:C,...N}),!cr(c)&&I!==null?Ea([],ZC({fill:c,fillOpacity:f,...N},function(K,F,T,V,D){let H=V[e],{marginTop:G,marginRight:Y,marginBottom:W,marginLeft:Z}=e==="x"&&D.inset||D,q=O??(H.bandwidth?"center":"right"),ie=E??(t==="top"?G:W)-3;return q==="center"?(this.frameAnchor=t,this.textAnchor=void 0):(this.frameAnchor=`${t}-${q}`,this.textAnchor=q==="right"?"end":"start"),this.lineAnchor=t,this.dy=t==="top"?-ie:ie,this.dx=q==="right"?Y-3:q==="left"?3-Z:0,this.ariaLabel=`${C} label`,{facets:[[0]],channels:{text:{value:[ek(e,H,{anchor:t,label:I,labelAnchor:q,labelArrow:M})]}}}})):null)}function A9(e,t,r,{strokeWidth:n=1,strokeLinecap:o=null,strokeLinejoin:i=null,facetAnchor:a=t+(e==="y"?"-empty":""),frameAnchor:s=t,tickSize:c,inset:f=0,insetLeft:u=f,insetRight:p=f,dx:l=0,y:m=e==="y"?void 0:null,ariaLabel:h,...y}){return Pu(FC,e,r,{ariaLabel:`${h} tick`,ariaHidden:!0},{strokeWidth:n,strokeLinecap:o,strokeLinejoin:i,facetAnchor:a,frameAnchor:s,y:m,...y,dx:t==="left"?+l-xr+ +u:+l+xr-p,anchor:"start",length:c,shape:t==="left"?j9:U9})}function F9(e,t,r,{strokeWidth:n=1,strokeLinecap:o=null,strokeLinejoin:i=null,facetAnchor:a=t+(e==="x"?"-empty":""),frameAnchor:s=t,tickSize:c,inset:f=0,insetTop:u=f,insetBottom:p=f,dy:l=0,x:m=e==="x"?void 0:null,ariaLabel:h,...y}){return Pu(AC,e,r,{ariaLabel:`${h} tick`,ariaHidden:!0},{strokeWidth:n,strokeLinejoin:i,strokeLinecap:o,facetAnchor:a,frameAnchor:s,x:m,...y,dy:t==="bottom"?+l-xr-p:+l+xr+ +u,anchor:"start",length:c,shape:t==="bottom"?V9:z9})}function $9(e,t,r,{facetAnchor:n=t+(e==="y"?"-empty":""),frameAnchor:o=t,tickSize:i,tickRotate:a=0,tickPadding:s=Math.max(3,9-i)+(Math.abs(a)>60?4*Math.cos(a*Q1):0),text:c,textAnchor:f=Math.abs(a)>60?"middle":t==="left"?"end":"start",lineAnchor:u=a>60?"top":a<-60?"bottom":"middle",fontVariant:p,inset:l=0,insetLeft:m=l,insetRight:h=l,dx:y=0,ariaLabel:b,y:x=e==="y"?void 0:null,...g}){return Pu(cw,e,r,{ariaLabel:`${b} tick label`},{facetAnchor:n,frameAnchor:o,text:c,textAnchor:f,lineAnchor:u,fontVariant:p,rotate:a,y:x,...g,dx:t==="left"?+y-i-s+ +m:+y+ +i+ +s-h},function(S,w,_,v,I){p===void 0&&(this.fontVariant=JC(S)),c===void 0&&(I.text=QC(S,w,_,v,t))})}function D9(e,t,r,{facetAnchor:n=t+(e==="x"?"-empty":""),frameAnchor:o=t,tickSize:i,tickRotate:a=0,tickPadding:s=Math.max(3,9-i)+(Math.abs(a)>=10?4*Math.cos(a*Q1):0),text:c,textAnchor:f=Math.abs(a)>=10?a<0^t==="bottom"?"start":"end":"middle",lineAnchor:u=Math.abs(a)>=10?"middle":t==="bottom"?"top":"bottom",fontVariant:p,inset:l=0,insetTop:m=l,insetBottom:h=l,dy:y=0,x:b=e==="x"?void 0:null,ariaLabel:x,...g}){return Pu(sw,e,r,{ariaLabel:`${x} tick label`},{facetAnchor:n,frameAnchor:o,text:c===void 0?null:c,textAnchor:f,lineAnchor:u,fontVariant:p,rotate:a,x:b,...g,dy:t==="bottom"?+y+ +i+ +s-h:+y-i-s+ +m},function(S,w,_,v,I){p===void 0&&(this.fontVariant=JC(S)),c===void 0&&(I.text=QC(S,w,_,v,t))})}function GC(){let[e,t]=Aa(...arguments);return YC("y",$C(t),e,t)}function KC(){let[e,t]=Aa(...arguments);return YC("fy",DC(t),e,t)}function qC(){let[e,t]=Aa(...arguments);return WC("x",LC(t),e,t)}function HC(){let[e,t]=Aa(...arguments);return WC("fx",VC(t),e,t)}function YC(e,t,r,{y:n=e==="y"?void 0:null,x:o=null,x1:i=t==="left"?o:null,x2:a=t==="right"?o:null,ariaLabel:s=`${e}-grid`,ariaHidden:c=!0,...f}){return Pu(Io,e,r,{ariaLabel:s,ariaHidden:c},{y:n,x1:i,x2:a,...XC(f)})}function WC(e,t,r,{x:n=e==="x"?void 0:null,y:o=null,y1:i=t==="top"?o:null,y2:a=t==="bottom"?o:null,ariaLabel:s=`${e}-grid`,ariaHidden:c=!0,...f}){return Pu(Fs,e,r,{ariaLabel:s,ariaHidden:c},{x:n,y1:i,y2:a,...XC(f)})}function XC({color:e="currentColor",opacity:t=.1,stroke:r=e,strokeOpacity:n=t,strokeWidth:o=1,...i}){return{stroke:r,strokeOpacity:n,strokeWidth:o,...i}}function ZC({fill:e,fillOpacity:t,fontFamily:r,fontSize:n,fontStyle:o,fontVariant:i,fontWeight:a,monospace:s,pointerEvents:c,shapeRendering:f,clip:u=!1},p){return[,e]=Jr(e),[,t]=Ct(t),{facet:"super",x:null,y:null,fill:e,fillOpacity:t,fontFamily:r,fontSize:n,fontStyle:o,fontVariant:i,fontWeight:a,monospace:s,pointerEvents:c,shapeRendering:f,clip:u,initializer:p}}function Pu(e,t,r,n,o,i){let a;function s(u,p,l,m,h,y){let b=u==null&&(t==="fx"||t==="fy"),{[t]:x}=m;if(!x)throw new Error(`missing scale: ${t}`);let g=x.domain(),{interval:S,ticks:w,tickFormat:_,tickSpacing:v=t==="x"?80:35}=o;if(typeof w=="string"&&rk(x)&&(S=w,w=void 0),w===void 0&&(w=oi(S,x.type)??L9(x,v)),u==null){if(en(w))u=ni(w);else if(ka(w))u=pw(w,...Wt(g));else if(x.interval){let O=x.interval;if(x.ticks){let[M,E]=Wt(g),C=(E-M)/O[nu];O=t1(O,C/w)??O,u=pw(O,M,E)}else{u=g;let M=u.length;O=t1(O,M/w)??O,O!==x.interval&&(u=pw(O,...Wt(u)))}if(O===x.interval){let M=Math.round(u.length/w);M>1&&(u=u.filter((E,C)=>C%M===0))}}else x.ticks?u=x.ticks(w):u=g;if(!x.ticks&&u.length&&u!==g){let O=new so(g);u=u.filter(M=>O.has(M)),u.length||tn(`Warning: the ${t}-axis ticks appear to not align with the scale domain, resulting in no ticks. Try different ticks?`)}t==="y"||t==="x"?p=[Br(u)]:a[t]={scale:t,value:Ze}}i?.call(this,x,u,w,_,a);let I=Object.fromEntries(Object.entries(a).map(([O,M])=>[O,{...M,value:dt(u,M.value)}]));return b&&(p=y.filterFacets(u,I)),{data:u,facets:p,channels:I}}let c=Gi(o).initializer,f=e(r,Gi({...o,initializer:s},c));return r==null?(a=f.channels,f.channels={}):a={},n!==void 0&&Object.assign(f,n),f.clip===void 0&&(f.clip=!1),f}function L9(e,t){let[r,n]=Wt(e.range());return(n-r)/t}function QC(e,t,r,n,o){return{value:Hl(e,t,r,n,o)}}function Hl(e,t,r,n,o){return typeof n=="function"&&!(e.type==="log"&&e.tickFormat)?n:n===void 0&&t&&At(t)?fT(e.type,t,o)??si:e.tickFormat?e.tickFormat(typeof r=="number"?r:null,n):typeof n=="string"&&e.domain().length>0?(At(e.domain())?Jo:$n)(n):n===void 0?si:xn(n)}function pw(e,t,r){return e.range(t,e.offset(e.floor(r)))}var V9={draw(e,t){e.moveTo(0,0),e.lineTo(0,t)}},z9={draw(e,t){e.moveTo(0,0),e.lineTo(0,-t)}},j9={draw(e,t){e.moveTo(0,0),e.lineTo(-t,0)}},U9={draw(e,t){e.moveTo(0,0),e.lineTo(t,0)}};function JC(e){return e.bandwidth&&!e.interval?void 0:"tabular-nums"}function ek(e,t,{anchor:r,label:n=t.label,labelAnchor:o,labelArrow:i}={}){if(!(n==null||n.inferred&&rk(t)&&/^(date|time|year)$/i.test(n))){if(n=String(n),i==="auto"&&(i=(!t.bandwidth||t.interval)&&!/[↑↓→←]/.test(n)),!i)return n;if(i===!0){let a=LO(t);a&&(i=/x$/.test(e)||o==="center"?/x$/.test(e)===a<0?"left":"right":a<0?"up":"down")}switch(i){case"left":return`\u2190 ${n}`;case"right":return`${n} \u2192`;case"up":return r==="right"?`${n} \u2191`:`\u2191 ${n}`;case"down":return r==="right"?`${n} \u2193`:`\u2193 ${n}`}return n}}function tk(e="auto"){return cr(e)?!1:typeof e=="boolean"?e:Ur(e,"labelArrow",["auto","up","right","down","left"])}function rk(e){return At(e.domain())}function nk(e,t){if(t==null)return t;let r=e(t);if(!r)throw new Error(`scale not found: ${t}`);return r}function ok(e,{opacity:t,...r}={}){if(!ai(e)&&!L1(e))throw new Error(`swatches legend requires ordinal or threshold color scale (not ${e.type})`);return ak(e,r,(n,o,i,a)=>n.append("svg").attr("width",i).attr("height",a).attr("fill",o.scale).attr("fill-opacity",Ct(t)[1]).append("rect").attr("width","100%").attr("height","100%"))}function ik(e,{fill:t=e.hint?.fill!==void 0?e.hint.fill:"none",fillOpacity:r=1,stroke:n=e.hint?.stroke!==void 0?e.hint.stroke:cr(t)?"currentColor":"none",strokeOpacity:o=1,strokeWidth:i=1.5,r:a=4.5,...s}={},c){let[f,u]=Jr(t),[p,l]=Jr(n),m=nk(c,f),h=nk(c,p),y=a*a*Math.PI;return r=Ct(r)[1],o=Ct(o)[1],i=Ct(i)[1],ak(e,s,(b,x,g,S)=>b.append("svg").attr("viewBox","-8 -8 16 16").attr("width",g).attr("height",S).attr("fill",f==="color"?w=>m.scale(w):u).attr("fill-opacity",r).attr("stroke",p==="color"?w=>h.scale(w):l).attr("stroke-opacity",o).attr("stroke-width",i).append("path").attr("d",w=>{let _=po();return e.scale(w).draw(_,y),_}))}function ak(e,t={},r){let{columns:n,tickFormat:o,fontVariant:i=sg(e),swatchSize:a=15,swatchWidth:s=a,swatchHeight:c=a,marginLeft:f=0,className:u,style:p,width:l}=t,m=yu(t);u=xu(u),o=Hl(e.scale,e.domain,void 0,o);let h=Le("div",m).attr("class",`${u}-swatches ${u}-swatches-${n!=null?"columns":"wrap"}`),y;return n!=null?(y=`:where(.${u}-swatches-columns .${u}-swatch) { display: flex; align-items: center; break-inside: avoid; padding-bottom: 1px; } -:where(.${f}-swatches-columns .${f}-swatch::before) { +:where(.${u}-swatches-columns .${u}-swatch::before) { flex-shrink: 0; } -:where(.${f}-swatches-columns .${f}-swatch-label) { +:where(.${u}-swatches-columns .${u}-swatch-label) { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; -}`,h.style("columns",n).selectAll().data(e.domain).enter().append("div").attr("class",`${f}-swatch`).call(r,e,s,c).call(y=>y.append("div").attr("class",`${f}-swatch-label`).attr("title",o).text(o))):(b=`:where(.${f}-swatches-wrap) { +}`,h.style("columns",n).selectAll().data(e.domain).enter().append("div").attr("class",`${u}-swatch`).call(r,e,s,c).call(b=>b.append("div").attr("class",`${u}-swatch-label`).attr("title",o).text(o))):(y=`:where(.${u}-swatches-wrap) { display: flex; align-items: center; min-height: 33px; flex-wrap: wrap; } -:where(.${f}-swatches-wrap .${f}-swatch) { +:where(.${u}-swatches-wrap .${u}-swatch) { display: inline-flex; align-items: center; margin-right: 1em; -}`,h.selectAll().data(e.domain).enter().append("span").attr("class",`${f}-swatch`).call(r,e,s,c).append(function(){return this.ownerDocument.createTextNode(o.apply(this,arguments))})),h.call(y=>y.insert("style","*").text(`:where(.${f}-swatches) { +}`,h.selectAll().data(e.domain).enter().append("span").attr("class",`${u}-swatch`).call(r,e,s,c).append(function(){return this.ownerDocument.createTextNode(o.apply(this,arguments))})),h.call(b=>b.insert("style","*").text(`:where(.${u}-swatches) { font-family: system-ui, sans-serif; font-size: 10px; margin-bottom: 0.5em; } -:where(.${f}-swatch > svg) { +:where(.${u}-swatch > svg) { margin-right: 0.5em; overflow: visible; } -${b}`)).style("margin-left",u?`${+u}px`:null).style("width",l===void 0?null:`${+l}px`).style("font-variant",Ot(i,"normal")).call(wu,p).node()}var pw=new Map([["symbol",JO],["color",nk],["opacity",j$]]);function tk(e,t,r={}){return(n,o)=>{if(!pw.has(n))throw new Error(`unknown legend type: ${n}`);if(n in e)return pw.get(n)(e[n],rk(t,r[n],o),i=>e[i])}}function rk({className:e,...t},{label:r,ticks:n,tickFormat:o}={},i){return PM(i,{className:e,...t},{label:r,ticks:n,tickFormat:o})}function nk(e,{legend:t=!0,...r}){if(t===!0&&(t=e.type==="ordinal"?"swatches":"ramp"),e.domain!==void 0)switch(`${t}`.toLowerCase()){case"swatches":return QO(e,r);case"ramp":return iO(e,r);default:throw new Error(`unknown legend type: ${t}`)}}function j$({type:e,interpolate:t,...r},{legend:n=!0,color:o=An(0,0,0),...i}){if(!t)throw new Error(`${e} opacity scales are not supported`);if(n===!0&&(n="ramp"),`${n}`.toLowerCase()!=="ramp")throw new Error(`${n} opacity legends are not supported`);return nk({type:e,...r,interpolate:U$(o)},{legend:n,...i})}function U$(e){let{r:t,g:r,b:n}=An(e)||An(0,0,0);return o=>`rgba(${t},${r},${n},${o})`}function ok(e,t,r){let n=[];for(let[o,i]of pw){let a=r[o];if(a?.legend&&o in e){let s=i(e[o],rk(t,e[o],a),c=>e[c]);s!=null&&n.push(s)}}return n}function Tu(e={},t="y"){return c1(e)?e:{...e,[t]:nt}}function ik(e,t){if(t.length===1)return{data:e,facets:t};let r=Oa(e),n=new Uint8Array(r),o=0;for(let s of t)for(let c of s)n[c]&&++o,n[c]=1;if(o===0)return{data:e,facets:t};e=Ma(e);let i=e[t1]=new Uint32Array(r+o);t=t.map(s=>Ma(s,Uint32Array));let a=r;n.fill(0);for(let s of t)for(let c=0,u=s.length;c{({data:b,facets:y}=ik(b,y));let g=e==null?void 0:f(Dl(dt(b,e),x?.[r])),S=dt(b,t,Float64Array),w=dt(b,c),_=i&&i(b,g,S,w),v=Oa(b),I=l(new Float64Array(v)),T=h(new Float64Array(v)),P=[];for(let R of y){let C=g?Array.from(Fo(R,N=>g[N]).values()):[R];if(_)for(let N of C)N.sort(_);for(let N of C){let G=0,D=0;a&&N.reverse();for(let O of N){let z=S[O];z<0?G=T[O]=(I[O]=G)+z:z>0?D=T[O]=(I[O]=D)+z:T[O]=I[O]=D}}P.push(C)}return o&&o(P,I,T,w),{data:b,facets:y}}),u,p,m]}function K$(e){if(e!=null){if(typeof e=="function")return e;switch(`${e}`.toLowerCase()){case"expand":case"normalize":return q$;case"center":case"silhouette":return H$;case"wiggle":return uk}throw new Error(`unknown offset: ${e}`)}}function ck(e,t){let r=0,n=0;for(let o of e){let i=t[o];in&&(n=i)}return[r,n]}function q$(e,t,r){for(let n of e)for(let o of n){let[i,a]=ck(o,r);for(let s of o){let c=1/(a-i||1);t[s]=c*(t[s]-i),r[s]=c*(r[s]-i)}}}function H$(e,t,r){for(let n of e){for(let o of n){let[i,a]=ck(o,r);for(let s of o){let c=(a+i)/2;t[s]-=c,r[s]-=c}}fk(n,t,r)}lk(e,t,r)}function uk(e,t,r,n){for(let o of e){let i=new Ar,a=0;for(let s of o){let c=-1,u=s.map(m=>Math.abs(r[m]-t[m])),f=s.map(m=>{c=n?n[m]:++c;let h=r[m]-t[m],b=i.has(c)?h-i.get(c):0;return i.set(c,h),b}),p=[0,...jp(f)];for(let m of s)t[m]+=a,r[m]+=a;let l=dn(u);l&&(a-=dn(u,(m,h)=>(f[h]/2+p[h])*m)/l)}fk(o,t,r)}lk(e,t,r)}function fk(e,t,r){let n=Fr(e,o=>Fr(o,i=>t[i]));for(let o of e)for(let i of o)t[i]-=n,r[i]-=n}function lk(e,t,r){let n=e.length;if(n===1)return;let o=e.map(s=>s.flat()),i=o.map(s=>(Fr(s,c=>t[c])+er(s,c=>r[c]))/2),a=Fr(i);for(let s=0;s(o,i)=>e(n[o],n[i])}function X$(e){return(t,r,n,o)=>(i,a)=>e(o[i],o[a])}function Z$(e){return mg(e,(t,r,n,o)=>xc(jr(t),i=>dn(i,a=>n[a]),i=>o[i]))}function Q$(e){return mg(e,(t,r,n,o)=>xc(jr(t),i=>r[pf(i,a=>n[a])],i=>o[i]))}function ak(e){return mg(e,(t,r,n,o)=>{let i=jr(t),a=xc(i,p=>r[pf(p,l=>n[l])],p=>o[p]),s=co(i,p=>dn(p,l=>n[l]),p=>o[p]),c=[],u=[],f=0;for(let p of a)f<0?(f+=s.get(p),c.push(p)):(f-=s.get(p),u.push(p));return u.reverse().concat(c)})}function sk(e){return t=>{let r=dt(t,e);return(n,o)=>Cr(r[n],r[o])}}function J$(e){return t=>go(t)?(r,n)=>e(t[r],t[n]):(r,n)=>e(t.get(r),t.get(n))}function eD(e){return mg(Cr,()=>e)}function mg(e,t){return(r,n,o,i)=>{if(!i)throw new Error("missing channel: z");let a=new Ar(t(r,n,o,i).map((s,c)=>[s,c]));return(s,c)=>e(a.get(i[s]),a.get(i[c]))}}var tD={ariaLabel:"rect"},gg=class extends Ze{constructor(t,r={}){let{x1:n,y1:o,x2:i,y2:a}=r;super(t,{x1:{value:n,scale:"x",type:n!=null&&i==null?"band":void 0,optional:!0},y1:{value:o,scale:"y",type:o!=null&&a==null?"band":void 0,optional:!0},x2:{value:i,scale:"x",optional:!0},y2:{value:a,scale:"y",optional:!0}},r,tD),Hl(this,r),Yl(this,r)}render(t,r,n,o,i){let{x:a,y:s}=r,{x1:c,y1:u,x2:f,y2:p}=n,{marginTop:l,marginRight:m,marginBottom:h,marginLeft:b,width:y,height:x}=o,{projection:g}=i,{insetTop:S,insetRight:w,insetBottom:_,insetLeft:v}=this,{rx:I,ry:T,rx1y1:P,rx1y2:R,rx2y1:C,rx2y2:N}=this;(c||f)&&!g&&wo(a)&&(c=f=null),(u||p)&&!g&&wo(s)&&(u=p=null);let G=a?.bandwidth?a.bandwidth():0,D=s?.bandwidth?s.bandwidth():0;return De("svg:g",i).call($t,this,o,i).call(Dt,this,{},0,0).call(O=>O.selectAll().data(t).enter().call(P||R||C||N?z=>z.append("path").call(It,this).call(Wl,c&&f?U=>c[U]+(f[U]c[U]+v:b+v,u&&p?U=>u[U]+(p[U]u[U]+S:l+S,c&&f?U=>f[U]-(f[U]c[U]+G-w:y-m-w,u&&p?U=>p[U]-(p[U]u[U]+D-_:x-h-_,this).call(yr,this,n):z=>z.append("rect").call(It,this).attr("x",c?f?U=>Math.min(c[U],f[U])+v:U=>c[U]+v:b+v).attr("y",u?p?U=>Math.min(u[U],p[U])+S:U=>u[U]+S:l+S).attr("width",c?f?U=>Math.max(0,Math.abs(f[U]-c[U])+G-v-w):G-v-w:y-m-b-w-v).attr("height",u?p?U=>Math.max(0,Math.abs(u[U]-p[U])+D-S-_):D-S-_:x-l-h-S-_).call(de,"rx",I).call(de,"ry",T).call(yr,this,n))).node()}};function Hl(e,{inset:t=0,insetTop:r=t,insetRight:n=t,insetBottom:o=t,insetLeft:i=t}={}){e.insetTop=Ft(r),e.insetRight=Ft(n),e.insetBottom=Ft(o),e.insetLeft=Ft(i)}function Yl(e,{r:t,rx:r,ry:n,rx1:o=t,ry1:i=t,rx2:a=t,ry2:s=t,rx1y1:c=o!==void 0?+o:i!==void 0?+i:0,rx1y2:u=o!==void 0?+o:s!==void 0?+s:0,rx2y1:f=a!==void 0?+a:i!==void 0?+i:0,rx2y2:p=a!==void 0?+a:s!==void 0?+s:0}={}){c||u||f||p?(e.rx1y1=c,e.rx1y2=u,e.rx2y1=f,e.rx2y2=p):(e.rx=Ot(r,"auto"),e.ry=Ot(n,"auto"))}function Wl(e,t,r,n,o,i){let{rx1y1:a,rx1y2:s,rx2y1:c,rx2y2:u}=i;typeof t!="function"&&(t=bn(t)),typeof r!="function"&&(r=bn(r)),typeof n!="function"&&(n=bn(n)),typeof o!="function"&&(o=bn(o));let f=Math.max(Math.abs(a+c),Math.abs(s+u)),p=Math.max(Math.abs(a+s),Math.abs(c+u));e.attr("d",l=>{let m=t(l),h=r(l),b=n(l),y=o(l),x=m>b,g=h>y,S=x?b:m,w=x?m:b,_=g?y:h,v=g?h:y,I=Math.min(1,(w-S)/f,(v-_)/p),T=I*(x?g?u:c:g?s:a),P=I*(x?g?s:a:g?u:c),R=I*(x?g?a:s:g?c:u),C=I*(x?g?c:u:g?a:s);return`M${S},${_+hg(T,C)}A${T},${T} 0 0 ${T<0?0:1} ${S+dg(T,C)},${_}H${w-dg(P,R)}A${P},${P} 0 0 ${P<0?0:1} ${w},${_+hg(P,R)}V${v-hg(R,P)}A${R},${R} 0 0 ${R<0?0:1} ${w-dg(R,P)},${v}H${S+dg(C,T)}A${C},${C} 0 0 ${C<0?0:1} ${S},${v-hg(C,T)}Z`})}function dg(e,t){return t<0?e:Math.abs(e)}function hg(e,t){return t<0?Math.abs(e):e}function Yi(e,t={}){return Dh(t)||(t={...t,x:ei,y2:nt,interval:1}),new gg(e,Mu(dO(Tu(t))))}var rD={ariaLabel:"frame",fill:"none",stroke:"currentColor",clip:!1},nD={ariaLabel:"frame",fill:null,stroke:"currentColor",strokeLinecap:"square",clip:!1},mw=class extends Ze{constructor(t={}){let{anchor:r=null}=t;super(ou,void 0,t,r==null?rD:nD),this.anchor=s1(r,"anchor",["top","right","bottom","left"]),Hl(this,t),r||Yl(this,t)}render(t,r,n,o,i){let{marginTop:a,marginRight:s,marginBottom:c,marginLeft:u,width:f,height:p}=o,{anchor:l,insetTop:m,insetRight:h,insetBottom:b,insetLeft:y}=this,{rx:x,ry:g,rx1y1:S,rx1y2:w,rx2y1:_,rx2y2:v}=this,I=u+y,T=f-s-h,P=a+m,R=p-c-b;return De(l?"svg:line":S||w||_||v?"svg:path":"svg:rect",i).datum(0).call($t,this,o,i).call(It,this).call(yr,this,n).call(Dt,this,{}).call(l==="left"?C=>C.attr("x1",I).attr("x2",I).attr("y1",P).attr("y2",R):l==="right"?C=>C.attr("x1",T).attr("x2",T).attr("y1",P).attr("y2",R):l==="top"?C=>C.attr("x1",I).attr("x2",T).attr("y1",P).attr("y2",P):l==="bottom"?C=>C.attr("x1",I).attr("x2",T).attr("y1",R).attr("y2",R):S||w||_||v?C=>C.call(Wl,I,P,T,R,this):C=>C.attr("x",I).attr("y",P).attr("width",T-I).attr("height",R-P).attr("rx",x).attr("ry",g)).node()}};function dw(e){return new mw(e)}var hw={ariaLabel:"tip",fill:"var(--plot-background)",stroke:"currentColor"},oD=new Set(["geometry","href","src","ariaLabel","scales"]),gw=class extends Ze{constructor(t,r={}){r.tip&&(r={...r,tip:!1}),r.title===void 0&&Qr(t)&&jh(t)&&(r={...r,title:nt});let{x:n,y:o,x1:i,x2:a,y1:s,y2:c,anchor:u,preferredAnchor:f="bottom",monospace:p,fontFamily:l=p?"ui-monospace, monospace":void 0,fontSize:m,fontStyle:h,fontVariant:b,fontWeight:y,lineHeight:x=1,lineWidth:g=20,frameAnchor:S,format:w,textAnchor:_="start",textOverflow:v,textPadding:I=8,title:T,pointerSize:P=12,pathFilter:R="drop-shadow(0 3px 4px rgba(0,0,0,0.2))"}=r;super(t,{x:{value:i!=null&&a!=null?null:n,scale:"x",optional:!0},y:{value:s!=null&&c!=null?null:o,scale:"y",optional:!0},x1:{value:i,scale:"x",optional:a==null},y1:{value:s,scale:"y",optional:c==null},x2:{value:a,scale:"x",optional:i==null},y2:{value:c,scale:"y",optional:s==null},title:{value:T,optional:!0}},r,hw),this.anchor=zh(u,"anchor"),this.preferredAnchor=zh(f,"preferredAnchor"),this.frameAnchor=Na(S),this.textAnchor=Ot(_,"middle"),this.textPadding=+I,this.pointerSize=+P,this.pathFilter=At(R),this.lineHeight=+x,this.lineWidth=+g,this.textOverflow=nw(v),this.monospace=!!p,this.fontFamily=At(l),this.fontSize=Ft(m),this.fontStyle=At(h),this.fontVariant=At(b),this.fontWeight=At(y);for(let C in hw)C in this.channels&&(this[C]=hw[C]);this.splitLines=sw(this),this.clipLine=cw(this),this.format=typeof w=="string"||typeof w=="function"?{title:w}:{...w}}render(t,r,n,o,i){let a=this,{x:s,y:c,fx:u,fy:f}=r,{ownerSVGElement:p,document:l}=i,{anchor:m,monospace:h,lineHeight:b,lineWidth:y}=this,{textPadding:x,pointerSize:g,pathFilter:S}=this,{marginTop:w,marginLeft:_}=o,{x1:v,y1:I,x2:T,y2:P,x:R=v??T,y:C=I??P}=n,N=u?u(t.fx)-_:0,G=f?f(t.fy)-w:0,[D,O]=si(this,o),z=H1(n,D),U=Y1(n,O),W=h?fg:ug,B=W(Fs),q,X;"title"in n?(q=dk.call(this,{title:n.channels.title},r),X=cD):(q=dk.call(this,n.channels,r),X=uD);let J=De("svg:g",i).call($t,this,o,i).call(aw,this).call(Dt,this,{x:R&&s,y:C&&c}).call(Y=>Y.selectAll().data(t).enter().append("g").attr("transform",ee=>`translate(${Math.round(z(ee))},${Math.round(U(ee))})`).call(It,this).call(ee=>ee.append("path").attr("filter",S)).call(ee=>ee.append("text").each(function(Z){let ne=$r(this);this.setAttribute("fill","currentColor"),this.setAttribute("fill-opacity",1),this.setAttribute("stroke","none");let M=X.call(a,Z,t,q,r,n);if(typeof M=="string")for(let $ of a.splitLines(M))A(ne,{value:a.clipLine($)});else{let $=new Set;for(let H of M){let{label:E=""}=H;E&&$.has(E)||($.add(E),A(ne,H))}}})));function A(Y,{label:ee,value:Z,color:ne,opacity:M}){ee??="",Z??="";let $=ne!=null||M!=null,H,E=y*100,[re]=$s(ee,E,W,B);if(re>=0)ee=ee.slice(0,re).trimEnd()+Fs,H=Z.trim(),Z="";else{(ee||!Z&&!$)&&(Z=" "+Z);let[be]=$s(Z,E-W(ee),W,B);be>=0&&(H=Z.trim(),Z=Z.slice(0,be).trimEnd()+Fs)}let oe=Y.append("tspan").attr("x",0).attr("dy",`${b}em`).text("\u200B");ee&&oe.append("tspan").attr("font-weight","bold").text(ee),Z&&oe.append(()=>l.createTextNode(Z)),$&&oe.append("tspan").text(" \u25A0").attr("fill",ne).attr("fill-opacity",M).style("user-select","none"),H&&oe.append("title").text(H)}function K(){let{width:Y,height:ee}=o.facet??o;J.selectChildren().each(function(Z){let{x:ne,width:M,height:$}=this.getBBox();M=Math.round(M),$=Math.round($);let H=m;if(H===void 0){let oe=z(Z)+N,be=U(Z)+G,we=oe+M+g+x*20,ie=be+$+g+x*20;H=we&&Ve?ie&&fe?a.preferredAnchor:fe?"bottom":"top":ie&&fe?we?"left":"right":(we||Ve)&&(ie||fe)?`${fe?"bottom":"top"}-${we?"left":"right"}`:a.preferredAnchor}let E=this.firstChild,re=this.lastChild;if(E.setAttribute("d",sD(H,g,x,M,$)),ne)for(let oe of re.childNodes)oe.setAttribute("x",-ne);re.setAttribute("y",`${+iD(H,re.childNodes.length,b).toFixed(6)}em`),re.setAttribute("transform",`translate(${aD(H,g,x,M,$)})`)}),J.attr("visibility",null)}return t.length&&(J.attr("visibility","hidden"),p.isConnected?Promise.resolve().then(K):typeof requestAnimationFrame<"u"&&requestAnimationFrame(K)),J.node()}};function bk(e,{x:t,y:r,...n}={}){return n.frameAnchor===void 0&&([t,r]=bo(t,r)),new gw(e,{...n,x:t,y:r})}function iD(e,t,r){return/^top(?:-|$)/.test(e)?.94-r:-.29-t*r}function aD(e,t,r,n,o){switch(e){case"middle":return[-n/2,o/2];case"top-left":return[r,t+r];case"top":return[-n/2,t/2+r];case"top-right":return[-n-r,t+r];case"right":return[-t/2-n-r,o/2];case"bottom-left":return[r,-t-r];case"bottom":return[-n/2,-t/2-r];case"bottom-right":return[-n-r,-t-r];case"left":return[r+t/2,o/2]}}function sD(e,t,r,n,o){let i=n+r*2,a=o+r*2;switch(e){case"middle":return`M${-i/2},${-a/2}h${i}v${a}h${-i}z`;case"top-left":return`M0,0l${t},${t}h${i-t}v${a}h${-i}z`;case"top":return`M0,0l${t/2},${t/2}h${(i-t)/2}v${a}h${-i}v${-a}h${(i-t)/2}z`;case"top-right":return`M0,0l${-t},${t}h${t-i}v${a}h${i}z`;case"right":return`M0,0l${-t/2},${-t/2}v${t/2-a/2}h${-i}v${a}h${i}v${t/2-a/2}z`;case"bottom-left":return`M0,0l${t},${-t}h${i-t}v${-a}h${-i}z`;case"bottom":return`M0,0l${t/2},${-t/2}h${(i-t)/2}v${-a}h${-i}v${a}h${(i-t)/2}z`;case"bottom-right":return`M0,0l${-t},${-t}h${t-i}v${-a}h${i}z`;case"left":return`M0,0l${t/2},${-t/2}v${t/2-a/2}h${i}v${a}h${-i}v${t/2-a/2}z`}}function dk(e,t){let r={},n=this.format;n=hk(n,e,"x"),n=hk(n,e,"y"),this.format=n;for(let o in n){let i=n[o];if(!(i===null||i===!1))if(o==="fx"||o==="fy")r[o]=!0;else{let a=I1(e,o);a&&(r[o]=a)}}for(let o in e){if(o in r||o in n||oD.has(o)||(o==="x"||o==="y")&&e.geometry)continue;let i=I1(e,o);if(i){if(i.scale==null&&i.defaultScale==="color")continue;r[o]=i}}this.facet&&(t.fx&&!("fx"in n)&&(r.fx=!0),t.fy&&!("fy"in n)&&(r.fy=!0));for(let o in r){let i=this.format[o];if(typeof i=="string"){let a=r[o]?.value??t[o]?.domain()??[];this.format[o]=(Et(a)?Zo:$n)(i)}else if(i===void 0||i===!0){let a=t[o];this.format[o]=a?.bandwidth?ql(a,a.domain()):ai}}return r}function hk(e,t,r){if(!(r in e))return e;let n=`${r}1`,o=`${r}2`;if((n in e||!(n in t))&&(o in e||!(o in t)))return e;let i=Object.entries(e),a=e[r];return i.splice(i.findIndex(([s])=>s===r)+1,0,[n,a],[o,a]),Object.fromEntries(i)}function cD(e,t,{title:r}){return this.format.title(r.value[e],e)}function*uD(e,t,r,n,o){for(let i in r){if(i==="fx"||i==="fy"){yield{label:yg(n,r,i),value:this.format[i](t[i],e)};continue}if(i==="x1"&&"x2"in r||i==="y1"&&"y2"in r)continue;let a=r[i];if(i==="x2"&&"x1"in r)yield{label:yk(n,r,"x"),value:gk(this.format.x2,r.x1,a,e)};else if(i==="y2"&&"y1"in r)yield{label:yk(n,r,"y"),value:gk(this.format.y2,r.y1,a,e)};else{let s=a.value[e],c=a.scale;if(!zn(s)&&c==null)continue;yield{label:yg(n,r,i),value:this.format[i](s,e),color:c==="color"?o[i][e]:null,opacity:c==="opacity"?o[i][e]:null}}}}function gk(e,t,r,n){return r.hint?.length?`${e(r.value[n]-t.value[n],n)}`:`${e(t.value[n],n)}\u2013${e(r.value[n],n)}`}function yk(e,t,r){let n=yg(e,t,`${r}1`,r),o=yg(e,t,`${r}2`,r);return n===o?n:`${n}\u2013${o}`}function yg(e,t,r,n=r){let o=t[r],i=e[o?.scale??r];return String(i?.label??o?.label??n)}function ci(e={}){let{facet:t,style:r,title:n,subtitle:o,caption:i,ariaLabel:a,ariaDescription:s}=e,c=xu(e.className),u=e.marks===void 0?[]:wk(e.marks);u.push(...hD(u));let f=mD(t,e),p=new Map;for(let B of u){let q=Sk(B,f,e);q&&p.set(B,q)}let l=new Map;f&&Xl(l,[f],e),Xl(l,p,e);let m=wk(gD(u,l,e));for(let B of m){let q=Sk(B,f,e);q&&p.set(B,q)}u.unshift(...m);let h=DC(l,e);if(h!==void 0){let B=f?Qh(h,f):void 0;for(let X of u){if(X.facet===null||X.facet==="super")continue;let J=p.get(X);J!==void 0&&(J.facetsIndex=X.fx!=null||X.fy!=null?Qh(h,J):B)}let q=new Set;for(let{facetsIndex:X}of p.values())X?.forEach((J,A)=>{J?.length>0&&q.add(A)});h.forEach(0X.empty=!q.has(J):X=>X.empty=!1);for(let X of u)if(X.facet==="exclude"){let J=p.get(X);J!==void 0&&(J.facetsIndex=jC(J.facetsIndex))}}for(let B of Xe.keys())iu(e[B])&&B!=="fx"&&B!=="fy"&&l.set(B,[]);let b=new Map;for(let B of u){if(b.has(B))throw new Error("duplicate mark; each mark must be unique");let{facetsIndex:q,channels:X}=p.get(B)??{},{data:J,facets:A,channels:K}=B.initialize(q,X,e);xw(K,e),b.set(B,{data:J,facets:A,channels:K})}let y=Bl(Xl(l,b,e),e),x=tO(y,u,e);NC(y,x);let g=E1(y),{fx:S,fy:w}=g,_=S||w?A1(y,x):x,v=S||w?ID(g,x):x,I=bu(e),T=I.document,P=Ti("svg").call(T.documentElement),R=P;I.ownerSVGElement=P,I.className=c,I.projection=BC(e,_),I.path=function(){return Lc(this.projection??WC(g))},I.filterFacets=(B,q)=>Qh(h,{channels:q,groups:Xh(B,q)}),I.getMarkState=B=>{let q=b.get(B),X=p.get(B);return{...q,channels:{...q.channels,...X?.channels}}},I.dispatchValue=B=>{R.value!==B&&(R.value=B,R.dispatchEvent(new I.document.defaultView.Event("input",{bubbles:!0})))};let C=new Set;for(let[B,q]of b)if(B.initializer!=null){let X=B.facet==="super"?v:_,J=B.initializer(q.data,q.facets,q.channels,g,X,I);if(J.data!==void 0&&(q.data=J.data),J.facets!==void 0&&(q.facets=J.facets),J.channels!==void 0){let{fx:A,fy:K,...Y}=J.channels;pD(Y),Object.assign(q.channels,Y);for(let ee of Object.values(Y)){let{scale:Z}=ee;Z!=null&&!OM(Xe.get(Z))&&(_k(ee,e),C.add(Z))}(A!=null||K!=null)&&p.set(B,!0)}}if(C.size){let B=new Map;Xl(B,b,e,A=>C.has(A)),Xl(l,b,e,A=>C.has(A));let q=vD(Bl(B,e),y),{scales:X,...J}=E1(q);Object.assign(y,q),Object.assign(g,J),Object.assign(g.scales,X)}let N,G;h!==void 0&&(N={x:S?.domain(),y:w?.domain()},h=LC(h,N),G=VC(S,w,x));for(let[B,q]of b)q.values=B.scale(q.channels,g,I);let{width:D,height:O}=x;$r(P).attr("class",c).attr("fill","currentColor").attr("font-family","system-ui, sans-serif").attr("font-size",10).attr("text-anchor","middle").attr("width",D).attr("height",O).attr("viewBox",`0 0 ${D} ${O}`).attr("aria-label",a).attr("aria-description",s).call(B=>B.append("style").text(`:where(.${c}) { +${y}`)).style("margin-left",f?`${+f}px`:null).style("width",l===void 0?null:`${+l}px`).style("font-variant",kt(i,"normal")).call(wu,p).node()}var hw=new Map([["symbol",ik],["color",uk],["opacity",B9]]);function sk(e,t,r={}){return(n,o)=>{if(!hw.has(n))throw new Error(`unknown legend type: ${n}`);if(n in e)return hw.get(n)(e[n],ck(t,r[n],o),i=>e[i])}}function ck({className:e,...t},{label:r,ticks:n,tickFormat:o}={},i){return NT(i,{className:e,...t},{label:r,ticks:n,tickFormat:o})}function uk(e,{legend:t=!0,...r}){if(t===!0&&(t=e.type==="ordinal"?"swatches":"ramp"),e.domain!==void 0)switch(`${t}`.toLowerCase()){case"swatches":return ok(e,r);case"ramp":return lC(e,r);default:throw new Error(`unknown legend type: ${t}`)}}function B9({type:e,interpolate:t,...r},{legend:n=!0,color:o=An(0,0,0),...i}){if(!t)throw new Error(`${e} opacity scales are not supported`);if(n===!0&&(n="ramp"),`${n}`.toLowerCase()!=="ramp")throw new Error(`${n} opacity legends are not supported`);return uk({type:e,...r,interpolate:G9(o)},{legend:n,...i})}function G9(e){let{r:t,g:r,b:n}=An(e)||An(0,0,0);return o=>`rgba(${t},${r},${n},${o})`}function fk(e,t,r){let n=[];for(let[o,i]of hw){let a=r[o];if(a?.legend&&o in e){let s=i(e[o],ck(t,e[o],a),c=>e[c]);s!=null&&n.push(s)}}return n}function Mu(e={},t="y"){return l1(e)?e:{...e,[t]:Ze}}function lk(e,t){if(t.length===1)return{data:e,facets:t};let r=Ca(e),n=new Uint8Array(r),o=0;for(let s of t)for(let c of s)n[c]&&++o,n[c]=1;if(o===0)return{data:e,facets:t};e=Ta(e);let i=e[o1]=new Uint32Array(r+o);t=t.map(s=>Ta(s,Uint32Array));let a=r;n.fill(0);for(let s of t)for(let c=0,f=s.length;c{({data:y,facets:b}=lk(y,b));let g=e==null?void 0:u(Ll(dt(y,e),x?.[r])),S=dt(y,t,Float64Array),w=dt(y,c),_=i&&i(y,g,S,w),v=Ca(y),I=l(new Float64Array(v)),O=h(new Float64Array(v)),M=[];for(let E of b){let C=g?Array.from(Do(E,N=>g[N]).values()):[E];if(_)for(let N of C)N.sort(_);for(let N of C){let K=0,F=0;a&&N.reverse();for(let T of N){let V=S[T];V<0?K=O[T]=(I[T]=K)+V:V>0?F=O[T]=(I[T]=F)+V:O[T]=I[T]=F}}M.push(C)}return o&&o(M,I,O,w),{data:y,facets:b}}),f,p,m]}function Y9(e){if(e!=null){if(typeof e=="function")return e;switch(`${e}`.toLowerCase()){case"expand":case"normalize":return W9;case"center":case"silhouette":return X9;case"wiggle":return hk}throw new Error(`unknown offset: ${e}`)}}function dk(e,t){let r=0,n=0;for(let o of e){let i=t[o];in&&(n=i)}return[r,n]}function W9(e,t,r){for(let n of e)for(let o of n){let[i,a]=dk(o,r);for(let s of o){let c=1/(a-i||1);t[s]=c*(t[s]-i),r[s]=c*(r[s]-i)}}}function X9(e,t,r){for(let n of e){for(let o of n){let[i,a]=dk(o,r);for(let s of o){let c=(a+i)/2;t[s]-=c,r[s]-=c}}gk(n,t,r)}bk(e,t,r)}function hk(e,t,r,n){for(let o of e){let i=new Dr,a=0;for(let s of o){let c=-1,f=s.map(m=>Math.abs(r[m]-t[m])),u=s.map(m=>{c=n?n[m]:++c;let h=r[m]-t[m],y=i.has(c)?h-i.get(c):0;return i.set(c,h),y}),p=[0,...Bp(u)];for(let m of s)t[m]+=a,r[m]+=a;let l=hn(f);l&&(a-=hn(f,(m,h)=>(u[h]/2+p[h])*m)/l)}gk(o,t,r)}bk(e,t,r)}function gk(e,t,r){let n=Lr(e,o=>Lr(o,i=>t[i]));for(let o of e)for(let i of o)t[i]-=n,r[i]-=n}function bk(e,t,r){let n=e.length;if(n===1)return;let o=e.map(s=>s.flat()),i=o.map(s=>(Lr(s,c=>t[c])+nr(s,c=>r[c]))/2),a=Lr(i);for(let s=0;s(o,i)=>e(n[o],n[i])}function J9(e){return(t,r,n,o)=>(i,a)=>e(o[i],o[a])}function eD(e){return gg(e,(t,r,n,o)=>xc(Br(t),i=>hn(i,a=>n[a]),i=>o[i]))}function tD(e){return gg(e,(t,r,n,o)=>xc(Br(t),i=>r[mf(i,a=>n[a])],i=>o[i]))}function pk(e){return gg(e,(t,r,n,o)=>{let i=Br(t),a=xc(i,p=>r[mf(p,l=>n[l])],p=>o[p]),s=co(i,p=>hn(p,l=>n[l]),p=>o[p]),c=[],f=[],u=0;for(let p of a)u<0?(u+=s.get(p),c.push(p)):(u-=s.get(p),f.push(p));return f.reverse().concat(c)})}function mk(e){return t=>{let r=dt(t,e);return(n,o)=>Nr(r[n],r[o])}}function rD(e){return t=>go(t)?(r,n)=>e(t[r],t[n]):(r,n)=>e(t.get(r),t.get(n))}function nD(e){return gg(Nr,()=>e)}function gg(e,t){return(r,n,o,i)=>{if(!i)throw new Error("missing channel: z");let a=new Dr(t(r,n,o,i).map((s,c)=>[s,c]));return(s,c)=>e(a.get(i[s]),a.get(i[c]))}}var oD={ariaLabel:"rect"},xg=class extends Je{constructor(t,r={}){let{x1:n,y1:o,x2:i,y2:a}=r;super(t,{x1:{value:n,scale:"x",type:n!=null&&i==null?"band":void 0,optional:!0},y1:{value:o,scale:"y",type:o!=null&&a==null?"band":void 0,optional:!0},x2:{value:i,scale:"x",optional:!0},y2:{value:a,scale:"y",optional:!0}},r,oD),Yl(this,r),Wl(this,r)}render(t,r,n,o,i){let{x:a,y:s}=r,{x1:c,y1:f,x2:u,y2:p}=n,{marginTop:l,marginRight:m,marginBottom:h,marginLeft:y,width:b,height:x}=o,{projection:g}=i,{insetTop:S,insetRight:w,insetBottom:_,insetLeft:v}=this,{rx:I,ry:O,rx1y1:M,rx1y2:E,rx2y1:C,rx2y2:N}=this;(c||u)&&!g&&So(a)&&(c=u=null),(f||p)&&!g&&So(s)&&(f=p=null);let K=a?.bandwidth?a.bandwidth():0,F=s?.bandwidth?s.bandwidth():0;return Le("svg:g",i).call(Dt,this,o,i).call(Lt,this,{},0,0).call(T=>T.selectAll().data(t).enter().call(M||E||C||N?V=>V.append("path").call(It,this).call(Xl,c&&u?D=>c[D]+(u[D]c[D]+v:y+v,f&&p?D=>f[D]+(p[D]f[D]+S:l+S,c&&u?D=>u[D]-(u[D]c[D]+K-w:b-m-w,f&&p?D=>p[D]-(p[D]f[D]+F-_:x-h-_,this).call(wr,this,n):V=>V.append("rect").call(It,this).attr("x",c?u?D=>Math.min(c[D],u[D])+v:D=>c[D]+v:y+v).attr("y",f?p?D=>Math.min(f[D],p[D])+S:D=>f[D]+S:l+S).attr("width",c?u?D=>Math.max(0,Math.abs(u[D]-c[D])+K-v-w):K-v-w:b-m-y-w-v).attr("height",f?p?D=>Math.max(0,Math.abs(f[D]-p[D])+F-S-_):F-S-_:x-l-h-S-_).call(he,"rx",I).call(he,"ry",O).call(wr,this,n))).node()}};function Yl(e,{inset:t=0,insetTop:r=t,insetRight:n=t,insetBottom:o=t,insetLeft:i=t}={}){e.insetTop=$t(r),e.insetRight=$t(n),e.insetBottom=$t(o),e.insetLeft=$t(i)}function Wl(e,{r:t,rx:r,ry:n,rx1:o=t,ry1:i=t,rx2:a=t,ry2:s=t,rx1y1:c=o!==void 0?+o:i!==void 0?+i:0,rx1y2:f=o!==void 0?+o:s!==void 0?+s:0,rx2y1:u=a!==void 0?+a:i!==void 0?+i:0,rx2y2:p=a!==void 0?+a:s!==void 0?+s:0}={}){c||f||u||p?(e.rx1y1=c,e.rx1y2=f,e.rx2y1=u,e.rx2y2=p):(e.rx=kt(r,"auto"),e.ry=kt(n,"auto"))}function Xl(e,t,r,n,o,i){let{rx1y1:a,rx1y2:s,rx2y1:c,rx2y2:f}=i;typeof t!="function"&&(t=xn(t)),typeof r!="function"&&(r=xn(r)),typeof n!="function"&&(n=xn(n)),typeof o!="function"&&(o=xn(o));let u=Math.max(Math.abs(a+c),Math.abs(s+f)),p=Math.max(Math.abs(a+s),Math.abs(c+f));e.attr("d",l=>{let m=t(l),h=r(l),y=n(l),b=o(l),x=m>y,g=h>b,S=x?y:m,w=x?m:y,_=g?b:h,v=g?h:b,I=Math.min(1,(w-S)/u,(v-_)/p),O=I*(x?g?f:c:g?s:a),M=I*(x?g?s:a:g?f:c),E=I*(x?g?a:s:g?c:f),C=I*(x?g?c:f:g?a:s);return`M${S},${_+yg(O,C)}A${O},${O} 0 0 ${O<0?0:1} ${S+bg(O,C)},${_}H${w-bg(M,E)}A${M},${M} 0 0 ${M<0?0:1} ${w},${_+yg(M,E)}V${v-yg(E,M)}A${E},${E} 0 0 ${E<0?0:1} ${w-bg(E,M)},${v}H${S+bg(C,O)}A${C},${C} 0 0 ${C<0?0:1} ${S},${v-yg(C,O)}Z`})}function bg(e,t){return t<0?e:Math.abs(e)}function yg(e,t){return t<0?Math.abs(e):e}function Wi(e,t={}){return zh(t)||(t={...t,x:bo,y2:Ze,interval:1}),new xg(e,Tu(wC(Mu(t))))}var iD={ariaLabel:"frame",fill:"none",stroke:"currentColor",clip:!1},aD={ariaLabel:"frame",fill:null,stroke:"currentColor",strokeLinecap:"square",clip:!1},gw=class extends Je{constructor(t={}){let{anchor:r=null}=t;super(ou,void 0,t,r==null?iD:aD),this.anchor=f1(r,"anchor",["top","right","bottom","left"]),Yl(this,t),r||Wl(this,t)}render(t,r,n,o,i){let{marginTop:a,marginRight:s,marginBottom:c,marginLeft:f,width:u,height:p}=o,{anchor:l,insetTop:m,insetRight:h,insetBottom:y,insetLeft:b}=this,{rx:x,ry:g,rx1y1:S,rx1y2:w,rx2y1:_,rx2y2:v}=this,I=f+b,O=u-s-h,M=a+m,E=p-c-y;return Le(l?"svg:line":S||w||_||v?"svg:path":"svg:rect",i).datum(0).call(Dt,this,o,i).call(It,this).call(wr,this,n).call(Lt,this,{}).call(l==="left"?C=>C.attr("x1",I).attr("x2",I).attr("y1",M).attr("y2",E):l==="right"?C=>C.attr("x1",O).attr("x2",O).attr("y1",M).attr("y2",E):l==="top"?C=>C.attr("x1",I).attr("x2",O).attr("y1",M).attr("y2",M):l==="bottom"?C=>C.attr("x1",I).attr("x2",O).attr("y1",E).attr("y2",E):S||w||_||v?C=>C.call(Xl,I,M,O,E,this):C=>C.attr("x",I).attr("y",M).attr("width",O-I).attr("height",E-M).attr("rx",x).attr("ry",g)).node()}};function bw(e){return new gw(e)}var yw={ariaLabel:"tip",fill:"var(--plot-background)",stroke:"currentColor"},sD=new Set(["geometry","href","src","ariaLabel","scales"]),xw=class extends Je{constructor(t,r={}){r.tip&&(r={...r,tip:!1}),r.title===void 0&&en(t)&&Bh(t)&&(r={...r,title:Ze});let{x:n,y:o,x1:i,x2:a,y1:s,y2:c,anchor:f,preferredAnchor:u="bottom",monospace:p,fontFamily:l=p?"ui-monospace, monospace":void 0,fontSize:m,fontStyle:h,fontVariant:y,fontWeight:b,lineHeight:x=1,lineWidth:g=20,frameAnchor:S,format:w,textAnchor:_="start",textOverflow:v,textPadding:I=8,title:O,pointerSize:M=12,pathFilter:E="drop-shadow(0 3px 4px rgba(0,0,0,0.2))"}=r;super(t,{x:{value:i!=null&&a!=null?null:n,scale:"x",optional:!0},y:{value:s!=null&&c!=null?null:o,scale:"y",optional:!0},x1:{value:i,scale:"x",optional:a==null},y1:{value:s,scale:"y",optional:c==null},x2:{value:a,scale:"x",optional:i==null},y2:{value:c,scale:"y",optional:s==null},title:{value:O,optional:!0}},r,yw),this.anchor=Kh(f,"anchor"),this.preferredAnchor=Kh(u,"preferredAnchor"),this.frameAnchor=Na(S),this.textAnchor=kt(_,"middle"),this.textPadding=+I,this.pointerSize=+M,this.pathFilter=Ft(E),this.lineHeight=+x,this.lineWidth=+g,this.textOverflow=aw(v),this.monospace=!!p,this.fontFamily=Ft(l),this.fontSize=$t(m),this.fontStyle=Ft(h),this.fontVariant=Ft(y),this.fontWeight=Ft(b);for(let C in yw)C in this.channels&&(this[C]=yw[C]);this.splitLines=fw(this),this.clipLine=lw(this),this.format=typeof w=="string"||typeof w=="function"?{title:w}:{...w}}render(t,r,n,o,i){let a=this,{x:s,y:c,fx:f,fy:u}=r,{ownerSVGElement:p,document:l}=i,{anchor:m,monospace:h,lineHeight:y,lineWidth:b}=this,{textPadding:x,pointerSize:g,pathFilter:S}=this,{marginTop:w,marginLeft:_}=o,{x1:v,y1:I,x2:O,y2:M,x:E=v??O,y:C=I??M}=n,N=f?f(t.fx)-_:0,K=u?u(t.fy)-w:0,[F,T]=ci(this,o),V=X1(n,F),D=Z1(n,T),H=h?mg:pg,G=H($s),Y,W;"title"in n?(Y=wk.call(this,{title:n.channels.title},r),W=lD):(Y=wk.call(this,n.channels,r),W=pD);let Z=Le("svg:g",i).call(Dt,this,o,i).call(uw,this).call(Lt,this,{x:E&&s,y:C&&c}).call(ee=>ee.selectAll().data(t).enter().append("g").attr("transform",oe=>`translate(${Math.round(V(oe))},${Math.round(D(oe))})`).call(It,this).call(oe=>oe.append("path").attr("filter",S)).call(oe=>oe.append("text").each(function(re){let L=Vr(this);this.setAttribute("fill","currentColor"),this.setAttribute("fill-opacity",1),this.setAttribute("stroke","none");let P=W.call(a,re,t,Y,r,n);if(typeof P=="string")for(let A of a.splitLines(P))q(L,{value:a.clipLine(A)});else{let A=new Set;for(let z of P){let{label:R=""}=z;R&&A.has(R)||(A.add(R),q(L,z))}}})));function q(ee,{label:oe,value:re,color:L,opacity:P}){oe??="",re??="";let A=L!=null||P!=null,z,R=b*100,[Q]=Ds(oe,R,H,G);if(Q>=0)oe=oe.slice(0,Q).trimEnd()+$s,z=re.trim(),re="";else{(oe||!re&&!A)&&(re=" "+re);let[le]=Ds(re,R-H(oe),H,G);le>=0&&(z=re.trim(),re=re.slice(0,le).trimEnd()+$s)}let X=ee.append("tspan").attr("x",0).attr("dy",`${y}em`).text("\u200B");oe&&X.append("tspan").attr("font-weight","bold").text(oe),re&&X.append(()=>l.createTextNode(re)),A&&X.append("tspan").text(" \u25A0").attr("fill",L).attr("fill-opacity",P).style("user-select","none"),z&&X.append("title").text(z)}function ie(){let{width:ee,height:oe}=o.facet??o;Z.selectChildren().each(function(re){let{x:L,width:P,height:A}=this.getBBox();P=Math.round(P),A=Math.round(A);let z=m;if(z===void 0){let X=V(re)+N,le=D(re)+K,xe=X+P+g+x*20,ne=le+A+g+x*20;z=xe&&Me?ne&&me?a.preferredAnchor:me?"bottom":"top":ne&&me?xe?"left":"right":(xe||Me)&&(ne||me)?`${me?"bottom":"top"}-${xe?"left":"right"}`:a.preferredAnchor}let R=this.firstChild,Q=this.lastChild;if(R.setAttribute("d",fD(z,g,x,P,A)),L)for(let X of Q.childNodes)X.setAttribute("x",-L);Q.setAttribute("y",`${+cD(z,Q.childNodes.length,y).toFixed(6)}em`),Q.setAttribute("transform",`translate(${uD(z,g,x,P,A)})`)}),Z.attr("visibility",null)}return t.length&&(Z.attr("visibility","hidden"),p.isConnected?Promise.resolve().then(ie):typeof requestAnimationFrame<"u"&&requestAnimationFrame(ie)),Z.node()}};function _k(e,{x:t,y:r,...n}={}){return n.frameAnchor===void 0&&([t,r]=xo(t,r)),new xw(e,{...n,x:t,y:r})}function cD(e,t,r){return/^top(?:-|$)/.test(e)?.94-r:-.29-t*r}function uD(e,t,r,n,o){switch(e){case"middle":return[-n/2,o/2];case"top-left":return[r,t+r];case"top":return[-n/2,t/2+r];case"top-right":return[-n-r,t+r];case"right":return[-t/2-n-r,o/2];case"bottom-left":return[r,-t-r];case"bottom":return[-n/2,-t/2-r];case"bottom-right":return[-n-r,-t-r];case"left":return[r+t/2,o/2]}}function fD(e,t,r,n,o){let i=n+r*2,a=o+r*2;switch(e){case"middle":return`M${-i/2},${-a/2}h${i}v${a}h${-i}z`;case"top-left":return`M0,0l${t},${t}h${i-t}v${a}h${-i}z`;case"top":return`M0,0l${t/2},${t/2}h${(i-t)/2}v${a}h${-i}v${-a}h${(i-t)/2}z`;case"top-right":return`M0,0l${-t},${t}h${t-i}v${a}h${i}z`;case"right":return`M0,0l${-t/2},${-t/2}v${t/2-a/2}h${-i}v${a}h${i}v${t/2-a/2}z`;case"bottom-left":return`M0,0l${t},${-t}h${i-t}v${-a}h${-i}z`;case"bottom":return`M0,0l${t/2},${-t/2}h${(i-t)/2}v${-a}h${-i}v${a}h${(i-t)/2}z`;case"bottom-right":return`M0,0l${-t},${-t}h${t-i}v${-a}h${i}z`;case"left":return`M0,0l${t/2},${-t/2}v${t/2-a/2}h${i}v${a}h${-i}v${t/2-a/2}z`}}function wk(e,t){let r={},n=this.format;n=Sk(n,e,"x"),n=Sk(n,e,"y"),this.format=n;for(let o in n){let i=n[o];if(!(i===null||i===!1))if(o==="fx"||o==="fy")r[o]=!0;else{let a=M1(e,o);a&&(r[o]=a)}}for(let o in e){if(o in r||o in n||sD.has(o)||(o==="x"||o==="y")&&e.geometry)continue;let i=M1(e,o);if(i){if(i.scale==null&&i.defaultScale==="color")continue;r[o]=i}}this.facet&&(t.fx&&!("fx"in n)&&(r.fx=!0),t.fy&&!("fy"in n)&&(r.fy=!0));for(let o in r){let i=this.format[o];if(typeof i=="string"){let a=r[o]?.value??t[o]?.domain()??[];this.format[o]=(At(a)?Jo:$n)(i)}else if(i===void 0||i===!0){let a=t[o];this.format[o]=a?.bandwidth?Hl(a,a.domain()):si}}return r}function Sk(e,t,r){if(!(r in e))return e;let n=`${r}1`,o=`${r}2`;if((n in e||!(n in t))&&(o in e||!(o in t)))return e;let i=Object.entries(e),a=e[r];return i.splice(i.findIndex(([s])=>s===r)+1,0,[n,a],[o,a]),Object.fromEntries(i)}function lD(e,t,{title:r}){return this.format.title(r.value[e],e)}function*pD(e,t,r,n,o){for(let i in r){if(i==="fx"||i==="fy"){yield{label:wg(n,r,i),value:this.format[i](t[i],e)};continue}if(i==="x1"&&"x2"in r||i==="y1"&&"y2"in r)continue;let a=r[i];if(i==="x2"&&"x1"in r)yield{label:Ik(n,r,"x"),value:vk(this.format.x2,r.x1,a,e)};else if(i==="y2"&&"y1"in r)yield{label:Ik(n,r,"y"),value:vk(this.format.y2,r.y1,a,e)};else{let s=a.value[e],c=a.scale;if(!Un(s)&&c==null)continue;yield{label:wg(n,r,i),value:this.format[i](s,e),color:c==="color"?o[i][e]:null,opacity:c==="opacity"?o[i][e]:null}}}}function vk(e,t,r,n){return r.hint?.length?`${e(r.value[n]-t.value[n],n)}`:`${e(t.value[n],n)}\u2013${e(r.value[n],n)}`}function Ik(e,t,r){let n=wg(e,t,`${r}1`,r),o=wg(e,t,`${r}2`,r);return n===o?n:`${n}\u2013${o}`}function wg(e,t,r,n=r){let o=t[r],i=e[o?.scale??r];return String(i?.label??o?.label??n)}function ui(e={}){let{facet:t,style:r,title:n,subtitle:o,caption:i,ariaLabel:a,ariaDescription:s}=e,c=xu(e.className),f=e.marks===void 0?[]:Mk(e.marks);f.push(...yD(f));let u=gD(t,e),p=new Map;for(let G of f){let Y=Tk(G,u,e);Y&&p.set(G,Y)}let l=new Map;u&&Zl(l,[u],e),Zl(l,p,e);let m=Mk(xD(f,l,e));for(let G of m){let Y=Tk(G,u,e);Y&&p.set(G,Y)}f.unshift(...m);let h=BO(l,e);if(h!==void 0){let G=u?tg(h,u):void 0;for(let W of f){if(W.facet===null||W.facet==="super")continue;let Z=p.get(W);Z!==void 0&&(Z.facetsIndex=W.fx!=null||W.fy!=null?tg(h,Z):G)}let Y=new Set;for(let{facetsIndex:W}of p.values())W?.forEach((Z,q)=>{Z?.length>0&&Y.add(q)});h.forEach(0W.empty=!Y.has(Z):W=>W.empty=!1);for(let W of f)if(W.facet==="exclude"){let Z=p.get(W);Z!==void 0&&(Z.facetsIndex=qO(Z.facetsIndex))}}for(let G of Qe.keys())iu(e[G])&&G!=="fx"&&G!=="fy"&&l.set(G,[]);let y=new Map;for(let G of f){if(y.has(G))throw new Error("duplicate mark; each mark must be unique");let{facetsIndex:Y,channels:W}=p.get(G)??{},{data:Z,facets:q,channels:ie}=G.initialize(Y,W,e);vw(ie,e),y.set(G,{data:Z,facets:q,channels:ie})}let b=Gl(Zl(l,y,e),e),x=sC(b,f,e);DO(b,x);let g=$1(b),{fx:S,fy:w}=g,_=S||w?D1(b,x):x,v=S||w?MD(g,x):x,I=yu(e),O=I.document,M=Ti("svg").call(O.documentElement),E=M;I.ownerSVGElement=M,I.className=c,I.projection=WO(e,_),I.path=function(){return Lc(this.projection??tC(g))},I.filterFacets=(G,Y)=>tg(h,{channels:Y,groups:Jh(G,Y)}),I.getMarkState=G=>{let Y=y.get(G),W=p.get(G);return{...Y,channels:{...Y.channels,...W?.channels}}},I.dispatchValue=G=>{E.value!==G&&(E.value=G,E.dispatchEvent(new I.document.defaultView.Event("input",{bubbles:!0})))};let C=new Set;for(let[G,Y]of y)if(G.initializer!=null){let W=G.facet==="super"?v:_,Z=G.initializer(Y.data,Y.facets,Y.channels,g,W,I);if(Z.data!==void 0&&(Y.data=Z.data),Z.facets!==void 0&&(Y.facets=Z.facets),Z.channels!==void 0){let{fx:q,fy:ie,...ee}=Z.channels;hD(ee),Object.assign(Y.channels,ee);for(let oe of Object.values(ee)){let{scale:re}=oe;re!=null&&!FT(Qe.get(re))&&(kk(oe,e),C.add(re))}(q!=null||ie!=null)&&p.set(G,!0)}}if(C.size){let G=new Map;Zl(G,y,e,q=>C.has(q)),Zl(l,y,e,q=>C.has(q));let Y=PD(Gl(G,e),b),{scales:W,...Z}=$1(Y);Object.assign(b,Y),Object.assign(g,Z),Object.assign(g.scales,W)}let N,K;h!==void 0&&(N={x:S?.domain(),y:w?.domain()},h=GO(h,N),K=KO(S,w,x));for(let[G,Y]of y)Y.values=G.scale(Y.channels,g,I);let{width:F,height:T}=x;Vr(M).attr("class",c).attr("fill","currentColor").attr("font-family","system-ui, sans-serif").attr("font-size",10).attr("text-anchor","middle").attr("width",F).attr("height",T).attr("viewBox",`0 0 ${F} ${T}`).attr("aria-label",a).attr("aria-description",s).call(G=>G.append("style").text(`:where(.${c}) { --plot-background: white; display: block; height: auto; @@ -56,7 +56,7 @@ ${b}`)).style("margin-left",u?`${+u}px`:null).style("width",l===void 0?null:`${+ :where(.${c} text), :where(.${c} tspan) { white-space: pre; -}`)).call(wu,r);for(let B of u){let{channels:q,values:X,facets:J}=b.get(B);if(h===void 0||B.facet==="super"){let A=null;if(J&&(A=J[0],A=B.filter(A,q,X),A.length===0))continue;let K=B.render(A,g,X,v,I);if(K==null)continue;P.appendChild(K)}else{let A;for(let K of h){if(!(B.facetAnchor?.(h,N,K)??!K.empty))continue;let Y=null;if(J){let Z=p.has(B);if(Y=J[Z?K.i:0],Y=B.filter(Y,q,X),Y.length===0)continue;!Z&&Y===J[0]&&(Y=hM(Y)),Y.fx=K.x,Y.fy=K.y,Y.fi=K.i}let ee=B.render(Y,g,X,_,I);if(ee!=null){(A??=$r(P).append("g")).append(()=>ee).datum(K);for(let Z of["aria-label","aria-description","aria-hidden","transform"])ee.hasAttribute(Z)&&(A.attr(Z,ee.getAttribute(Z)),ee.removeAttribute(Z))}}A?.selectChildren().each(G)}}let z=ok(y,I,e),{figure:U=n!=null||o!=null||i!=null||z.length>0}=e;U&&(R=T.createElement("figure"),R.className=`${c}-figure`,R.style.maxWidth="initial",n!=null&&R.append(xk(T,n,"h2")),o!=null&&R.append(xk(T,o,"h3")),R.append(...z,P),i!=null&&R.append(fD(T,i)),"value"in P&&(R.value=P.value,delete P.value)),R.scale=FC(g.scales),R.legend=tk(y,I,e);let W=pC();return W>0&&$r(P).append("text").attr("x",D).attr("y",20).attr("dy","-1em").attr("text-anchor","end").attr("font-family","initial").text("\u26A0\uFE0F").append("title").text(`${W.toLocaleString("en-US")} warning${W===1?"":"s"}. Please check the console.`),R}function xk(e,t,r){if(t.ownerDocument)return t;let n=e.createElement(r);return n.append(t),n}function fD(e,t){let r=e.createElement("figcaption");return r.append(t),r}function wk(e){return e.flat(1/0).filter(t=>t!=null).map(lD)}function lD(e){return typeof e.render=="function"?e:new bw(e)}var bw=class extends Ze{constructor(t){if(typeof t!="function")throw new TypeError("invalid mark; missing render function");super(),this.render=t}render(){}};function xw(e,t){for(let r in e)_k(e[r],t);return e}function _k(e,t){let{scale:r,transform:n=!0}=e;if(r==null||!n)return;let{type:o,percent:i,interval:a,transform:s=i?c=>c==null?NaN:c*100:u1(a,o)}=t[r]??{};s!=null&&(e.value=We(e.value,s),e.transform=!1)}function pD(e){for(let t in e)v1(t,e[t])}function Xl(e,t,r,n=fM){for(let{channels:o}of t.values())for(let i in o){let a=o[i],{scale:s}=a;if(s!=null&&n(s))if(s==="projection"){if(!qC(r)){let c=r.x?.domain===void 0,u=r.y?.domain===void 0;if(c||u){let[f,p]=YC(a);c&&yw(e,"x",f),u&&yw(e,"y",p)}}}else yw(e,s,a)}return e}function yw(e,t,r){let n=e.get(t);n!==void 0?n.push(r):e.set(t,[r])}function mD(e,t){if(e==null)return;let{x:r,y:n}=e;if(r==null&&n==null)return;let o=zi(e.data);if(o==null)throw new Error("missing facet data");let i={};r!=null&&(i.fx=pu(o,{value:r,scale:"fx"})),n!=null&&(i.fy=pu(o,{value:n,scale:"fy"})),xw(i,t);let a=Xh(o,i);return{channels:i,groups:a,data:e.data}}function Sk(e,t,r){if(e.facet===null||e.facet==="super")return;let{fx:n,fy:o}=e;if(n!=null||o!=null){let c=zi(e.data??n??o);if(c===void 0)throw new Error(`missing facet data in ${e.ariaLabel}`);if(c===null)return;let u={};return n!=null&&(u.fx=pu(c,{value:n,scale:"fx"})),o!=null&&(u.fy=pu(c,{value:o,scale:"fy"})),xw(u,r),{channels:u,groups:Xh(c,u)}}if(t===void 0)return;let{channels:i,groups:a,data:s}=t;if(e.facet!=="auto"||e.data===s)return{channels:i,groups:a};s.length>0&&(a.size>1||a.size===1&&i.fx&&i.fy&&[...a][0][1].size>1)&&Oa(zi(e.data))===Oa(s)&&Jr(`Warning: the ${e.ariaLabel} mark appears to use faceted data, but isn\u2019t faceted. The mark data has the same length as the facet data and the mark facet option is "auto", but the mark data and facet data are distinct. If this mark should be faceted, set the mark facet option to true; otherwise, suppress this warning by setting the mark facet option to false.`)}function dD(e,t={}){return Bi({...t,x:null,y:null},(r,n,o,i,a,s)=>s.getMarkState(e))}function hD(e){let t=[];for(let r of e){let n=r.tip;if(n){n===!0?n={}:typeof n=="string"&&(n={pointer:n});let{pointer:o,preferredAnchor:i}=n;o=/^x$/i.test(o)?oO:/^y$/i.test(o)?q1:nO,n=o(dD(r,n)),n.title=null,i===void 0&&(n.preferredAnchor=o===q1?"left":"bottom");let a=bk(r.data,n);a.facet=r.facet,a.facetAnchor=r.facetAnchor,t.push(a)}}return t}function gD(e,t,r){let{projection:n,x:o={},y:i={},fx:a={},fy:s={},axis:c,grid:u,facet:f={},facet:{axis:p=c,grid:l}=f,x:{axis:m=c,grid:h=m===null?null:u}=o,y:{axis:b=c,grid:y=b===null?null:u}=i,fx:{axis:x=p,grid:g=x===null?null:l}=a,fy:{axis:S=p,grid:w=S===null?null:l}=s}=r;(n||!iu(o)&&!vk("x",e))&&(m=h=null),(n||!iu(i)&&!vk("y",e))&&(b=y=null),t.has("fx")||(x=g=null),t.has("fy")||(S=w=null),m===void 0&&(m=!wg(e,"x")),b===void 0&&(b=!wg(e,"y")),x===void 0&&(x=!wg(e,"fx")),S===void 0&&(S=!wg(e,"fy")),m===!0&&(m="bottom"),b===!0&&(b="left"),x===!0&&(x=m==="top"||m===null?"bottom":"top"),S===!0&&(S=b==="right"||b===null?"left":"right");let _=[];return xg(_,w,VO,s),bg(_,S,AO,"right","left",f,s),xg(_,g,UO,a),bg(_,x,FO,"top","bottom",f,a),xg(_,y,LO,i),bg(_,b,fw,"left","right",r,i),xg(_,h,jO,o),bg(_,m,lw,"bottom","top",r,o),_}function bg(e,t,r,n,o,i,a){if(!t)return;let s=yD(t);a=bD(s?n:t,i,a);let{line:c}=a;(r===fw||r===lw)&&c&&!Cs(c)&&e.push(dw(xD(a))),e.push(r(a)),s&&e.push(r({...a,anchor:o,label:null}))}function xg(e,t,r,n){!t||Cs(t)||e.push(r(wD(t,n)))}function yD(e){return/^\s*both\s*$/i.test(e)}function bD(e,t,{line:r=t.line,ticks:n,tickSize:o,tickSpacing:i,tickPadding:a,tickFormat:s,tickRotate:c,fontVariant:u,ariaLabel:f,ariaDescription:p,label:l=t.label,labelAnchor:m,labelArrow:h=t.labelArrow,labelOffset:b}){return{anchor:e,line:r,ticks:n,tickSize:o,tickSpacing:i,tickPadding:a,tickFormat:s,tickRotate:c,fontVariant:u,ariaLabel:f,ariaDescription:p,label:l,labelAnchor:m,labelArrow:h,labelOffset:b}}function xD(e){let{anchor:t,line:r}=e;return{anchor:t,facetAnchor:t+"-empty",stroke:r===!0?void 0:r}}function wD(e,{stroke:t=uu(e)?e:void 0,ticks:r=SD(e)?e:void 0,tickSpacing:n,ariaLabel:o,ariaDescription:i}){return{stroke:t,ticks:r,tickSpacing:n,ariaLabel:o,ariaDescription:i}}function SD(e){switch(typeof e){case"number":return!0;case"string":return!uu(e)}return Qr(e)||typeof e?.range=="function"}function wg(e,t){let r=`${t}-axis `;return e.some(n=>n.ariaLabel?.startsWith(r))}function vk(e,t){for(let r of t)for(let n in r.channels){let{scale:o}=r.channels[n];if(o===e||o==="projection")return!0}return!1}function vD(e,t){for(let r in e){let n=e[r],o=t[r];n.label===void 0&&o&&(n.label=o.label)}return e}function ID({fx:e,fy:t},r){let{marginTop:n,marginRight:o,marginBottom:i,marginLeft:a,width:s,height:c}=Yh(r),u=e&&Ik(e),f=t&&Ik(t);return{marginTop:t?f[0]:n,marginRight:e?s-u[1]:o,marginBottom:t?c-f[1]:i,marginLeft:e?u[0]:a,inset:{marginTop:r.marginTop,marginRight:r.marginRight,marginBottom:r.marginBottom,marginLeft:r.marginLeft},width:s,height:c}}function Ik(e){let t=e.domain();if(t.length===0)return[0,e.bandwidth()];let r=e(t[0]),n=e(t[t.length-1]);return n{let H=Dl(dt(ne,g),$?.[S]),E=dt(ne,T),re=dt(ne,J),oe=dt(ne,A),be=VM(c,{z:E,fill:re,stroke:oe}),we=[],Ve=[],ie=H&&_([]),fe=E&&X([]),Qe=re&&Y([]),ht=oe&&Z([]),ot=e&&p([]),Vt=e&&m([]),In=t&&b([]),Zi=t&&x([]),nn=AD(e,t,ne),zr=0;for(let qt of c)qt.initialize(ne);a&&a.initialize(ne),i&&i.initialize(ne);for(let qt of M){let ja=[];for(let ko of c)ko.scope("facet",qt);a&&a.scope("facet",qt),i&&i.scope("facet",qt);for(let[ko,Ua]of x1(qt,be))for(let[$u,_n]of x1(Ua,H))for(let[le,he]of nn(_n))if(be&&(he.z=ko),!(i&&!i.reduce(le,he))){ja.push(zr++),Ve.push(o.reduceIndex(le,ne,he)),H&&ie.push($u),E&&fe.push(be===E?ko:E[(le.length>0?le:_n)[0]]),re&&Qe.push(be===re?ko:re[(le.length>0?le:_n)[0]]),oe&&ht.push(be===oe?ko:oe[(le.length>0?le:_n)[0]]),ot&&(ot.push(he.x1),Vt.push(he.x2)),In&&(In.push(he.y1),Zi.push(he.y2));for(let Se of c)Se.reduce(le,he);a&&a.reduce(le,he)}we.push(ja)}return jM(we,a,s),{data:Ve,facets:we}}),...!Vl(c,"x")&&(f?{x1:f,x2:l,x:$l(f,l)}:{x:v,x1:C,x2:N}),...!Vl(c,"y")&&(h?{y1:h,y2:y,y:$l(h,y)}:{y:I,y1:G,y2:D}),...w&&{[S]:w},...Object.fromEntries(c.map(({name:ne,output:M})=>[ne,M]))}}function CD({cumulative:e,domain:t,thresholds:r,interval:n,...o},i){return[o,{cumulative:e,domain:t,thresholds:r,interval:n,...i}]}function OD(e,{cumulative:t,domain:r,thresholds:n,interval:o},i){return e={...oi(e)},e.domain===void 0&&(e.domain=r),e.cumulative===void 0&&(e.cumulative=t),e.thresholds===void 0&&(e.thresholds=n),e.interval===void 0&&(e.interval=o),e.value===void 0&&(e.value=i),e.thresholds=kD(e.thresholds,e.interval),e}function Tk(e){if(e==null)return;let{value:t,cumulative:r,domain:n=Yt,thresholds:o}=e,i=a=>{let s=dt(a,t),c;if(Et(s)||ED(o)){s=We(s,a1,Float64Array);let[f,p]=typeof n=="function"?n(s):n,l=typeof o=="function"&&!ka(o)?o(s,f,p):o;typeof l=="number"&&(l=cl(f,p,l)),ka(l)&&(n===Yt&&(f=l.floor(f),p=l.offset(l.floor(p))),l=l.range(f,l.offset(p))),c=l}else{s=ti(s);let[f,p]=typeof n=="function"?n(s):n,l=typeof o=="function"&&!ka(o)?o(s,f,p):o;if(typeof l=="number")if(n===Yt){let m=ts(f,p,l);if(isFinite(m))if(m>0){let h=Math.round(f/m),b=Math.round(p/m);h*m<=f||--h,b*m>p||++b;let y=b-h+1;l=new Float64Array(y);for(let x=0;xp||++b;let y=b-h+1;l=new Float64Array(y);for(let x=0;x0?FD:Sw)(u,c,s),u};return i.label=xo(t),i}function kD(e,t,r=Mk){if(e===void 0)return t===void 0?r:ni(t);if(typeof e=="string"){switch(e.toLowerCase()){case"freedman-diaconis":return qp;case"scott":return mf;case"sturges":return zp;case"auto":return Mk}return Al(e)}return e}function ND(e,t){return LM(e,t,Ok)}function Ok(e,t,r){return y1(e,t,r,kk)}function kk(e,t,r){return b1(e,t,r,Nk)}function Nk(e,t){return jl(e,t,RD)}function RD(e){switch(`${e}`.toLowerCase()){case"x":return DD;case"x1":return VD;case"x2":return jD;case"y":return LD;case"y1":return UD;case"y2":return zD;case"z":return UM}throw new Error(`invalid bin reduce: ${e}`)}function Mk(e,t,r){return Math.min(200,mf(e,t,r))}function ED(e){return bM(e)||Qr(e)&&Et(e)}function AD(e,t,r){let n=e?.(r),o=t?.(r);return n&&o?function*(i){let a=n.bin(i);for(let[s,[c,u]]of n.entries()){let f=o.bin(a[s]);for(let[p,[l,m]]of o.entries())yield[f[p],{data:r,x1:c,y1:l,x2:u,y2:m}]}}:n?function*(i){let a=n.bin(i);for(let[s,[c,u]]of n.entries())yield[a[s],{data:r,x1:c,x2:u}]}:function*(i){let a=o.bin(i);for(let[s,[c,u]]of o.entries())yield[a[s],{data:r,y1:c,y2:u}]}}function Sw(e,t,r){return t=ti(t),n=>{let o=e.map(()=>[]);for(let i of n)o[Ii(t,r[i])-1]?.push(i);return o}}function FD(e,t,r){let n=Sw(e,t,r);return o=>{let i=n(o);for(let a=1,s=i.length;a{let i=n(o);for(let a=i.length-2;a>=0;--a){let s=i[a+1],c=i[a];for(let u of s)c.push(u)}return i}}function Rk(e,t){let r=(+e+ +t)/2;return e instanceof Date?new Date(r):r}var DD={reduceIndex(e,t,{x1:r,x2:n}){return Rk(r,n)}},LD={reduceIndex(e,t,{y1:r,y2:n}){return Rk(r,n)}},VD={reduceIndex(e,t,{x1:r}){return r}},jD={reduceIndex(e,t,{x2:r}){return r}},UD={reduceIndex(e,t,{y1:r}){return r}},zD={reduceIndex(e,t,{y2:r}){return r}};var BD={ariaLabel:"area",strokeWidth:1,strokeLinecap:"round",strokeLinejoin:"round",strokeMiterlimit:1},Sg=class extends Ze{constructor(t,r={}){let{x1:n,y1:o,x2:i,y2:a,z:s,curve:c,tension:u}=r;super(t,{x1:{value:n,scale:"x"},y1:{value:o,scale:"y"},x2:{value:i,scale:"x",optional:!0},y2:{value:a,scale:"y",optional:!0},z:{value:su(r),optional:!0}},r,BD),this.z=s,this.curve=ww(c,u)}filter(t){return t}render(t,r,n,o,i){let{x1:a,y1:s,x2:c=a,y2:u=s}=n;return De("svg:g",i).call($t,this,o,i).call(Dt,this,r,0,0).call(f=>f.selectAll().data(ng(t,[a,s,c,u],this,n)).enter().append("path").call(It,this).call(rg,this,n).attr("d",Sx().curve(this.curve).defined(p=>p>=0).x0(p=>a[p]).y0(p=>s[p]).x1(p=>c[p]).y1(p=>u[p]))).node()}};function vw(e,t){let{x:r=ei,...n}=Ck(t);return new Sg(e,Mu(Tu({...n,x1:r,x2:void 0},r===ei?"y2":"y")))}var GD={ariaLabel:"bar"},Iw=class extends Ze{constructor(t,r,n={},o=GD){super(t,r,n,o),Hl(this,n),Yl(this,n)}render(t,r,n,o,i){let{rx:a,ry:s,rx1y1:c,rx1y2:u,rx2y1:f,rx2y2:p}=this,l=this._x(r,n,o),m=this._y(r,n,o),h=this._width(r,n,o),b=this._height(r,n,o);return De("svg:g",i).call($t,this,o,i).call(this._transform,this,r).call(y=>y.selectAll().data(t).enter().call(c||u||f||p?x=>x.append("path").call(It,this).call(Wl,l,m,Ek(l,h),Ek(m,b),this).call(yr,this,n):x=>x.append("rect").call(It,this).attr("x",l).attr("width",h).attr("y",m).attr("height",b).call(de,"rx",a).call(de,"ry",s).call(yr,this,n))).node()}_x(t,{x:r},{marginLeft:n}){let{insetLeft:o}=this;return r?i=>r[i]+o:n+o}_y(t,{y:r},{marginTop:n}){let{insetTop:o}=this;return r?i=>r[i]+o:n+o}_width({x:t},{x:r},{marginRight:n,marginLeft:o,width:i}){let{insetLeft:a,insetRight:s}=this,c=r&&t?t.bandwidth():i-n-o;return Math.max(0,c-a-s)}_height({y:t},{y:r},{marginTop:n,marginBottom:o,height:i}){let{insetTop:a,insetBottom:s}=this,c=r&&t?t.bandwidth():i-n-o;return Math.max(0,c-a-s)}};function Ek(e,t){return typeof e=="function"&&typeof t=="function"?r=>e(r)+t(r):typeof e=="function"?r=>e(r)+t:typeof t=="function"?r=>e+t(r):e+t}var vg=class extends Iw{constructor(t,r={},n){let{x:o,y1:i,y2:a}=r;super(t,{y1:{value:i,scale:"y"},y2:{value:a,scale:"y"},x:{value:o,scale:"x",type:"band",optional:!0}},r,n)}_transform(t,r,{y:n}){t.call(Dt,r,{y:n},0,0)}_y({y:t},{y1:r,y2:n},{marginTop:o}){let{insetTop:i}=this;return wo(t)?o+i:a=>Math.min(r[a],n[a])+i}_height({y:t},{y1:r,y2:n},{marginTop:o,marginBottom:i,height:a}){let{insetTop:s,insetBottom:c}=this;return wo(t)?a-o-i-s-c:u=>Math.max(0,Math.abs(n[u]-r[u])-s-c)}};function _w(e,t={}){return Dh(t)||(t={...t,x:ei,y2:nt}),new vg(e,Mu(ag(Tu(t))))}var KD={ariaLabel:"dot",fill:"none",stroke:"currentColor",strokeWidth:1.5};function qD(e){return e.sort===void 0&&e.reverse===void 0?FM({channel:"-r"},e):e}var Ig=class extends Ze{constructor(t,r={}){let{x:n,y:o,r:i,rotate:a,symbol:s=Vi,frameAnchor:c}=r,[u,f]=Ct(a,0),[p,l]=RM(s),[m,h]=Ct(i,p==null?3:4.5);super(t,{x:{value:n,scale:"x",optional:!0},y:{value:o,scale:"y",optional:!0},r:{value:m,scale:"r",filter:Ts,optional:!0},rotate:{value:u,optional:!0},symbol:{value:p,scale:"auto",optional:!0}},qD(r),KD),this.r=h,this.rotate=f,this.symbol=l,this.frameAnchor=Na(c);let{channels:b}=this,{symbol:y}=b;if(y){let{fill:x,stroke:g}=b;y.hint={fill:x?x.value===y.value?"color":"currentColor":this.fill??"currentColor",stroke:g?g.value===y.value?"color":"currentColor":this.stroke??"none"}}}render(t,r,n,o,i){let{x:a,y:s}=r,{x:c,y:u,r:f,rotate:p,symbol:l}=n,{r:m,rotate:h,symbol:b}=this,[y,x]=si(this,o),g=b===Vi,S=f?void 0:m*m*Math.PI;return eu(m)&&(t=[]),De("svg:g",i).call($t,this,o,i).call(Dt,this,{x:c&&a,y:u&&s}).call(w=>w.selectAll().data(t).enter().append(g?"circle":"path").call(It,this).call(g?_=>{_.attr("cx",c?v=>c[v]:y).attr("cy",u?v=>u[v]:x).attr("r",f?v=>f[v]:m)}:_=>{_.attr("transform",vu`translate(${c?v=>c[v]:y},${u?v=>u[v]:x})${p?v=>` rotate(${p[v]})`:h?` rotate(${h})`:""}`).attr("d",f&&l?v=>{let I=po();return l[v].draw(I,f[v]*f[v]*Math.PI),I}:f?v=>{let I=po();return b.draw(I,f[v]*f[v]*Math.PI),I}:l?v=>{let I=po();return l[v].draw(I,S),I}:(()=>{let v=po();return b.draw(v,S),v})())}).call(yr,this,n)).node()}};function Ls(e,{x:t,y:r,...n}={}){return n.frameAnchor===void 0&&([t,r]=bo(t,r)),new Ig(e,{...n,x:t,y:r})}var HD={ariaLabel:"line",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",strokeMiterlimit:1},_g=class extends Ze{constructor(t,r={}){let{x:n,y:o,z:i,curve:a,tension:s}=r;super(t,{x:{value:n,scale:"x"},y:{value:o,scale:"y"},z:{value:su(r),optional:!0}},r,HD),this.z=i,this.curve=Pk(a,s),Kl(this,r)}filter(t){return t}project(t,r,n){this.curve!==Zl&&super.project(t,r,n)}render(t,r,n,o,i){let{x:a,y:s}=n,{curve:c}=this;return De("svg:g",i).call($t,this,o,i).call(Dt,this,r).call(u=>u.selectAll().data(ng(t,[a,s],this,n)).enter().append("path").call(It,this).call(rg,this,n).call(cO,this,n,i).attr("d",c===Zl&&i.projection?YD(i.path(),a,s):yl().curve(c).defined(f=>f>=0).x(f=>a[f]).y(f=>s[f]))).node()}};function YD(e,t,r){return t=ti(t),r=ti(r),n=>{let o=[],i=[o];for(let a of n)a===-1?(o=[],i.push(o)):o.push([t[a],r[a]]);return e({type:"MultiLineString",coordinates:i})}}function Zt(e,{x:t,y:r,...n}={}){return[t,r]=bo(t,r),new _g(e,{...n,x:t,y:r})}Ze.prototype.plot=function({marks:e=[],...t}={}){return ci({...t,marks:[...e,this]})};var WD=["#1b9e77","#d95f02","#7570b3","#e7298a","#07004D","#E6AB02","#FE5F55","#54494B","#006E90","#BC96E6"],Ak={background:"transparent",color:"#222",fontFamily:"Arial, Helvetica, sans-serif",fontSize:"13px"};function XD(e,t){let r=[...t?[e.model]:[],`Predicted: ${e.predicted.toFixed(3)}`,`Observed: ${e.observed.toFixed(3)}`];return e.method==="discrete"&&e.events!==void 0&&e.total!==void 0&&(r[r.length-1]+=` ( ${e.events} / ${e.total} )`),r.join(` -`)}function ZD(e){let r=[...new Set(e.data.map(m=>m.model))].length>1,n=r?WD:["#000000"],o=e.data.map(m=>({...m,tooltip:XD(m,r)})),i=[];e.references?.some(m=>m.type==="identity")&&i.push(Zt([{x:0,y:0},{x:1,y:1}],{x:"x",y:"y",stroke:"#BEBEBE",strokeWidth:2,strokeDasharray:"4,4"})),i.push(Zt(o,{x:"predicted",y:"observed",stroke:"model",strokeWidth:2,title:"tooltip",tip:!0}));let a=o.filter(m=>m.method==="discrete");a.length>0&&i.push(Ls(a,{x:"predicted",y:"observed",fill:"model",stroke:"white",strokeWidth:1.5,r:5,title:"tooltip",tip:!0}));let s=(e.distribution?.length??0)>0,c=ci({width:600,height:s?480:600,marginLeft:64,marginBottom:s?16:56,style:Ak,x:{label:s?null:e.xAxis.label,domain:e.xAxis.domain,grid:!1,ticks:6,axis:s?null:"bottom"},y:{label:e.yAxis.label,domain:e.yAxis.domain,grid:!1,ticks:6},color:{legend:r,range:n},marks:i});if(!s||!e.distribution)return c;let u=e.distribution.map(m=>({...m,tooltip:`${r?`${m.model} -`:""}${m.count} observations in [${(m.midpoint-m.binWidth/2).toFixed(3)}, ${(m.midpoint+m.binWidth/2).toFixed(3)}]`})),f=new Set(e.distribution.map(m=>m.model)).size,p=ci({width:600,height:120,marginLeft:64,marginTop:0,marginBottom:48,style:Ak,x:{label:e.xAxis.label,domain:e.xAxis.domain,grid:!1,ticks:6},y:{label:null,grid:!1,ticks:3},color:{legend:!1,range:n},marks:[Yi(u,{x1:m=>m.midpoint-m.binWidth/2,x2:m=>m.midpoint+m.binWidth/2,y:"count",fill:"model",fillOpacity:1/Math.max(f,1),title:"tooltip",tip:!0})]}),l=document.createElement("div");return l.style.width="600px",l.style.maxWidth="100%",l.append(c,p),l}var QD=0,$k=["#1b9e77","#d95f02","#7570b3","#e7298a","#07004D","#E6AB02","#FE5F55","#54494B","#006E90","#BC96E6"],Or={width:600,height:500,margins:{top:28,right:28,bottom:58,left:66},background:"#ffffff",frame:{color:"#444444",width:1},typography:{fontFamily:"Arial, Helvetica, sans-serif",fontSize:12,axisTitleSize:14,axisTitleWeight:400,legendSize:12},axis:{color:"#444444",tickSize:5,tickPadding:7,ticks:6,numberFormat:".1f"},colors:$k,line:{width:2,dash:null},marker:{radius:2.5,fill:null,stroke:"#ffffff",strokeWidth:.5},reference:{color:"#BEBEBE",width:1.5,dash:"2,3"},legend:{position:"top",swatchWidth:12,columns:null},tip:{digits:3},predictionDistribution:{emphasizedTrue:"#009E73",nonEmphasizedTrue:"#F4FFF0",emphasizedFalse:"#FAC8CD",nonEmphasizedFalse:"#FFF7F8",observedPositive:"#4C5454",observedNegative:"#E0E0E0"}};function JD(e){let t=e.theme??{};return{...Or,width:e.width??Or.width,height:e.height??Or.height,background:t.background??Or.background,colors:e.colors??Or.colors,margins:{...Or.margins,...t.margins},frame:{...Or.frame,...t.frame},typography:{...Or.typography,...t.typography},axis:{...Or.axis,...t.axis},line:{...Or.line,...t.line},marker:{...Or.marker,...t.marker},reference:{...Or.reference,...t.reference},legend:{...Or.legend,...t.legend},tip:{...Or.tip,...t.tip},predictionDistribution:{...Or.predictionDistribution,...t.predictionDistribution}}}function en(e,t={}){let r=t.allGroups??(typeof e=="number"?Array.from({length:e},(s,c)=>`group-${c+1}`):[...e]),n=JD(t);if(!Number.isFinite(n.width)||n.width<=0||!Number.isFinite(n.height)||n.height<=0)throw new Error("Renderer width and height must be positive finite numbers");if(!Number.isInteger(n.tip.digits)||n.tip.digits<0||n.tip.digits>20)throw new Error("Renderer tip digits must be an integer between 0 and 20");let o=r.length<=1?["#000000"]:[...n.colors];if(o.length1;return{theme:{...n,colors:i},groups:r,colors:i,colorByGroup:new Map(r.map((s,c)=>[s,i[c]])),showLegend:a}}function Dk(e){if(!e.operatingPoint)return[];let t=e.operatingPoint.dimension,r=t==="probability_threshold"?e.type==="decision_curve"||e.type==="interventions_avoided"?"threshold":"cutoff":"ppcr";if(t==="probability_threshold"){let n=e.series.map(i=>i.id);if(n.length===0)return[];let o=null;for(let i of n){let s=e.data.filter(u=>u.seriesId===i).map(u=>u[r]).filter(u=>typeof u=="number"&&Number.isFinite(u)),c=new Set(s);if(o===null)o=c;else{let u=o;o=new Set(Array.from(u).filter(f=>c.has(f)))}}return Array.from(o??[]).sort((i,a)=>i-a)}else{let n=e.data.map(i=>i[r]).filter(i=>typeof i=="number"&&Number.isFinite(i));return[...new Set(n)].sort((i,a)=>i-a)}}function eL(e,t){let r=e.series.filter(o=>t.has(o.display.group)),n=new Set(r.map(o=>o.id));return{...e,series:r,data:e.data.filter(o=>n.has(o.seriesId))}}function Cu(e,t,r,n,o){let i=Ql(e),a=n;if(i.length<=1)return r(e,t,a,g=>{a=g,o&&o(g)});let s={...t,allGroups:i,showLegend:!1},c=en(i,s),{theme:u,colorByGroup:f}=c,p=new Map(e.series.map(g=>[g.display.group,g.display.label])),l=new Set(i),m=document.createElement("div");m.className="rtichoke-legend-chart",m.style.maxWidth=`${u.width}px`;let h=document.createElement("div");h.className="rtichoke-legend",h.style.paddingLeft=`${u.margins.left}px`,h.setAttribute("aria-label","Chart legend");let b=new Map;i.forEach(g=>{let S=document.createElement("button");S.type="button",S.className="rtichoke-legend-item",S.setAttribute("aria-pressed","true");let w=p.get(g)??g;S.setAttribute("aria-label",`Toggle series ${w}`);let _=document.createElement("span");_.className="rtichoke-legend-swatch";let v=document.createElement("span");v.className="rtichoke-legend-line",v.style.backgroundColor=f.get(g)??"#000000",_.append(v);let I=document.createElement("span");I.className="rtichoke-legend-label",I.textContent=w,S.append(_,I),h.append(S),b.set(g,S)});let y=document.createElement("div");y.className="rtichoke-legend-content";let x=()=>{let g=eL(e,l),S=r(g,s,a,w=>{a=w,o&&o(w)});y.replaceChildren(S)};return i.forEach(g=>{let S=b.get(g);S.addEventListener("click",()=>{if(l.has(g)){if(l.size<=1)return;l.delete(g),S.setAttribute("aria-pressed","false")}else l.add(g),S.setAttribute("aria-pressed","true");x()})}),m.append(h,y),x(),m}function Us(e,t,r,n,o){if(!e.operatingPoint)return r(e,void 0);let i=Dk(e);if(i.length===0)return r(e,void 0);let a=en(Ql(e),t),{theme:s}=a,c=document.createElement("div");c.className="rtichoke-operating-point-chart",c.style.maxWidth=`${s.width}px`;let u=document.createElement("div");u.className="rtichoke-operating-point-control",u.style.marginLeft=`${s.margins.left}px`,u.style.marginRight=`${s.margins.right}px`;let f=e.operatingPoint.dimension==="probability_threshold"?"Probability threshold":"Predicted positives condition rate (PPCR)",p=e.operatingPoint.dimension==="probability_threshold"?"Probability threshold":"PPCR",l=`rtichoke-v2-slider-${++QD}`,m=document.createElement("label");m.className="rtichoke-operating-point-label",m.htmlFor=l;let h=document.createElement("span");h.textContent=`${p}: `;let b=document.createElement("span");b.className="rtichoke-operating-point-value";let y=document.createElement("input");y.type="range",y.id=l,y.className="rtichoke-operating-point-slider",y.min="0",y.max=String(i.length-1),y.step="1",y.setAttribute("aria-label",f);let x=0;if(n!==void 0){let v=i.indexOf(n);v!==-1&&(x=v)}let g=i[x];y.value=String(x);let S=g.toFixed(s.tip.digits);b.textContent=S,y.setAttribute("aria-valuetext",S),o&&o(g),m.append(h,b),u.append(m,y);let w=document.createElement("div");w.className="rtichoke-operating-point-content";let _=v=>{w.replaceChildren(r(e,v))};return y.addEventListener("input",()=>{let v=Number(y.value),I=i[v],T=I.toFixed(s.tip.digits);b.textContent=T,y.setAttribute("aria-valuetext",T),o&&o(I),_(I)}),c.append(w,u),_(g),c}function tL(e){return new Map(e.series.map(t=>[t.id,t.display]))}function Ql(e){return[...new Set(e.series.map(t=>t.display.group))]}function Pg(e,t){let r=tL(e);return t.map(n=>({...n,group:r.get(n.seriesId).group,label:r.get(n.seriesId).label}))}var rL={true_positives:"TP",true_negatives:"TN",false_positives:"FP",false_negatives:"FN",sensitivity:"Sensitivity",specificity:"Specificity",false_positive_rate:"FPR",ppv:"PPV",npv:"NPV",lift:"Lift",predicted_positives:"Predicted Positives",ppcr:"PPCR",net_benefit:"Net Benefit",net_benefit_interventions_avoided:"Interventions Avoided"},nL=new Set(["true_positives","true_negatives","false_positives","false_negatives","predicted_positives"]);function oL(e,t,r){if(t!=null)return nL.has(e)&&Number.isInteger(t)?String(t):t.toFixed(r)}function $a(e,t,r,n){if(!e||e.length===0)return[];let o=new Map;for(let a of e)a.estimate!==void 0&&a.estimate!==null&&o.set(a.metricId,a.estimate);let i=[];for(let a of t)if(!(n&&n.has(a))&&o.has(a)){let s=o.get(a),c=rL[a]??a,u=oL(a,s,r);u!==void 0&&i.push([c,u])}return i}function ze(e,t){if(e!=null)return typeof e=="number"?e.toFixed(t):String(e)}function Lt(e,t){return t.filter(([,r])=>r!==void 0).map(([r,n])=>`${r}: ${typeof n=="number"?n.toFixed(e):String(n)}`).join(` -`)}function Tg(e,t){let{theme:r}=e,n=new Map(t.series.map(o=>[o.display.group,o.display.label]));return{width:r.width,height:r.height,marginTop:r.margins.top,marginRight:r.margins.right,marginBottom:r.margins.bottom,marginLeft:r.margins.left,style:{background:r.background,color:r.axis.color,fontFamily:r.typography.fontFamily,fontSize:`${r.typography.fontSize}px`},color:{legend:e.showLegend,domain:e.groups,range:e.colors,tickFormat:o=>n.get(o)??o}}}function Fa(e,t,r){return{label:t,domain:r,grid:!1,line:!0,ticks:e.axis.ticks,tickSize:e.axis.tickSize,tickPadding:e.axis.tickPadding,tickFormat:e.axis.numberFormat}}function Tw(e,t){let r={stroke:t.reference.color,strokeWidth:t.reference.width,strokeDasharray:t.reference.dash},n=[];for(let o of e.references??[])o.type==="identity"?n.push(Zt([{x:0,y:0},{x:1,y:1}],{x:"x",y:"y",...r})):o.type==="horizontal"&&o.value!==void 0?n.push(vo([o.value],{...r})):o.type==="path"&&o.points&&n.push(Zt(o.points,{x:"x",y:"y",...r}));return n}function Mg(e,t){return e}function iL(e,t,r=40){let n=new Map;for(let i of e){let a=t(i),s=n.get(a);s||(s=[],n.set(a,s)),s.push(i)}let o=[];for(let i of n.values()){let a=i.length;if(a<=r)o.push(...i);else{let s=new Set;for(let c=0;cf.seriesId,40),a=n.theme,s=o?.marker?.radius??a.marker.radius,c=o?.marker?.stroke??a.marker.stroke,u=o?.marker?.strokeWidth??a.marker.strokeWidth;return Ls(i,{ariaLabel:"ordinary-point",x:t,y:r,fill:"group",stroke:c,strokeWidth:u,r:s})}function ku(e,t,r,n,o){let i=n.groups.length>1,a=o?.marker?.fill??(i?"group":"#f6e3be"),s=o?.marker?.stroke??"#1a1a1a",c=o?.marker?.strokeWidth??2.5,u=o?.marker?.radius??6;return Ls(e,{className:"rtichoke-selected-operating-point",x:t,y:r,fill:a,stroke:s,strokeWidth:c,r:u})}function aL(e,t,r){let n=e/255,o=t/255,i=r/255,a=n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4),s=o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4),c=i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4);return .2126*a+.7152*s+.0722*c}function sL(e){let t=hn(e);if(!t)return"#ffffff";let r=t.rgb(),n=aL(r.r,r.g,r.b),o=(1+.05)/(n+.05);return(n+.05)/(0+.05)>=o?"#000000":"#ffffff"}function zs(e,t){let r=typeof SVGSVGElement<"u"&&e instanceof SVGSVGElement?e:e.querySelector("svg[class^='plot-']")??e.querySelector("svg");if(!r)return;let n=$r(r),o=e.scale?.("x")??r.scale?.("x"),i=e.scale?.("y")??r.scale?.("y");if(!o||!i)return;let a=t.items.filter(y=>Number.isFinite(y.xValue)&&Number.isFinite(y.yValue)).map(y=>({...y,px:o.apply(y.xValue),py:i.apply(y.yValue)})),s=(t.selectedOperatingPointItems??[]).filter(y=>Number.isFinite(y.xValue)&&Number.isFinite(y.yValue)).map(y=>({...y,px:o.apply(y.xValue),py:i.apply(y.yValue)})),c=n.select("g.rtichoke-hover-tooltip");c.empty()&&(c=n.append("g").attr("class","rtichoke-hover-tooltip").style("pointer-events","none").style("display","none"),c.append("path").attr("class","rtichoke-hover-tooltip-arrow"),c.append("rect").attr("class","rtichoke-hover-tooltip-bg"),c.append("text").attr("class","rtichoke-hover-tooltip-text"));let u=c.select("path.rtichoke-hover-tooltip-arrow"),f=c.select("rect.rtichoke-hover-tooltip-bg"),p=c.select("text.rtichoke-hover-tooltip-text");function l(y,x,g,S=!1){let w=x.filter(([,Y])=>Y!=null);if(w.length===0)return;let _=S||x.length===1&&x[0][0]==="Reference",v=t.tooltipStyle==="light",I=t.tooltipStyle==="plotly",T=v?"#ffffff":_&&!I?"#f3f4f6":g,P=v?"#1f2937":I?_?t.theme.frame.color:"#ffffff":_?"#1f2937":sL(g),R=v?"#d1d5db":I?_?t.theme.frame.color:"#ffffff":_?"#d1d5db":"#374151";p.attr("fill",P).attr("font-family",t.theme.typography.fontFamily).attr("font-size",I?"13px":"11px").attr("transform",null),p.selectAll("tspan").remove(),w.forEach(([Y,ee],Z)=>{let ne=p.append("tspan").attr("x","0").attr("dy",Z===0?"1em":I?"1.3em":"1.2em"),M=Y!==""&&Y!==null&&Y!==void 0,$=ee!==""&&ee!==null&&ee!==void 0;M&&$?(ne.append("tspan").attr("font-weight","bold").text(`${Y}: `),ne.append("tspan").attr("font-weight","normal").text(String(ee))):M?ne.append("tspan").attr("font-weight","bold").text(String(Y)):$&&ne.append("tspan").attr("font-weight","normal").text(String(ee))});let C=p.node();if(!C)return;let N=C.getBBox(),G=8,D=6,O=Math.max(N.width+G*2,60),z=N.height+D*2,[U,W]=ma(y,r),B=r?.viewBox?.baseVal,q=B&&B.width>0?B.width:r?.width?.baseVal?.value||t.theme.width,X=B&&B.height>0?B.height:r?.height?.baseVal?.value||t.theme.height,J=t.theme.margins,A=U+12;A+O>q-J.right&&(A=U-12-O),AX-J.bottom&&(K=X-J.bottom-z),I){let Y=A>U?A:A+O;u.attr("d",`M${U},${W} L${Y},${W-6} L${Y},${W+6} Z`).attr("fill",T).attr("stroke",R).attr("stroke-width",1)}else u.attr("d",null);f.attr("x",A).attr("y",K).attr("width",O).attr("height",z).attr("fill",T).attr("stroke",R).attr("stroke-width",1).attr("rx",I?0:4).attr("ry",I?0:4).style("filter",I?"none":"drop-shadow(0 2px 4px rgba(0,0,0,0.15))"),p.attr("transform",`translate(${A+G-N.x}, ${K+D-N.y})`),c.style("display",null)}function m(){c.style("display","none")}let h=n.select("g.rtichoke-hover-targets");h.empty()||h.remove(),h=n.insert("g","g.rtichoke-hover-tooltip").attr("class","rtichoke-hover-targets");for(let y of t.references??[]){let x=y.backgroundColor??"#f3f4f6",g=[["Reference",y.label]];if(y.type==="identity"){let S=y.points&&y.points.length>=2?y.points:[{x:0,y:0},{x:1,y:1}],w=S[0].x,_=S[S.length-1].x,v=S.map((I,T)=>`${T===0?"M":"L"}${o.apply(I.x)},${i.apply(I.y)}`).join(" ");h.append("path").attr("class","rtichoke-hover-ref-target").attr("d",v).attr("fill","none").attr("stroke","transparent").attr("stroke-width",12).style("pointer-events","stroke").on("pointermove",I=>{if(t.tooltipStyle==="light"||t.tooltipStyle==="plotly"){let[T]=ma(I,r),P=Array.isArray(o.range)?o.range[0]:typeof o.range=="function"?o.range()[0]:t.theme.margins.left,R=Array.isArray(o.range)?o.range[o.range.length-1]:typeof o.range=="function"?o.range()[o.range().length-1]:t.theme.width-t.theme.margins.right,C=t.xDomain?t.xDomain[0]:0,N=t.xDomain?t.xDomain[1]:1,G;if(typeof o.invert=="function")G=o.invert(T);else{let U=R!==P?(T-P)/(R-P):0;G=C+U*(N-C)}let D=Math.max(w,Math.min(_,G)),O=js(D),z=[[y.label,""],["Predicted",O],["Observed",O]];l(I,z,x,!0)}else l(I,g,x,!0)}).on("mouseleave pointerleave",m)}else if(y.type==="horizontal"&&y.value!==void 0){let S=i.apply(y.value);h.append("line").attr("class","rtichoke-hover-ref-target").attr("x1",t.theme.margins.left).attr("x2",t.theme.width-t.theme.margins.right).attr("y1",S).attr("y2",S).attr("stroke","transparent").attr("stroke-width",12).style("pointer-events","stroke").on("pointermove",w=>l(w,g,x,!0)).on("mouseleave pointerleave",m)}else if(y.type==="path"&&y.points&&y.points.length>0){let S=y.points.map((w,_)=>`${_===0?"M":"L"}${o.apply(w.x)},${i.apply(w.y)}`).join(" ");h.append("path").attr("class","rtichoke-hover-ref-target").attr("d",S).attr("fill","none").attr("stroke","transparent").attr("stroke-width",12).style("pointer-events","stroke").on("pointermove",w=>l(w,g,x,!0)).on("mouseleave pointerleave",m)}}let b=new Map;for(let y of a){let x=b.get(y.seriesId);x||(x=[],b.set(y.seriesId,x)),x.push(y)}for(let y of b.values()){if(y.length<2)continue;let x=y.map((g,S)=>`${S===0?"M":"L"}${g.px},${g.py}`).join(" ");h.append("path").attr("class","rtichoke-hover-line-target").attr("d",x).attr("fill","none").attr("stroke","transparent").attr("stroke-width",12).style("pointer-events","stroke").on("pointermove",g=>{let[S,w]=ma(g,r),_=1/0,v=y[0];for(let I of y){let T=I.px-S,P=I.py-w,R=T*T+P*P;R<_&&(_=R,v=I)}l(g,v.tooltipFields,v.backgroundColor)}).on("mouseleave pointerleave",m)}for(let y of a)h.append("circle").attr("class","rtichoke-hover-point-target").attr("cx",y.px).attr("cy",y.py).attr("r",8).attr("fill","transparent").style("pointer-events","all").on("pointermove",x=>l(x,y.tooltipFields,y.backgroundColor)).on("mouseleave pointerleave",m);for(let y of s)h.append("circle").attr("class","rtichoke-hover-op-target").attr("cx",y.px).attr("cy",y.py).attr("r",10).attr("fill","transparent").style("pointer-events","all").on("pointermove",x=>l(x,y.tooltipFields,y.backgroundColor)).on("mouseleave pointerleave",m);n.on("mouseleave pointerleave",m)}var cL=100;function js(e){if(!Number.isFinite(e))return String(e);let t=Math.round(e*1e3)/1e3;return String(t)}function Fk(e,t){let r=e.filter(Number.isFinite);if(r.length===0)return[...t];let n=Math.min(...r),o=Math.max(...r),i=Math.abs(t[1]-t[0]),s=(o-n||i||1)*.05;return[n-s,o+s]}function uL(e,t){let r=e.data.map(o=>o.predicted),n=e.data.map(o=>o.observed);for(let o of e.distribution??[])r.push(o.midpoint-o.binWidth/2),r.push(o.midpoint+o.binWidth/2);for(let o of e.references??[])if(o.type==="identity")r.push(0,1),n.push(0,1);else if(o.type==="horizontal"&&o.value!==void 0)n.push(o.value);else if(o.type==="path")for(let i of o.points??[])r.push(i.x),n.push(i.y);return{x:Fk(r,t.x),y:Fk(n,t.y)}}function Pw(e,t,r=[0,1],n=[0,1],o){let i=e-t.left-t.right,a=Math.abs(r[1]-r[0]),s=Math.abs(n[1]-n[0]),c=Number.isFinite(a)&&a>0?a:1,u=Number.isFinite(s)&&s>0?s:1,f=i*(u/c),p=o??t.bottom;return Math.round(t.top+f+p)}function qn(e,t){let r=ci(e);for(let n of r.querySelectorAll('[aria-label$="axis label"] text'))n.style.fontSize=`${t.typography.axisTitleSize}px`,n.style.fontWeight=String(t.typography.axisTitleWeight);for(let n of r.querySelectorAll('[aria-label="frame"]'))n.setAttribute("stroke",t.frame.color);if(r instanceof HTMLElement){r.style.fontSize=`${t.typography.legendSize}px`;for(let n of r.querySelectorAll('svg[width="15"], div[class*="-swatches"] svg'))n.setAttribute("width",String(t.legend.swatchWidth)),n.setAttribute("height","10")}return r}var fL=["sensitivity","specificity","false_positive_rate","ppv","npv","lift","net_benefit","predicted_positives","true_positives","true_negatives","false_positives","false_negatives"],lL=["sensitivity","ppv","specificity","false_positive_rate","npv","lift","net_benefit","predicted_positives","true_positives","true_negatives","false_positives","false_negatives"],pL=["sensitivity","specificity","false_positive_rate","ppv","npv","lift","net_benefit","predicted_positives","true_positives","true_negatives","false_positives","false_negatives"],mL=["lift","sensitivity","specificity","false_positive_rate","ppv","npv","net_benefit","predicted_positives","true_positives","true_negatives","false_positives","false_negatives"];function dL(e,t={},r){Si(e);let n=en(Ql(e),t),{theme:o,colorByGroup:i}=n,a=e.operatingPoint?.dimension,s=Pg(e,e.data).map(x=>{let g=1-x.specificity,S=[["Series",x.label]];return a==="ppcr"?(x.ppcr!==void 0&&S.push(["PPCR",ze(x.ppcr,o.tip.digits)]),S.push(["Cutoff",ze(x.cutoff,o.tip.digits)])):(S.push(["Cutoff",ze(x.cutoff,o.tip.digits)]),x.ppcr!==void 0&&S.push(["PPCR",ze(x.ppcr,o.tip.digits)])),x.performance&&x.performance.length>0?S.push(["Sensitivity",ze(x.sensitivity,o.tip.digits)],["Specificity",ze(x.specificity,o.tip.digits)],["FPR",ze(g,o.tip.digits)],...$a(x.performance,fL,o.tip.digits,new Set(["sensitivity","specificity","false_positive_rate"]))):S.push(["Sensitivity",ze(x.sensitivity,o.tip.digits)],["Specificity",ze(x.specificity,o.tip.digits)],["False Positive Rate",ze(g,o.tip.digits)]),{...x,false_positive_rate:g,tooltipFields:S,title:Lt(o.tip.digits,S)}}),c=Tw(e,o);c.push(Zt(s,{x:"false_positive_rate",y:"sensitivity",z:"seriesId",stroke:"group",strokeWidth:o.line.width,strokeDasharray:o.line.dash??void 0}),Ou(s,"false_positive_rate","sensitivity",n,t.theme));let u=[];if(r!==void 0&&e.operatingPoint){let x=e.operatingPoint.dimension==="probability_threshold"?"cutoff":"ppcr";u=s.filter(g=>g[x]===r),u.length>0&&c.push(ku(u,"false_positive_rate","sensitivity",n,t.theme))}let f=e.xAxis.domain??[0,1],p=e.yAxis.domain??[0,1],l=Pw(o.width,o.margins,f,p),m=qn({...Tg(n,e),height:l,x:Fa(o,e.xAxis.label,f),y:Fa(o,e.yAxis.label,p),marks:Mg(c,o)},o),h=s.map(x=>({seriesId:x.seriesId,group:x.group,xValue:x.false_positive_rate,yValue:x.sensitivity,tooltipFields:x.tooltipFields,backgroundColor:i.get(x.group)??"#1b9e77"})),b=u.map(x=>({seriesId:x.seriesId,group:x.group,xValue:x.false_positive_rate,yValue:x.sensitivity,tooltipFields:x.tooltipFields,backgroundColor:i.get(x.group)??"#1b9e77"})),y=[];for(let x of e.references??[]){let g=x.label??(x.type==="identity"?"Identity":"Reference");x.type==="identity"?y.push({type:"identity",points:[{x:0,y:0},{x:1,y:1}],label:g}):x.type==="horizontal"&&x.value!==void 0?y.push({type:"horizontal",value:x.value,label:g}):x.type==="path"&&x.points&&y.push({type:"path",points:x.points,label:g})}return zs(m,{items:h,selectedOperatingPointItems:b,references:y,theme:o}),m}function Mw(e,t={}){return Cu(e,t,(r,n,o,i)=>Nu(r,(a,s,c)=>Us(a,n,(u,f)=>dL(u,n,f),s,c),o,i))}function hL(e,t,r){let n=typeof SVGSVGElement<"u"&&e instanceof SVGSVGElement?e:e.querySelector("svg[class^='plot-']")??e.querySelector("svg");if(!n)return;let o=$r(n),i=e.scale?.("x")??n.scale?.("x");if(!i)return;let a=o.select("g.rtichoke-hover-tooltip");a.empty()&&(a=o.append("g").attr("class","rtichoke-hover-tooltip").style("pointer-events","none").style("display","none"),a.append("path").attr("class","rtichoke-hover-tooltip-arrow"),a.append("rect").attr("class","rtichoke-hover-tooltip-bg"),a.append("text").attr("class","rtichoke-hover-tooltip-text"));let s=a.select("path.rtichoke-hover-tooltip-arrow"),c=a.select("rect.rtichoke-hover-tooltip-bg"),u=a.select("text.rtichoke-hover-tooltip-text");function f(b,y,x){let g=y.filter(([,W])=>W!=null);if(g.length===0)return;u.attr("fill","#ffffff").attr("font-family",r.theme.typography.fontFamily).attr("font-size","13px").attr("transform",null),u.selectAll("tspan").remove(),g.forEach(([W,B],q)=>{let X=u.append("tspan").attr("x","0").attr("dy",q===0?"1em":"1.2em"),J=W!==""&&W!==null&&W!==void 0,A=B!==""&&B!==null&&B!==void 0;J&&A?(X.append("tspan").attr("font-weight","bold").text(`${W}: `),X.append("tspan").attr("font-weight","normal").text(String(B))):J?X.append("tspan").attr("font-weight","bold").text(String(W)):A&&X.append("tspan").attr("font-weight","normal").text(String(B))});let S=u.node();if(!S)return;let w=S.getBBox(),_=8,v=6,I=Math.max(w.width+_*2,60),T=w.height+v*2,[P,R]=ma(b,n),C=n?.viewBox?.baseVal,N=C&&C.width>0?C.width:n?.width?.baseVal?.value||r.theme.width,G=C&&C.height>0?C.height:n?.height?.baseVal?.value||r.theme.height,D=r.theme.margins,O=P+12;O+I>N-D.right&&(O=P-12-I),OG-D.bottom&&(z=G-D.bottom-T);let U=O>P?O:O+I;s.attr("d",`M${P},${R} L${U},${R-6} L${U},${R+6} Z`).attr("fill",x).attr("stroke","#ffffff").attr("stroke-width",1),c.attr("x",O).attr("y",z).attr("width",I).attr("height",T).attr("fill",x).attr("stroke","#ffffff").attr("stroke-width",1).attr("rx",0).attr("ry",0).style("filter",null),u.attr("transform",`translate(${O+_-w.x}, ${z+v-w.y})`),a.style("display",null)}function p(){a.style("display","none")}let l=o.select("g.rtichoke-hover-targets");l.empty()||l.remove(),l=o.insert("g","g.rtichoke-hover-tooltip").attr("class","rtichoke-hover-targets");let m=e.scale?.("y")??n.scale?.("y"),h=[...t].sort((b,y)=>y.count-b.count);for(let b of h){if(b.count<=0)continue;let y=b.midpoint-b.binWidth/2,x=b.midpoint+b.binWidth/2,g=Math.abs(y)<1e-9?0:y,S=Math.abs(x)<1e-9?0:x,w=js(g),_=js(S),v=g<=0?`[0,${_}]`:`( ${w} , ${_} ]`,I=`${b.count} observations in ${v}`,T=[];r.groupCount>1&&T.push([b.label,""]),T.push(["",I]);let P=i.apply(y),R=i.apply(x),C=Math.min(P,R),N=Math.max(Math.abs(R-P),2),G=0,D=r.height??r.theme.height;if(m){let O=m.apply(0),z=m.apply(b.count);G=Math.min(O,z),D=Math.max(Math.abs(O-z),4)}l.append("rect").attr("class","rtichoke-hover-hist-target").attr("x",C).attr("width",N).attr("y",G).attr("height",D).attr("fill","transparent").style("pointer-events","all").on("pointermove",O=>f(O,T,r.colorByGroup.get(b.group)??"#1b9e77")).on("mouseleave pointerleave",p)}o.on("mouseleave pointerleave",p)}function gL(e,t,r,n){Si(e);let o=en(Ql(e),t),{theme:i,colorByGroup:a}=o,s=Pg(e,e.data).map(P=>{let R=[];o.groups.length>1&&R.push([P.label,""]);let C=js(P.predicted),N=js(P.observed);if(P.method==="discrete"&&P.events!==void 0&&P.total!==void 0){let G=Number.isInteger(P.events)?String(P.events):js(P.events),D=Number.isInteger(P.total)?String(P.total):js(P.total);N+=` ( ${G} / ${D} )`}return R.push(["Predicted",C]),R.push(["Observed",N]),{...P,tooltipFields:R}}),c=Tw(e,i);c.push(Zt(s,{x:"predicted",y:"observed",z:"seriesId",stroke:"group",strokeWidth:i.line.width,strokeDasharray:i.line.dash??void 0}));let u=s.filter(P=>P.method==="discrete");u.length>0&&c.push(Ls(u,{x:"predicted",y:"observed",fill:i.marker.fill??"group",stroke:i.marker.stroke,strokeWidth:i.marker.strokeWidth,r:i.marker.radius}));let f=(e.distribution?.length??0)>0,p=n.y,l=n.x,m,h=cL,b=i,y=f?8:i.margins.bottom,x=i.margins.bottom;if(r){x=40;let N=19.4;h=Math.round(87.3+x);let D=378.3;y=Math.round(N);let O=550,z=Math.max(50,O-40),U=Math.max(50,D),W=Math.abs(l[1]-l[0])||1,B=Math.abs(p[1]-p[0])||1,q=Math.min(z/W,U/B),X=W*q,J=B*q,A=Math.max(10,(O-X)/2),K=Math.max(10,O-X-A),Y=Math.max(0,D-J),ee=25+Y/2;y=Math.round(N)+Y/2,m=550-h,b={...i,width:O,margins:{top:ee,left:A,right:K,bottom:y}}}else f?(y=8,m=Pw(i.width,i.margins,l,p,y)):m=Pw(i.width,i.margins,l,p,i.margins.bottom);let g={...o,theme:b},S=qn({...Tg(g,e),height:m,marginBottom:y,x:f?{...Fa(b,e.xAxis.label,l),axis:null,label:null}:Fa(b,e.xAxis.label,l),y:Fa(b,e.yAxis.label,p),marks:Mg(c,b)},b);S.style.cursor="crosshair";let w=s.map(P=>({seriesId:P.seriesId,group:P.group,xValue:P.predicted,yValue:P.observed,tooltipFields:P.tooltipFields,backgroundColor:a.get(P.group)??"#1b9e77"})),_=[];for(let P of e.references??[]){let R=P.label&&P.label!=="Identity"?P.label:P.type==="identity"?"Perfectly Calibrated":"Reference";if(P.type==="identity"){let C=Math.max(0,Math.min(l[0],l[1]),Math.min(p[0],p[1])),N=Math.min(1,Math.max(l[0],l[1]),Math.max(p[0],p[1]));C<=N&&_.push({type:"identity",points:[{x:C,y:C},{x:N,y:N}],label:R,backgroundColor:b.reference.color})}else P.type==="horizontal"&&P.value!==void 0?_.push({type:"horizontal",value:P.value,label:R,backgroundColor:b.reference.color}):P.type==="path"&&P.points&&_.push({type:"path",points:P.points,label:R,backgroundColor:b.reference.color})}if(zs(S,{items:w,references:_,theme:b,tooltipStyle:"plotly",xDomain:l,yDomain:p}),!f||!e.distribution)return S;let v=Pg(e,e.distribution),I=qn({...Tg(g,e),height:h,marginTop:0,marginBottom:x,x:Fa(b,e.xAxis.label,l),y:{label:null,grid:!1,ticks:3,tickSize:b.axis.tickSize,tickPadding:b.axis.tickPadding},color:{legend:!1,domain:o.groups,range:o.colors},marks:Mg([Yi(v,{x1:P=>P.midpoint-P.binWidth/2,x2:P=>P.midpoint+P.binWidth/2,y:"count",fill:"group",fillOpacity:1/Math.max(o.groups.length,1)})],b)},b);I.style.cursor="crosshair",hL(I,v,{theme:b,xDomain:l,groupCount:o.groups.length,colorByGroup:a,height:h});let T=document.createElement("div");return T.className="rtichoke-calibration",T.style.width=`${b.width}px`,T.style.maxWidth="100%",T.append(S,I),T}function Lk(e,t,r){let n=e.data.map(s=>s.observed).filter(Number.isFinite),o={x:e.xAxis.domain??[0,1],y:e.yAxis.domain??[Math.min(0,...n),Math.max(1,...n)]},i=uL(e,o),a=s=>{let c=gL(e,t,r,s?i:o);return c.dataset.calibrationZoom=s?"autorange":"configured",c.addEventListener("dblclick",u=>{u.preventDefault();let f=a(!s);c.replaceWith(f)}),c};return a(!1)}function yL(e,t={}){return Lk(e,t,!1)}function Vk(e){return Lk(e,{},!0)}function bL(e,t,r,n,o){Si(e);let i=en(Ql(e),t),{theme:a,colorByGroup:s}=i,c=e.operatingPoint?.dimension,u=Pg(e,e.data).map(y=>{let x=y,g=[["Series",y.label]];return e.type==="precision_recall"?(c==="ppcr"?(x.ppcr!==void 0&&g.push(["PPCR",ze(x.ppcr,a.tip.digits)]),g.push(["Cutoff",ze(x.cutoff,a.tip.digits)])):(g.push(["Cutoff",ze(x.cutoff,a.tip.digits)]),x.ppcr!==void 0&&g.push(["PPCR",ze(x.ppcr,a.tip.digits)])),g.push(["Sensitivity",ze(x.sensitivity,a.tip.digits)],["PPV",ze(x.ppv,a.tip.digits)]),x.performance&&x.performance.length>0&&g.push(...$a(x.performance,lL,a.tip.digits,new Set(["sensitivity","ppv"])))):e.type==="gains"?(c==="probability_threshold"?(g.push(["Cutoff",ze(x.cutoff,a.tip.digits)]),g.push(["PPCR",ze(x.ppcr,a.tip.digits)])):(g.push(["PPCR",ze(x.ppcr,a.tip.digits)]),g.push(["Cutoff",ze(x.cutoff,a.tip.digits)])),g.push(["Sensitivity",ze(x.sensitivity,a.tip.digits)]),x.performance&&x.performance.length>0&&g.push(...$a(x.performance,pL,a.tip.digits,new Set(["sensitivity"])))):e.type==="lift"&&(c==="probability_threshold"?(g.push(["Cutoff",ze(x.cutoff,a.tip.digits)]),g.push(["PPCR",ze(x.ppcr,a.tip.digits)])):(g.push(["PPCR",ze(x.ppcr,a.tip.digits)]),g.push(["Cutoff",ze(x.cutoff,a.tip.digits)])),g.push(["Lift",ze(x.lift,a.tip.digits)]),x.performance&&x.performance.length>0&&g.push(...$a(x.performance,mL,a.tip.digits,new Set(["lift"])))),{...y,tooltipFields:g,title:Lt(a.tip.digits,g)}}),f=Tw(e,a);f.push(Zt(u,{x:r,y:n,z:"seriesId",stroke:"group",strokeWidth:a.line.width,strokeDasharray:a.line.dash??void 0}),Ou(u,r,n,i,t.theme));let p=[];if(o!==void 0&&e.operatingPoint){let x=e.operatingPoint.dimension==="probability_threshold"?"cutoff":"ppcr";p=u.filter(g=>g[x]===o),p.length>0&&f.push(ku(p,r,n,i,t.theme))}let l=qn({...Tg(i,e),x:Fa(a,e.xAxis.label,e.xAxis.domain),y:Fa(a,e.yAxis.label,e.yAxis.domain),marks:Mg(f,a)},a),m=u.map(y=>({seriesId:y.seriesId,group:y.group,xValue:Number(y[r]),yValue:Number(y[n]),tooltipFields:y.tooltipFields,backgroundColor:s.get(y.group)??"#1b9e77"})),h=p.map(y=>({seriesId:y.seriesId,group:y.group,xValue:Number(y[r]),yValue:Number(y[n]),tooltipFields:y.tooltipFields,backgroundColor:s.get(y.group)??"#1b9e77"})),b=[];for(let y of e.references??[]){let x=y.label??(y.type==="identity"?"Identity":"Reference");y.type==="identity"?b.push({type:"identity",points:[{x:0,y:0},{x:1,y:1}],label:x}):y.type==="horizontal"&&y.value!==void 0?b.push({type:"horizontal",value:y.value,label:x}):y.type==="path"&&y.points&&b.push({type:"path",points:y.points,label:x})}return zs(l,{items:m,selectedOperatingPointItems:h,references:b,theme:a}),l}function xL(e){return[...new Set(e.series.map(t=>t.horizon).filter(t=>t!==void 0))]}function wL(e,t){let r=e.series.filter(o=>o.horizon===void 0||o.horizon===t),n=new Set(r.map(o=>o.id));return{...e,series:r,data:e.data.filter(o=>n.has(o.seriesId)),references:e.references?.filter(o=>o.scope!=="population_horizon"||o.horizon===t)}}function Nu(e,t,r,n){let o=xL(e);if(o.length<=1)return t(e,r,n);let i=r,a=document.createElement("div");a.className="rtichoke-horizon-chart";let s=document.createElement("label");s.className="rtichoke-horizon-control",s.textContent="Fixed Time Horizon: ";let c=document.createElement("select");c.className="rtichoke-horizon-select",c.setAttribute("aria-label","Fixed Time Horizon");for(let p of o){let l=document.createElement("option");l.value=String(p),l.textContent=String(p),c.append(l)}s.append(c);let u=document.createElement("div"),f=p=>{u.replaceChildren(t(wL(e,p),i,l=>{i=l,n&&n(l)}))};return c.addEventListener("change",()=>f(Number(c.value))),a.append(s,u),f(o[0]),a}function Cw(e,t,r,n){return Cu(e,t,(o,i,a,s)=>Nu(o,(c,u,f)=>Us(c,i,(p,l)=>bL(p,i,r,n,l),u,f),a,s))}function Ow(e,t={}){return Cw(e,t,"sensitivity","ppv")}function kw(e,t={}){return Cw(e,t,"ppcr","sensitivity")}function Nw(e,t={}){return Cw(e,t,"ppcr","lift")}var SL=["net_benefit","ppcr","sensitivity","specificity","false_positive_rate","ppv","npv","lift","predicted_positives","true_positives","true_negatives","false_positives","false_negatives"];function Rw(e,t={}){return Si(e),Cu(e,t,(r,n,o,i)=>Nu(r,(a,s,c)=>Us(a,n,(u,f)=>vL(u,n,f),s,c),o,i))}function vL(e,t,r){let n=[...new Set(e.series.map(g=>g.display.group))],o=en(n,{...t,showLegend:!1}),{theme:i,colorByGroup:a}=o,s=new Map(e.series.map(g=>[g.id,g.display])),c=new Map(e.series.map(g=>[g.display.group,g.display.label])),u=e.data.map(g=>{let S=[["Series",s.get(g.seriesId).label],["Threshold",ze(g.threshold,i.tip.digits)],["Net Benefit",ze(g.netBenefit,i.tip.digits)]];return g.performance&&g.performance.length>0&&S.push(...$a(g.performance,SL,i.tip.digits,new Set(["net_benefit"]))),{...g,group:s.get(g.seriesId).group,label:s.get(g.seriesId).label,tooltipFields:S,title:Lt(i.tip.digits,S)}}),f={stroke:i.reference.color,strokeWidth:i.reference.width,strokeDasharray:i.reference.dash},p=[];for(let g of e.references)g.benchmark==="treat_none"?p.push(vo([0],{...f})):p.push(Zt(g.points,{x:"x",y:"y",...f}));p.push(Zt(u,{x:"threshold",y:"netBenefit",z:"seriesId",stroke:"group",strokeWidth:i.line.width,strokeDasharray:i.line.dash??void 0}),Ou(u,"threshold","netBenefit",o,t.theme));let l=[];r!==void 0&&e.operatingPoint&&(l=u.filter(g=>g.threshold===r),l.length>0&&p.push(ku(l,"threshold","netBenefit",o,t.theme)));let m=(g,S)=>({label:g,domain:S,grid:!1,line:!0,ticks:i.axis.ticks,tickSize:i.axis.tickSize,tickPadding:i.axis.tickPadding,tickFormat:i.axis.numberFormat}),h=qn({width:i.width,height:i.height,marginTop:i.margins.top,marginRight:i.margins.right,marginBottom:i.margins.bottom,marginLeft:i.margins.left,style:{background:i.background,color:i.axis.color,fontFamily:i.typography.fontFamily,fontSize:`${i.typography.fontSize}px`},color:{legend:o.showLegend,domain:o.groups,range:o.colors,tickFormat:g=>c.get(g)??g},x:m(e.xAxis.label,e.xAxis.domain),y:m(e.yAxis.label,e.yAxis.domain),marks:p},i),b=u.map(g=>({seriesId:g.seriesId,group:g.group,xValue:g.threshold,yValue:g.netBenefit,tooltipFields:g.tooltipFields,backgroundColor:a.get(g.group)??"#1b9e77"})),y=l.map(g=>({seriesId:g.seriesId,group:g.group,xValue:g.threshold,yValue:g.netBenefit,tooltipFields:g.tooltipFields,backgroundColor:a.get(g.group)??"#1b9e77"})),x=e.references.map(g=>{if(g.type==="horizontal"){let S=g.label??"Treat None";return{type:"horizontal",value:g.value,label:S}}else if(g.type==="path"){let S=g.population?`Treat All \u2014 ${g.population}`:"Treat All",w=g.label??S;return{type:"path",points:g.points,label:w}}return{type:"horizontal",value:0,label:g.label??"Reference"}});return zs(h,{items:b,selectedOperatingPointItems:y,references:x,theme:i}),h}var IL=["net_benefit_interventions_avoided","net_benefit","predicted_positives","ppcr","true_negatives","false_negatives"];function Ew(e,t={}){return Si(e),Cu(e,t,(r,n,o,i)=>Nu(r,(a,s,c)=>Us(a,n,(u,f)=>_L(u,n,f),s,c),o,i))}function _L(e,t,r){let n=[...new Set(e.series.map(g=>g.display.group))],o=en(n,{...t,showLegend:!1}),{theme:i,colorByGroup:a}=o,s=new Map(e.series.map(g=>[g.id,g.display])),c=new Map(e.series.map(g=>[g.display.group,g.display.label])),u=e.data.map(g=>{let S=[["Series",s.get(g.seriesId).label],["Threshold",ze(g.threshold,i.tip.digits)],["Interventions Avoided",ze(g.interventionsAvoided,i.tip.digits)]];return g.performance&&g.performance.length>0&&S.push(...$a(g.performance,IL,i.tip.digits,new Set(["net_benefit_interventions_avoided"]))),{...g,group:s.get(g.seriesId).group,label:s.get(g.seriesId).label,tooltipFields:S,title:Lt(i.tip.digits,S)}}),f={stroke:i.reference.color,strokeWidth:i.reference.width,strokeDasharray:i.reference.dash},p=[];for(let g of e.references)g.benchmark==="treat_all"?p.push(vo([0],{...f})):p.push(Zt(g.points,{x:"x",y:"y",...f}));p.push(Zt(u,{x:"threshold",y:"interventionsAvoided",z:"seriesId",stroke:"group",strokeWidth:i.line.width,strokeDasharray:i.line.dash??void 0}),Ou(u,"threshold","interventionsAvoided",o,t.theme));let l=[];r!==void 0&&e.operatingPoint&&(l=u.filter(g=>g.threshold===r),l.length>0&&p.push(ku(l,"threshold","interventionsAvoided",o,t.theme)));let m=(g,S)=>({label:g,domain:S,grid:!1,line:!0,ticks:i.axis.ticks,tickSize:i.axis.tickSize,tickPadding:i.axis.tickPadding,tickFormat:i.axis.numberFormat}),h=qn({width:i.width,height:i.height,marginTop:i.margins.top,marginRight:i.margins.right,marginBottom:i.margins.bottom,marginLeft:i.margins.left,style:{background:i.background,color:i.axis.color,fontFamily:i.typography.fontFamily,fontSize:`${i.typography.fontSize}px`},color:{legend:o.showLegend,domain:o.groups,range:o.colors,tickFormat:g=>c.get(g)??g},x:m(e.xAxis.label,e.xAxis.domain),y:m(e.yAxis.label,e.yAxis.domain),marks:p},i),b=u.map(g=>({seriesId:g.seriesId,group:g.group,xValue:g.threshold,yValue:g.interventionsAvoided,tooltipFields:g.tooltipFields,backgroundColor:a.get(g.group)??"#1b9e77"})),y=l.map(g=>({seriesId:g.seriesId,group:g.group,xValue:g.threshold,yValue:g.interventionsAvoided,tooltipFields:g.tooltipFields,backgroundColor:a.get(g.group)??"#1b9e77"})),x=e.references.map(g=>{if(g.type==="horizontal"){let S=g.label??"Treat All";return{type:"horizontal",value:g.value,label:S}}else if(g.type==="path"){let S=g.population?`Treat None \u2014 ${g.population}`:"Treat None",w=g.label??S;return{type:"path",points:g.points,label:w}}return{type:"horizontal",value:0,label:g.label??"Reference"}});return zs(h,{items:b,selectedOperatingPointItems:y,references:x,theme:i}),h}var PL=0,TL=0,jk={real_positive:"Event",target_event:"Event",real_competing:"Competing event",competing_outcome:"Competing event",real_negative:"Event-free",no_target_event:"Event-free",real_censored:"Censored",unknown:"Censored"},Uk={real_positive:"#4C5454",real_positives_est:"#4C5454",target_event:"#4C5454",real_competing:"#C880B7",real_competing_est:"#C880B7",competing_outcome:"#C880B7",real_negative:"#E0E0E0",real_negatives_est:"#E0E0E0",no_target_event:"#E0E0E0",real_censored:"#E3F09B",real_censored_est:"#E3F09B",unknown:"#E3F09B"},zk=["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"];function ML(e,t){return t&&t.trim()!==""?t:jk[e]?jk[e]:e}function Bk(e){let t=e.horizon??0,r=e.states,n=!1,o=!1,i=!1;for(let u of r)u.estimate!==void 0&&u.estimate!==null&&(n=!0),u.mass!==void 0&&u.mass!==null&&(o=!0),u.count!==void 0&&u.count!==null&&(i=!0);let a=null,s=null;o&&(a=r.reduce((u,f)=>u+(f.mass!==void 0&&f.mass!==null?f.mass:0),0)),i&&(s=r.reduce((u,f)=>u+(f.count!==void 0&&f.count!==null?f.count:0),0));let c=r.map(u=>{let f=ML(u.stateId,u.label),p=0;return n&&u.estimate!==void 0&&u.estimate!==null?p=u.estimate:o&&u.mass!==void 0&&u.mass!==null&&a&&a>0?p=u.mass/a:i&&u.count!==void 0&&u.count!==null&&s&&s>0&&(p=u.count/s),{stateId:u.stateId,label:f,proportion:p,percentage:p*100,estimate:u.estimate??null,mass:u.mass??null,count:u.count??null}});return{evaluationId:e.evaluationId,horizon:t,estimator:e.estimator,estimateOrigin:e.estimateOrigin,censoringHeuristic:e.censoringHeuristic,competingHeuristic:e.competingHeuristic,states:c,totalMass:a,totalCount:s}}function Gk(e,t,r,n,o,i){let a=[];a.push([i?"Time":"Horizon",e]),a.push(["Outcome status",t.label]);let s=t.count??t.mass,c=r??n;return s!=null&&a.push(["Count",s]),a.push(["Percent",`${t.percentage.toFixed(1)}%`]),c!=null&&a.push(["Denominator",c]),a.push(["Accounting","Raw observed status"]),(t.stateId==="real_censored"||t.label.toLowerCase().includes("censored"))&&a.push(["Note","Censored before horizon; no censoring adjustment is applied."]),Lt(o,a)}function Aw(e,t={}){mb(e);let r=++PL,n=en(2,t),{theme:o}=n,i=o.tip.digits,a=e.evaluations[0].id,s=document.createElement("div");s.className="rtichoke-outcome-distribution",s.style.width=`${o.width}px`,s.style.maxWidth="100%";let c=e.title??"Outcome Distribution",u=document.createElement("h3");u.className="rtichoke-outcome-distribution__title",u.textContent=c,s.append(u);let f=document.createElement("div");f.className="rtichoke-outcome-distribution__controls",s.append(f);let p=document.createElement("div");p.className="rtichoke-outcome-distribution__readout",s.append(p);let l=document.createElement("div");l.className="rtichoke-operating-point-control",l.style.marginLeft=`${o.margins.left}px`,l.style.marginRight=`${o.margins.right}px`;let m=`rtichoke-od-slider-${++TL}`,h=document.createElement("label");h.className="rtichoke-operating-point-label",h.htmlFor=m;let b=document.createElement("span"),y=document.createElement("span");y.className="rtichoke-operating-point-value",h.append(b,y);let x=document.createElement("input");x.type="range",x.id=m,x.className="rtichoke-operating-point-slider",l.append(h,x);let g=document.createElement("div");g.className="rtichoke-legend",g.style.paddingLeft=`${o.margins.left}px`;let S=document.createElement("div");S.className="rtichoke-outcome-distribution__chart",s.append(l,g,S);let w=new Map,_=0,v=(P,R)=>{let C=`${P}:${R}`;if(w.has(C))return w.get(C);if(Uk[P]){let G=Uk[P];return w.set(C,G),G}let N=zk[_%zk.length];return _++,w.set(C,N),N},I=null,T=()=>{if(f.replaceChildren(),e.evaluations.length>1){let A=document.createElement("div");A.className="rtichoke-pd-radio-group",A.setAttribute("role","radiogroup"),A.setAttribute("aria-label","Evaluation");let K=document.createElement("span");K.className="rtichoke-pd-radio-group-label",K.textContent="Evaluation:",A.append(K);let Y=document.createElement("div");Y.className="rtichoke-pd-radio-options";for(let ee of e.evaluations){let Z=ee.label??ee.model??ee.population??ee.id,ne=document.createElement("label");ne.className="rtichoke-pd-radio-option";let M=document.createElement("input");M.type="radio",M.name=`od-eval-${r}`,M.value=ee.id,M.checked=ee.id===a,M.addEventListener("change",()=>{M.checked&&(a=ee.id,I=null,T())});let $=document.createElement("span");$.textContent=Z,ne.append(M,$),Y.append(ne)}A.append(Y),f.append(A)}let P=e.stateDistributions.filter(A=>A.evaluationId===a);if(P.length===0){l.style.display="none",g.style.display="none",p.replaceChildren(),S.replaceChildren();let A=document.createElement("p");A.className="rtichoke-outcome-distribution__empty",A.textContent="No state distribution data available.",S.append(A);return}let R=new Set,C=!1;for(let A of P){let Y=`${A.estimateOrigin??"unspecified"}:${A.horizon??0}`;if(R.has(Y)){C=!0;break}R.add(Y)}if(C){l.style.display="none",g.style.display="none",p.replaceChildren(),S.replaceChildren();let A=document.createElement("p");A.className="rtichoke-outcome-distribution__empty",A.textContent="Multiple heuristic/method variants detected for evaluation; unsupported data state.",S.append(A);return}let N=P.filter(A=>A.estimateOrigin==="event_table").map(Bk).sort((A,K)=>A.horizon-K.horizon),G=P.filter(A=>A.estimateOrigin==="fixed_time_horizon").map(Bk).sort((A,K)=>A.horizon-K.horizon),D=Array.from(new Set(G.map(A=>A.horizon))).sort((A,K)=>A-K);if(N.length===0&&G.length===0){l.style.display="none",g.style.display="none",p.replaceChildren(),S.replaceChildren();let A=document.createElement("p");A.className="rtichoke-outcome-distribution__empty",A.textContent="No outcome distribution data found for current selection.",S.append(A);return}let O=N.length>0;if(D.length>0){l.style.display="flex",(I===null||!D.includes(I))&&(I=D[D.length-1]);let A=D.indexOf(I);x.min="0",x.max=String(Math.max(0,D.length-1)),x.step="1",x.value=String(Math.max(0,A)),b.textContent="Time: ",y.textContent=I.toFixed(i),x.setAttribute("aria-label","Time horizon"),x.setAttribute("aria-valuetext",I.toFixed(i))}else l.style.display="none";p.replaceChildren();let z=G.find(A=>A.horizon===I)??N.find(A=>A.horizon===I);if(z){let A=document.createElement("div");A.className="rtichoke-outcome-distribution__readout-card";let K=document.createElement("div");K.className="rtichoke-outcome-distribution__readout-header",K.textContent=`Active Horizon: Time = ${z.horizon.toFixed(i)}`,A.append(K);let Y=document.createElement("table");Y.className="rtichoke-outcome-distribution__readout-table";let ee=document.createElement("thead"),Z=document.createElement("tr"),ne=document.createElement("th");ne.textContent="Outcome";let M=document.createElement("th");M.textContent="Count / Total (%)",Z.append(ne,M),ee.append(Z),Y.append(ee);let $=document.createElement("tbody"),H=z.totalCount??z.totalMass;for(let E of z.states){let re=document.createElement("tr"),oe=document.createElement("td"),be=document.createElement("span");be.className="rtichoke-performance-table__badge";let we=v(E.stateId,E.label);be.style.backgroundColor=we,oe.append(be,document.createTextNode(E.label));let Ve=document.createElement("td");Ve.className="rtichoke-outcome-distribution__readout-cell";let ie=document.createElement("div");ie.className="rtichoke-performance-table__bar";let fe=document.createElement("div");fe.className="rtichoke-performance-table__bar-fill",fe.style.backgroundColor=we,fe.style.opacity="0.45";let Qe=Math.min(Math.max(E.percentage,0),100);fe.style.width=`${Qe}%`,ie.append(fe);let ht=document.createElement("span");ht.className="rtichoke-performance-table__cell-text";let ot=E.count??E.mass;ot!=null&&H!==null&&H!==void 0?ht.textContent=`${ot.toLocaleString()} / ${H.toLocaleString()} (${E.percentage.toFixed(1)}%)`:ht.textContent=`${E.percentage.toFixed(1)}%`,Ve.append(ie,ht),re.append(oe,Ve),$.append(re)}Y.append($),A.append(Y),p.append(A)}g.replaceChildren(),g.style.display="flex";let U=document.createElement("span");U.style.fontWeight="600",U.style.marginRight="0.5rem",U.textContent="Outcome:",g.append(U);let W=new Map,B=O?N:G;for(let A of B)for(let K of A.states)W.has(K.label)||W.set(K.label,{stateId:K.stateId,label:K.label});for(let A of W.values()){let K=document.createElement("div");K.className="rtichoke-legend-item";let Y=document.createElement("span");Y.className="rtichoke-legend-swatch";let ee=document.createElement("span");ee.className="rtichoke-legend-line",ee.style.backgroundColor=v(A.stateId,A.label),ee.style.height="10px",ee.style.borderRadius="2px",Y.append(ee);let Z=document.createElement("span");Z.className="rtichoke-legend-label",Z.textContent=A.label,K.append(Y,Z),g.append(K)}let q=[];if(O){let A=[];for(let K of N)for(let Y of K.states){let ee=v(Y.stateId,Y.label),Z=Gk(K.horizon,Y,K.totalCount,K.totalMass,i,!0);A.push({horizon:K.horizon,stateId:Y.stateId,label:Y.label,percentage:Y.percentage,color:ee,title:Z})}q.push(vw(A,Ds({x:"horizon",y:"percentage",fill:K=>K.color,fillOpacity:.85,stroke:o.axis.color,strokeWidth:.5,curve:"step-after",title:K=>K.title})));for(let K of D){let Y=K===I;q.push(As([K],{stroke:o.axis.color,strokeWidth:Y?2.5:1,strokeDasharray:Y?void 0:"3,3"})),Y&&q.push(Ea([{x:K,label:`Time = ${K.toFixed(i)}`}],{x:"x",y:102,text:"label",dy:-10,fill:o.axis.color,fontSize:11,fontWeight:700}))}}else{let A=[];for(let K of G)for(let Y of K.states){let ee=v(Y.stateId,Y.label),Z=Gk(K.horizon,Y,K.totalCount,K.totalMass,i,!1);A.push({horizonLabel:`Time: ${K.horizon}`,horizon:K.horizon,stateId:Y.stateId,label:Y.label,percentage:Y.percentage,color:ee,title:Z})}q.push(_w(A,Ds({x:"horizonLabel",y:"percentage",fill:K=>K.color,fillOpacity:.88,stroke:o.axis.color,strokeWidth:.75,title:K=>K.title})))}let X={width:o.width,height:Math.round(o.height*.65),marginTop:o.margins.top+10,marginRight:o.margins.right,marginBottom:o.margins.bottom,marginLeft:o.margins.left,style:{background:o.background,color:o.axis.color,fontFamily:o.typography.fontFamily,fontSize:`${o.typography.fontSize}px`},x:O?{label:"Time",grid:!1,line:!0,ticks:o.axis.ticks,tickSize:o.axis.tickSize,tickPadding:o.axis.tickPadding}:{label:"Time",grid:!1,line:!0},y:{label:"Outcomes",domain:[0,100],grid:!1,line:!0,ticks:5,tickSize:o.axis.tickSize,tickPadding:o.axis.tickPadding,tickFormat:A=>`${A}%`},marks:q},J=qn(X,o);S.replaceChildren(J)};return x.addEventListener("input",()=>{let P=e.stateDistributions.filter(N=>N.evaluationId===a),R=Array.from(new Set(P.filter(N=>N.estimateOrigin==="fixed_time_horizon").map(N=>N.horizon??0))).sort((N,G)=>N-G),C=Number(x.value);C>=0&&C[a.metricId,a.estimate])),r=t.get("true_positives"),n=t.get("true_negatives"),o=t.get("false_positives"),i=t.get("false_negatives");return r==null||isNaN(r)||n===void 0||n===null||isNaN(n)||o===void 0||o===null||isNaN(o)||i===void 0||i===null||isNaN(i)?null:{tp:r,tn:n,fp:o,fn:i}}function Da(e,t,r,n){let o=e.createElement("td");o.className=n;let i=e.createElement("span");i.className="rtichoke-performance-table__confusion-val",i.textContent=Og(t);let a=e.createElement("span");if(a.className="rtichoke-performance-table__confusion-pct",r>0&&!isNaN(t)&&!isNaN(r)){let s=t/r*100;a.textContent=`${s.toFixed(2)}%`}else a.textContent=tn;return o.append(i,a),o}var kL=0;function Kk(e){return e.split("_").map((t,r)=>r===0?t.charAt(0).toUpperCase()+t.slice(1):t).join(" ")}function Og(e){return Number.isInteger(e)?e.toString():new Intl.NumberFormat("en-US",{maximumFractionDigits:2}).format(e)}function NL(e){return e.toFixed(2)}function RL(e){if(e.length<=1)return 2;let t=2;for(;t<=6;){let r=e.map(o=>o.toFixed(t));if(new Set(r).size===new Set(e).size)return t;t++}return t}function EL(e,t){if(!e||e.estimate===null||e.estimate===void 0||isNaN(e.estimate))return tn;let r=t(e.estimate);if(e.lower===void 0&&e.upper===void 0)return r;let n=e.lower===void 0||e.lower===null||isNaN(e.lower)?tn:t(e.lower),o=e.upper===void 0||e.upper===null||isNaN(e.upper)?tn:t(e.upper);return`${r} [${n}, ${o}]`}function Jl(e,t,r,n=!1,o=!1,i="positive"){if(isNaN(r)||!isFinite(r))return;let a=t.createElement("div");a.className="rtichoke-performance-table__bar";let s=t.createElement("div");if(s.className="rtichoke-performance-table__bar-fill",n){let c=Math.min(Math.max(r,0),50);s.style.width=`${c}%`,o?(s.classList.add("rtichoke-performance-table__bar-fill--negative"),s.style.right="50%",s.style.left="auto"):(s.classList.add("rtichoke-performance-table__bar-fill--positive"),s.style.left="50%",s.style.right="auto")}else{let c=Math.min(Math.max(r,0),100);s.style.width=`${c}%`,i==="neutral"?s.classList.add("rtichoke-performance-table__bar-fill--neutral"):s.classList.add("rtichoke-performance-table__bar-fill--positive")}a.append(s),e.append(a)}function Fw(e,t=globalThis.document){pb(e);let r=t.createElement("div");if(r.className="rtichoke-performance-table",e.title){let M=t.createElement("div");M.className="rtichoke-performance-table__title",M.textContent=e.title,r.append(M)}let n=t.createElement("div");n.className="rtichoke-performance-table__scroll";let o=t.createElement("table");o.className="rtichoke-performance-table__table";let i=new Map(e.evaluations.map(M=>[M.id,M])),a=new Set(e.evaluations.map(M=>M.model).filter(Boolean)),s=new Set(e.evaluations.map(M=>M.population).filter(Boolean)),c=a.size>1,u=s.size>1,f=c,p=u||!c&&a.size===0&&s.size>1,l=new Map,m=0;for(let M of e.evaluations)M.model&&!l.has(M.model)&&(l.set(M.model,Cg[m%Cg.length]),m++);let h=new Map,b=0;for(let M of e.evaluations)M.population&&!h.has(M.population)&&(h.set(M.population,Cg[b%Cg.length]),b++);let y=e.evaluations.some(M=>M.label?!!(c&&M.label!==M.model||u&&M.label!==M.population||!c&&!u&&M.label!==M.model&&M.label!==M.population):!1),x=e.rows.some(M=>M.horizon!==void 0),g=e.rows.some(M=>M.context?.censoringHeuristic!==void 0),S=e.rows.some(M=>M.context?.competingEventHeuristic!==void 0),w=new Set(e.rows.map(M=>M.operatingPoint.type)),_=w.size===1&&w.has("probability_threshold"),v=w.size===1&&w.has("ppcr"),I=new Set(e.metrics.map(M=>M.id)),T=I.has("predicted_positives"),P=I.has("ppcr"),R=T&&(P||v),C=_||!v&&w.has("probability_threshold"),N=R,G=v&&!R,D=!_&&!v&&!R,O=e.rows.filter(M=>M.operatingPoint.type==="probability_threshold").map(M=>M.operatingPoint.value),z=RL(O),U=CL.map(M=>{let $=e.metrics.find(H=>H.id===M.id);return $?{id:$.id,label:$.label||M.defaultLabel}:null}).filter(M=>M!==null),W=new Set,B=U.filter(M=>W.has(M.label)?!1:(W.add(M.label),!0)),q=0,X=0;for(let M of e.rows)for(let $ of M.values)if($.metricId==="lift"&&$.estimate!==null&&$.estimate!==void 0&&isFinite($.estimate)&&$.estimate>q&&(q=$.estimate),$.metricId==="net_benefit"&&$.estimate!==null&&$.estimate!==void 0&&isFinite($.estimate)){let H=Math.abs($.estimate);H>X&&(X=H)}let J=++kL,A=t.createElement("thead");A.className="rtichoke-performance-table__header";let K=t.createElement("tr"),Y=t.createElement("tr"),ee=1;if(Y.append(_t(t,"",{ariaLabel:"Row details",className:"rtichoke-performance-table__toggle-header"})),f&&(ee++,Y.append(_t(t,"Model"))),p&&(ee++,Y.append(_t(t,"Population"))),y&&(ee++,Y.append(_t(t,"Evaluation"))),C&&(ee++,Y.append(_t(t,"Probability Threshold"))),N&&(ee++,Y.append(_t(t,"Predicted Positives"))),G&&(ee++,Y.append(_t(t,"PPCR"))),D&&(ee++,Y.append(_t(t,"Operating Point"))),x&&(ee++,Y.append(_t(t,"Time Horizon"))),g&&(ee++,Y.append(_t(t,"Censoring"))),S&&(ee++,Y.append(_t(t,"Competing Event"))),B.length>0){let M=_t(t,"",{colSpan:ee,className:"rtichoke-performance-table__spanner--empty"});K.append(M)}if(B.length>0){let M=_t(t,"Performance Metrics",{colSpan:B.length,className:"rtichoke-performance-table__spanner"});K.append(M);for(let $ of B)Y.append(_t(t,$.label,{className:"rtichoke-performance-table__metric-header"}))}A.append(K),A.append(Y),o.append(A);let Z=ee+B.length,ne=t.createElement("tbody");for(let M=0;M0?"100.00%":tn,Se.append(Ht,Br),he.append(Se),zr.append(he),Vt.append(zr),Qe.append(Vt),fe.append(Qe),we.append(fe),ie.addEventListener("click",()=>{if(!we)return;let fr=ie.getAttribute("aria-expanded")==="true";ie.setAttribute("aria-expanded",fr?"false":"true"),ie.setAttribute("aria-label",fr?"Show confusion matrix detail":"Hide confusion matrix detail"),ie.textContent=fr?"\u25B8":"\u25BE",we.hidden=fr})}if(E.append(be),f){let ie=H?.model??tn,fe=H?.model?l.get(H.model):void 0;E.append(Io(t,ie,"rtichoke-performance-table__model",fe))}if(p){let ie=H?.population??tn,fe=H?.population?h.get(H.population):void 0;E.append(Io(t,ie,"rtichoke-performance-table__population",fe))}y&&E.append(Io(t,H?.label??H?.id??tn,"rtichoke-performance-table__evaluation"));let Ve=new Map($.values.map(ie=>[ie.metricId,ie]));if(C){let ie=$.operatingPoint.type==="probability_threshold"?$.operatingPoint.value:void 0,fe=ie!==void 0?ie.toFixed(z):tn;E.append(Io(t,fe,"rtichoke-performance-table__op"))}if(N){let ie=Ve.get("predicted_positives")?.estimate,fe=Ve.get("ppcr")?.estimate??($.operatingPoint.type==="ppcr"?$.operatingPoint.value:void 0),Qe=tn,ht=NaN;if(ie!=null&&fe!==void 0&&fe!==null){let Vt=Og(ie),In=(fe*100).toFixed(2);Qe=`${Vt} (${In}%)`,ht=fe*100}else fe!=null&&(Qe=`${(fe*100).toFixed(2)}%`,ht=fe*100);let ot=Io(t,Qe,"rtichoke-performance-table__op");isNaN(ht)||Jl(ot,t,ht,!1,!1,"neutral"),E.append(ot)}if(G){let ie=$.operatingPoint.type==="ppcr"?$.operatingPoint.value:Ve.get("ppcr")?.estimate,fe=ie!=null?`PPCR ${ie.toFixed(2)}`:tn,Qe=Io(t,fe,"rtichoke-performance-table__op");ie!=null&&Jl(Qe,t,ie*100,!1,!1,"neutral"),E.append(Qe)}if(D){let ie=$.operatingPoint.type==="ppcr"?`PPCR ${$.operatingPoint.value.toFixed(2)}`:`Threshold ${$.operatingPoint.value.toFixed(z)}`;E.append(Io(t,ie,"rtichoke-performance-table__op"))}if(x&&E.append(Io(t,$.horizon!==void 0?Og($.horizon):tn,"rtichoke-performance-table__horizon")),g){let ie=$.context?.censoringHeuristic;E.append(Io(t,ie?Kk(ie):tn,"rtichoke-performance-table__context"))}if(S){let ie=$.context?.competingEventHeuristic;E.append(Io(t,ie?Kk(ie):tn,"rtichoke-performance-table__context"))}for(let ie of B){let fe=Ve.get(ie.id),Qe=EL(fe,NL),ht=Io(t,Qe,"rtichoke-performance-table__metric");if(ht.dataset.metricId=ie.id,fe&&fe.estimate!==null&&fe.estimate!==void 0&&isFinite(fe.estimate)){let ot=fe.estimate;if(["sensitivity","specificity","ppv","npv"].includes(ie.id))Jl(ht,t,ot*100);else if(ie.id==="lift"){let Vt=q>0?ot/q*100:0;Jl(ht,t,Vt)}else if(ie.id==="net_benefit"&&X>0){let Vt=ot<0,In=Math.abs(ot)/X*50;Jl(ht,t,In,!0,Vt)}}E.append(ht)}ne.append(E),we&&ne.append(we)}return o.append(ne),n.append(o),r.append(n),r}var AL=0,FL=0;function $L(e,t){let{emphasizedTrue:r,nonEmphasizedTrue:n,emphasizedFalse:o,nonEmphasizedFalse:i}=e;switch(t){case"predicted_positives":return{tp:r,fp:o,tn:n,fn:i};case"predicted_negatives":return{tn:r,fn:o,tp:n,fp:i};case"real_positives":return{tp:r,fn:o,tn:n,fp:i};case"real_negatives":return{tn:r,fp:o,tp:n,fn:i};case"all_observations":default:return{tp:r,fp:o,tn:r,fn:o}}}function qk(e,t,r,n,o){let i=e.operatingPoints.filter(_=>_.evaluationId===t&&_.type===r).sort((_,v)=>_.value-v.value),a=i.find(_=>Math.abs(_.value-n)<1e-6)??i[0],s=a?a.cutoff:0,c=a?a.realizedPpcr:0,u=e.bins.filter(_=>_.evaluationId===t).sort((_,v)=>_.lower-v.lower),f=0;for(let _ of u)f+=_.nPositive+_.nNegative;let p=null,l=null;if(a?.performance&&a.performance.length>0){let _=O=>{let z=a.performance?.find(U=>U.metricId===O);return z&&z.estimate!==void 0&&z.estimate!==null?z.estimate:null},v=_("true_positives"),I=_("false_positives"),T=_("true_negatives"),P=_("false_negatives"),R=_("sensitivity"),C=_("specificity"),N=_("ppv"),G=_("npv"),D=_("lift");if((R!==null||C!==null||N!==null||G!==null||D!==null)&&(p={sensitivity:R,specificity:C,ppv:N,npv:G,lift:D}),v!==null&&I!==null&&T!==null&&P!==null){let O=v+P,z=T+I,U=v+I,W=T+P;l={tp:v,fp:I,tn:T,fn:P,totalPositives:O,totalNegatives:z,totalPredictedPos:U,totalPredictedNeg:W}}}let m=e.evaluations.find(_=>_.id===t),h=m?.label??m?.model??m?.population??t,b=[],y=[];if(r==="probability_threshold"){let _=u.find(I=>I.lower===0&&I.upper===0),v=u.filter(I=>!(I.lower===0&&I.upper===0));if(_){let I=s===0?!0:_.upper>s,T=I?"TP":"FN",P=I?"True Positive (TP)":"False Negative (FN)",R=I?"FP":"TN",C=I?"False Positive (FP)":"True Negative (TN)";_.nPositive>0&&y.push({category:"Observed Positives",count:_.nPositive,classificationCell:T,cellLabel:P,title:Lt(o,[["Evaluation",h],["Score Interval","[0, 0]"],["Outcome","Observed Positive"],["Count",_.nPositive],["Classification",P]])}),_.nNegative>0&&y.push({category:"Observed Negatives",count:_.nNegative,classificationCell:R,cellLabel:C,title:Lt(o,[["Evaluation",h],["Score Interval","[0, 0]"],["Outcome","Observed Negative"],["Count",_.nNegative],["Classification",C]])})}for(let I=0;Is,G=N?"TP":"FN",D=N?"True Positive (TP)":"False Negative (FN)",O=N?"FP":"TN",z=N?"False Positive (FP)":"True Negative (TN)",U=s===0?!0:T.upper>s,W=U?"TP":"FN",B=U?"True Positive (TP)":"False Negative (FN)",q=U?"FP":"TN",X=U?"False Positive (FP)":"True Negative (TN)",J=_.nPositive+T.nPositive,A=_.nNegative+T.nNegative;G===W?J>0&&b.push({x1:P,x2:R,category:"Observed Positives",count:J,classificationCell:W,cellLabel:B,isPredictedPositive:U,title:Lt(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Positive"],["Count",J],["Classification",B]])}):(_.nPositive>0&&b.push({x1:P,x2:R,category:"Observed Positives",count:_.nPositive,classificationCell:G,cellLabel:D,isPredictedPositive:N,title:Lt(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Positive"],["Count",_.nPositive],["Classification",D]])}),T.nPositive>0&&b.push({x1:P,x2:R,category:"Observed Positives",count:T.nPositive,classificationCell:W,cellLabel:B,isPredictedPositive:U,title:Lt(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Positive"],["Count",T.nPositive],["Classification",B]])})),O===q?A>0&&b.push({x1:P,x2:R,category:"Observed Negatives",count:A,classificationCell:q,cellLabel:X,isPredictedPositive:U,title:Lt(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Negative"],["Count",A],["Classification",X]])}):(_.nNegative>0&&b.push({x1:P,x2:R,category:"Observed Negatives",count:_.nNegative,classificationCell:O,cellLabel:z,isPredictedPositive:N,title:Lt(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Negative"],["Count",_.nNegative],["Classification",z]])}),T.nNegative>0&&b.push({x1:P,x2:R,category:"Observed Negatives",count:T.nNegative,classificationCell:q,cellLabel:X,isPredictedPositive:U,title:Lt(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Negative"],["Count",T.nNegative],["Classification",X]])}))}else{let N=s===0?!0:T.upper>s,G=N?"TP":"FN",D=N?"True Positive (TP)":"False Negative (FN)",O=N?"FP":"TN",z=N?"False Positive (FP)":"True Negative (TN)";T.nPositive>0&&b.push({x1:P,x2:R,category:"Observed Positives",count:T.nPositive,classificationCell:G,cellLabel:D,isPredictedPositive:N,title:Lt(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Positive"],["Count",T.nPositive],["Classification",D]])}),T.nNegative>0&&b.push({x1:P,x2:R,category:"Observed Negatives",count:T.nNegative,classificationCell:O,cellLabel:z,isPredictedPositive:N,title:Lt(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Negative"],["Count",T.nNegative],["Classification",z]])})}}}else{let _=(e.rankBins??[]).filter(v=>v.evaluationId===t).sort((v,I)=>v.rankLower-I.rankLower);for(let v of _){let I=v.rankLower,T=v.rankUpper,P=v.positiveMass+v.negativeMass,R=I>=1-n-1e-9,C=R?"TP":"FN",N=R?"True Positive (TP)":"False Negative (FN)",G=R?"FP":"TN",D=R?"False Positive (FP)":"True Negative (TN)";if(P>0){let O=`[${I.toFixed(o)}, ${T.toFixed(o)}]`;v.positiveMass>0&&b.push({x1:I,x2:T,category:"Observed Positives",count:v.positiveMass,classificationCell:C,cellLabel:N,isPredictedPositive:R,title:Lt(o,[["Evaluation",h],["Population Rank Percentile",O],["Outcome","Observed Positive"],["Count",v.positiveMass],["Classification",N]])}),v.negativeMass>0&&b.push({x1:I,x2:T,category:"Observed Negatives",count:v.negativeMass,classificationCell:G,cellLabel:D,isPredictedPositive:R,title:Lt(o,[["Evaluation",h],["Population Rank Percentile",O],["Outcome","Observed Negative"],["Count",v.negativeMass],["Classification",D]])})}}}let x=s,g="Prediction Score",S="Count",w=1;if(r==="probability_threshold"){x=s,g="Prediction Score";let _=0,v=new Map;for(let I of b)v.set(I.x1,(v.get(I.x1)??0)+I.count);for(let I of v.values())_=Math.max(_,I);w=Math.max(1,Math.ceil(_*1.15))}else{x=1-n,g="Prediction Percentile";let _=0,v=new Map;for(let I of b)v.set(I.x1,(v.get(I.x1)??0)+I.count);for(let I of v.values())_=Math.max(_,I);w=Math.max(1,Math.ceil(_*1.15))}return{evalId:t,evalLabel:h,dim:r,currentValue:n,cutoff:s,realizedPpcr:c,cutoffX:x,xAxisLabel:g,yAxisLabel:S,yMax:w,totalN:f,performanceMetrics:p,confusion:l,ordinaryPlotData:b,zeroAtomPlotData:y}}function $w(e,t={}){sf(e);let r=++FL,n=en(2,t),{theme:o}=n,i=o.tip.digits,a=e.evaluations[0].id,s=M=>{let $=new Set;for(let E of e.operatingPoints)E.evaluationId===M&&$.add(E.type);let H=[];return $.has("probability_threshold")&&H.push("probability_threshold"),$.has("ppcr")&&H.push("ppcr"),H},c=(M,$)=>e.operatingPoints.filter(H=>H.evaluationId===M&&H.type===$).sort((H,E)=>H.value-E.value),u=s(a),f=e.operatingPoint?.dimension&&u.includes(e.operatingPoint.dimension)?e.operatingPoint.dimension:u[0]??"probability_threshold",p=(M,$)=>{let H=c(M,$);return[...new Set(H.map(E=>E.value))].sort((E,re)=>E-re)},l=(M,$,H)=>{let E=p(M,$);return E.length===0?0:H!==void 0&&E.some(re=>Math.abs(re-H)<1e-6)?H:E.some(re=>Math.abs(re-.5)<1e-6)?.5:E[0]},m=l(a,f),h="stacked",b="confusion_matrix_cell",y="all_observations",x=document.createElement("div");x.className="rtichoke-prediction-distribution",x.style.width=`${o.width}px`,x.style.maxWidth="100%";let g=document.createElement("div");g.className="rtichoke-prediction-distribution__controls";let S=document.createElement("select");S.className="rtichoke-prediction-distribution__select",S.setAttribute("aria-label","Evaluation"),S.style.display="none";let w=document.createElement("select");w.className="rtichoke-prediction-distribution__select",w.setAttribute("aria-label","Color bars by"),w.style.display="none";let _=document.createElement("option");_.value="confusion_matrix_cell",_.textContent="Confusion matrix cell";let v=document.createElement("option");v.value="observed_outcome",v.textContent="Observed outcome",w.append(_,v);let I=document.createElement("label");I.className="rtichoke-prediction-distribution__control-group";let T=document.createElement("select");T.className="rtichoke-prediction-distribution__select",T.setAttribute("aria-label","Condition on");let P=document.createElement("option");P.value="predicted_positives",P.textContent="Predicted positives";let R=document.createElement("option");R.value="predicted_negatives",R.textContent="Predicted negatives";let C=document.createElement("option");C.value="real_positives",C.textContent="Real positives";let N=document.createElement("option");N.value="real_negatives",N.textContent="Real negatives",T.append(P,R,C,N),I.append(T);let G=document.createElement("select");G.className="rtichoke-prediction-distribution__select",G.setAttribute("aria-label","Operating point dimension"),G.style.display="none",S.addEventListener("change",()=>{a=S.value,ne()}),w.addEventListener("change",()=>{b=w.value,ne()}),T.addEventListener("change",()=>{y=T.value,ne()}),G.addEventListener("change",()=>{f=G.value,m=l(a,f,m),ne()});let D=(M,$,H,E,re)=>{let oe=document.createElement("div");oe.className="rtichoke-pd-radio-group",oe.setAttribute("role","radiogroup"),oe.setAttribute("aria-label",M);let be=document.createElement("span");be.className="rtichoke-pd-radio-group-label",be.textContent=`${M}:`,oe.append(be);let we=document.createElement("div");we.className="rtichoke-pd-radio-options";for(let Ve of H){let ie=document.createElement("label");ie.className="rtichoke-pd-radio-option";let fe=document.createElement("input");fe.type="radio",fe.name=$,fe.value=Ve.value,fe.checked=Ve.value===E,fe.addEventListener("change",()=>{fe.checked&&re(Ve.value)});let Qe=document.createElement("span");Qe.textContent=Ve.label,ie.append(fe,Qe),we.append(ie)}return oe.append(we),oe},O=document.createElement("div");O.className="rtichoke-pd-controls-row";let z=()=>{O.replaceChildren(),S.replaceChildren();for(let M of e.evaluations){let $=document.createElement("option");$.value=M.id,$.textContent=M.label??M.model??M.population??M.id,S.append($)}if(S.value=a,e.evaluations.length>1){let M=e.evaluations.map(H=>({value:H.id,label:H.label??H.model??H.population??H.id})),$=D("Reference Group",`pd-ref-group-${r}`,M,a,H=>{a=H,ne()});O.append($)}},U=document.createElement("div");U.className="rtichoke-pd-controls-row";let W=document.createElement("div");W.className="rtichoke-operating-point-control",W.style.marginLeft=`${o.margins.left}px`,W.style.marginRight=`${o.margins.right}px`;let B=`rtichoke-pd-slider-${++AL}`,q=document.createElement("label");q.className="rtichoke-operating-point-label",q.htmlFor=B;let X=document.createElement("span"),J=document.createElement("span");J.className="rtichoke-operating-point-value",q.append(X,J);let A=document.createElement("input");A.type="range",A.id=B,A.className="rtichoke-operating-point-slider",W.append(q,A);let K=document.createElement("div");K.className="rtichoke-legend",K.style.paddingLeft=`${o.margins.left}px`;let Y=(M,$)=>{let H=document.createElement("div");H.className="rtichoke-legend-item";let E=document.createElement("span");E.className="rtichoke-legend-swatch";let re=document.createElement("span");re.className="rtichoke-legend-line",re.style.backgroundColor=$,re.style.border=`1px solid ${o.axis.color}`,re.style.boxSizing="border-box",re.style.height="10px",re.style.borderRadius="2px",E.append(re);let oe=document.createElement("span");return oe.className="rtichoke-legend-label",oe.textContent=M,H.append(E,oe),H},ee=document.createElement("div");ee.className="rtichoke-prediction-distribution__chart";let Z=document.createElement("div");Z.className="rtichoke-prediction-distribution__summary",g.append(O,U),x.append(g,Z,W,K,ee);let ne=()=>{z(),U.replaceChildren(),w.value=b,T.value=y==="all_observations"?"predicted_positives":y,I.style.display=b==="observed_outcome"?"none":"inline-flex",G.replaceChildren();let M=s(a);for(let le of M){let he=document.createElement("option");he.value=le,he.textContent=le==="probability_threshold"?"Probability threshold":"PPCR",G.append(he)}G.value=f;let $=D("Display",`pd-display-${r}`,[{value:"stacked",label:"Stacked"},{value:"mirrored",label:"Mirrored"}],h,le=>{h=le,ne()}),H=D("Color Bars By",`pd-color-${r}`,[{value:"confusion_matrix_cell",label:"Confusion Matrix Cell"},{value:"observed_outcome",label:"Observed Outcome"}],b,le=>{b=le,ne()});if(U.append($,H,S,w,I,G),M.length>1){let le=D("Dimension",`pd-dim-${r}`,[{value:"probability_threshold",label:"Probability Threshold"},{value:"ppcr",label:"PPCR"}],f,he=>{f=he,m=l(a,f,m),ne()});U.append(le)}let E=p(a,f),re=E.find(le=>Math.abs(le-m)<1e-6);re!==void 0?m=re:m=l(a,f,m);let oe=E.indexOf(m);A.min="0",A.max=String(Math.max(0,E.length-1)),A.step="1",A.value=String(Math.max(0,oe));let be=f==="probability_threshold"?"Probability threshold":"PPCR";X.textContent=`${be}: `,J.textContent=m.toFixed(i),A.setAttribute("aria-label",be),A.setAttribute("aria-valuetext",m.toFixed(i));let we=qk(e,a,f,m,i),{cutoff:Ve,cutoffX:ie,xAxisLabel:fe,yAxisLabel:Qe,yMax:ht,totalN:ot,performanceMetrics:Vt,confusion:In,ordinaryPlotData:Zi}=we,nn=$L(o.predictionDistribution,y);K.replaceChildren(),b==="observed_outcome"&&K.append(Y("Observed Positives",o.predictionDistribution.observedPositive),Y("Observed Negatives",o.predictionDistribution.observedNegative));let zr=[],qt=f==="probability_threshold"?`Cutoff = ${Ve.toFixed(i)}`:`PPCR = ${m.toFixed(i)}`,ja=ht,ko=h==="mirrored"?-ht:0;zr.push(As([ie],{stroke:o.axis.color,strokeWidth:2,strokeDasharray:"4,3"})),zr.push(Ea([{x:ie,label:qt}],{x:"x",y:ja,text:"label",dy:-10,fill:o.axis.color,fontSize:11,fontWeight:700})),h==="mirrored"&&zr.push(vo([0],{stroke:o.axis.color,strokeWidth:1.5}));let Ua=le=>{let he="";if(b==="observed_outcome")he=le.category==="Observed Positives"?o.predictionDistribution.observedPositive:o.predictionDistribution.observedNegative;else switch(le.classificationCell){case"TP":he=nn.tp;break;case"FP":he=nn.fp;break;case"TN":he=nn.tn;break;case"FN":he=nn.fn;break}let Se=!0;switch(y){case"all_observations":Se=!0;break;case"predicted_positives":Se=le.isPredictedPositive;break;case"predicted_negatives":Se=!le.isPredictedPositive;break;case"real_positives":Se=le.category==="Observed Positives";break;case"real_negatives":Se=le.category==="Observed Negatives";break}return{fill:he,fillOpacity:Se?.88:.18,strokeOpacity:Se?.4:.1}};if(h==="stacked"){let le=Zi.map(he=>{let{fill:Se,fillOpacity:Ht,strokeOpacity:Br}=Ua(he);return{...he,fill:Se,fillOpacity:Ht,strokeOpacity:Br}});zr.push(Yi(le,Ds({x1:"x1",x2:"x2",y:"count",fill:"fill",fillOpacity:"fillOpacity",stroke:o.axis.color,strokeOpacity:"strokeOpacity",strokeWidth:.75,title:he=>he.title,tip:!0})))}else{let le=Zi.filter(Se=>Se.category==="Observed Positives").map(Se=>{let{fill:Ht,fillOpacity:Br,strokeOpacity:fr}=Ua(Se);return{...Se,fill:Ht,fillOpacity:Br,strokeOpacity:fr}}),he=Zi.filter(Se=>Se.category==="Observed Negatives").map(Se=>{let{fill:Ht,fillOpacity:Br,strokeOpacity:fr}=Ua(Se);return{...Se,fill:Ht,fillOpacity:Br,strokeOpacity:fr}});le.length>0&&zr.push(Yi(le,{x1:"x1",x2:"x2",y1:0,y2:"count",fill:"fill",fillOpacity:"fillOpacity",stroke:o.axis.color,strokeOpacity:"strokeOpacity",strokeWidth:.75,title:Se=>Se.title,tip:!0})),he.length>0&&zr.push(Yi(he,{x1:"x1",x2:"x2",y1:0,y2:Se=>-Se.count,fill:"fill",fillOpacity:"fillOpacity",stroke:o.axis.color,strokeOpacity:"strokeOpacity",strokeWidth:.75,title:Se=>Se.title,tip:!0}))}let $u={width:o.width,height:Math.round(o.height*.68),marginTop:o.margins.top+10,marginRight:o.margins.right,marginBottom:o.margins.bottom,marginLeft:o.margins.left,style:{background:o.background,color:o.axis.color,fontFamily:o.typography.fontFamily,fontSize:`${o.typography.fontSize}px`},x:{label:fe,domain:[0,1],grid:!1,line:!0,ticks:o.axis.ticks,tickSize:o.axis.tickSize,tickPadding:o.axis.tickPadding,tickFormat:o.axis.numberFormat},y:{label:Qe,domain:[ko,ja],grid:!1,line:!0,ticks:5,tickSize:o.axis.tickSize,tickPadding:o.axis.tickPadding,tickFormat:le=>String(Math.abs(le))},marks:zr},_n=qn($u,o);if(ee.replaceChildren(_n),Z.replaceChildren(),In){let{tp:le,fp:he,tn:Se,fn:Ht,totalPositives:Br,totalNegatives:fr,totalPredictedPos:op,totalPredictedNeg:lr}=In,on=document.createElement("table");on.className="rtichoke-pd-matrix";let Du=document.createElement("colgroup"),Ks=document.createElement("col");Ks.style.width="28%";let qs=document.createElement("col");qs.style.width="24%";let Hs=document.createElement("col");Hs.style.width="24%";let ip=document.createElement("col");ip.style.width="24%",Du.append(Ks,qs,Hs,ip),on.append(Du);let Lu=(Je,ct)=>{let Qi=document.createElement("label");Qi.className=`rtichoke-pd-cond-option ${y===Je?"rtichoke-pd-cond-option--active":""}`;let Hn=document.createElement("input");Hn.type="radio",Hn.name=`pd-cond-${r}`,Hn.value=Je,Hn.checked=y===Je,Hn.addEventListener("change",()=>{Hn.checked&&(y=Je,ne())});let fi=document.createElement("span");return fi.textContent=ct,Qi.append(Hn,fi),Qi},Qw=document.createElement("thead"),Jw=document.createElement("tr"),Xg=document.createElement("th");Xg.className="rtichoke-pd-matrix__corner",Xg.append(Lu("all_observations","All Observations"));let Zg=document.createElement("th");Zg.className=`rtichoke-pd-matrix__col-header ${y==="real_positives"?"rtichoke-pd-matrix__col-header--active":""}`,Zg.append(Lu("real_positives","Real Positive"));let Qg=document.createElement("th");Qg.className=`rtichoke-pd-matrix__col-header ${y==="real_negatives"?"rtichoke-pd-matrix__col-header--active":""}`,Qg.append(Lu("real_negatives","Real Negative"));let e2=document.createElement("th");e2.className="rtichoke-pd-matrix__col-header rtichoke-pd-matrix__col-header--blank",Jw.append(Xg,Zg,Qg,e2),Qw.append(Jw);let t2=document.createElement("tbody"),x6=b==="observed_outcome"?o.predictionDistribution.observedPositive:nn.tp,w6=b==="observed_outcome"?o.predictionDistribution.observedPositive:nn.fn,S6=b==="observed_outcome"?o.predictionDistribution.observedNegative:nn.fp,v6=b==="observed_outcome"?o.predictionDistribution.observedNegative:nn.tn,I6=o.predictionDistribution.observedPositive,_6=o.predictionDistribution.observedNegative,Jg="#E5E7EB",P6=Je=>{if(ot===0)return null;switch(y){case"all_observations":return`(${((Je==="TP"?le:Je==="FP"?he:Je==="TN"?Se:Ht)/ot*100).toFixed(1)}%)`;case"predicted_positives":{let ct=le+he;return ct===0?null:Je==="TP"?`(${(le/ct*100).toFixed(1)}%)`:Je==="FP"?`(${(he/ct*100).toFixed(1)}%)`:null}case"predicted_negatives":{let ct=Se+Ht;return ct===0?null:Je==="TN"?`(${(Se/ct*100).toFixed(1)}%)`:Je==="FN"?`(${(Ht/ct*100).toFixed(1)}%)`:null}case"real_positives":{let ct=le+Ht;return ct===0?null:Je==="TP"?`(${(le/ct*100).toFixed(1)}%)`:Je==="FN"?`(${(Ht/ct*100).toFixed(1)}%)`:null}case"real_negatives":{let ct=Se+he;return ct===0?null:Je==="TN"?`(${(Se/ct*100).toFixed(1)}%)`:Je==="FP"?`(${(he/ct*100).toFixed(1)}%)`:null}}},ap=(Je,ct,Qi,Hn)=>{Je.replaceChildren(),Je.className=`rtichoke-prediction-distribution__cell--${ct.toLowerCase()} rtichoke-pd-matrix__cell`,Je.style.backgroundColor="#ffffff",Je.style.color=o.axis.color;let fi=ot>0?Qi/ot*100:0,Ji=document.createElement("div");Ji.className="rtichoke-pd-cell-bar",Ji.style.width=`${fi}%`,Ji.style.backgroundColor=Hn;let za=document.createElement("div");za.className="rtichoke-pd-cell-content";let iy=document.createElement("span");iy.className="rtichoke-pd-cell-label",iy.textContent=ct;let ay=document.createElement("div");ay.className="rtichoke-pd-cell-num";let sy=document.createElement("span");sy.className="rtichoke-pd-cell-count",sy.textContent=Qi.toLocaleString();let T6=P6(ct),cy=document.createElement("span");cy.className="rtichoke-pd-cell-pct",cy.textContent=T6??"",ay.append(sy,cy),za.append(iy,ay),Je.append(Ji,za)},Vu=(Je,ct,Qi)=>{Je.replaceChildren(),Je.className="rtichoke-prediction-distribution__cell--total rtichoke-pd-matrix__cell",Je.style.backgroundColor="#ffffff";let Hn=ot>0?ct/ot*100:0,fi=document.createElement("div");fi.className="rtichoke-pd-cell-bar",fi.style.width=`${Hn}%`,fi.style.backgroundColor=Qi;let Ji=document.createElement("div");Ji.className="rtichoke-pd-cell-content rtichoke-pd-cell-content--margin";let za=document.createElement("span");za.className="rtichoke-pd-cell-count",za.textContent=ct.toLocaleString(),Ji.append(za),Je.append(fi,Ji)},ey=document.createElement("tr");y==="predicted_positives"&&(ey.className="rtichoke-pd-matrix__row--active");let ty=document.createElement("th");ty.className=`rtichoke-pd-matrix__row-header ${y==="predicted_positives"?"rtichoke-pd-matrix__row-header--active":""}`,ty.append(Lu("predicted_positives","Predicted Positive"));let r2=document.createElement("td");ap(r2,"TP",le,x6);let n2=document.createElement("td");ap(n2,"FP",he,S6);let o2=document.createElement("td");Vu(o2,op,Jg),ey.append(ty,r2,n2,o2);let ry=document.createElement("tr");y==="predicted_negatives"&&(ry.className="rtichoke-pd-matrix__row--active");let ny=document.createElement("th");ny.className=`rtichoke-pd-matrix__row-header ${y==="predicted_negatives"?"rtichoke-pd-matrix__row-header--active":""}`,ny.append(Lu("predicted_negatives","Predicted Negative"));let i2=document.createElement("td");ap(i2,"FN",Ht,w6);let a2=document.createElement("td");ap(a2,"TN",Se,v6);let s2=document.createElement("td");Vu(s2,lr,Jg),ry.append(ny,i2,a2,s2);let oy=document.createElement("tr");oy.className="rtichoke-pd-matrix__tot-row";let c2=document.createElement("th");c2.className="rtichoke-pd-matrix__row-header rtichoke-pd-matrix__row-header--blank";let u2=document.createElement("td");Vu(u2,Br,I6);let f2=document.createElement("td");Vu(f2,fr,_6);let l2=document.createElement("td");Vu(l2,ot,Jg),oy.append(c2,u2,f2,l2),t2.append(ey,ry,oy),on.append(Qw,t2),Z.append(on)}if(Vt){let le=document.createElement("div");le.className="rtichoke-pd-metrics-container rtichoke-performance-table";let he=document.createElement("table");he.className="rtichoke-performance-table__table rtichoke-pd-metrics-table";let Se=document.createElement("thead"),Ht=document.createElement("tr"),Br=[{id:"sensitivity",label:"Sensitivity",val:Vt.sensitivity,isEmphasized:y==="real_positives",isRatio:!1},{id:"specificity",label:"Specificity",val:Vt.specificity,isEmphasized:y==="real_negatives",isRatio:!1},{id:"ppv",label:"PPV",val:Vt.ppv,isEmphasized:y==="predicted_positives",isRatio:!1},{id:"npv",label:"NPV",val:Vt.npv,isEmphasized:y==="predicted_negatives",isRatio:!1},{id:"lift",label:"Lift",val:Vt.lift,isEmphasized:y==="predicted_positives",isRatio:!0}];for(let lr of Br){let on=document.createElement("th");on.className=`rtichoke-performance-table__metric-header ${lr.isEmphasized?"rtichoke-pd-metric--emphasized-header":""}`,on.textContent=lr.label,Ht.append(on)}Se.append(Ht);let fr=document.createElement("tbody"),op=document.createElement("tr");for(let lr of Br){let on=document.createElement("td");on.className=`rtichoke-performance-table__metric ${lr.isEmphasized?"rtichoke-pd-metric--emphasized-cell":""}`;let Du="\u2014";if(lr.val!==null&&lr.val!==void 0&&(Du=lr.isRatio?lr.val.toFixed(2):(lr.val*100).toFixed(1)+"%"),lr.val!==null&&lr.val!==void 0&&isFinite(lr.val)){let qs=document.createElement("div");qs.className="rtichoke-performance-table__bar";let Hs=document.createElement("div");Hs.className="rtichoke-performance-table__bar-fill rtichoke-performance-table__bar-fill--positive";let ip=lr.isRatio?Math.min(100,lr.val/3*100):Math.min(100,lr.val*100);Hs.style.width=`${ip}%`,qs.append(Hs),on.append(qs)}let Ks=document.createElement("span");Ks.className="rtichoke-performance-table__cell-text",Ks.textContent=Du,on.append(Ks),op.append(on)}fr.append(op),he.append(Se,fr),le.append(he),Z.append(le)}};return A.addEventListener("input",()=>{let M=p(a,f),$=Number(A.value);$>=0&&$0?n[0]:void 0,i=[];if(n.length>1){let m=t.createElement("label");m.className="rtichoke-horizon-control",m.textContent="Fixed Time Horizon: ";let h=t.createElement("select");h.className="rtichoke-horizon-select",h.setAttribute("aria-label","Fixed Time Horizon");for(let b of n){let y=t.createElement("option");y.value=String(b),y.textContent=String(b),h.append(y)}h.value=String(o),h.addEventListener("change",()=>{o=Number(h.value),l()}),m.append(h),r.append(m)}let a=t.createElement("table");a.className="rtichoke-summary-metrics__table";let s=t.createElement("thead"),c=t.createElement("tr");for(let m of["Owner","Metric","Estimate"])c.append(LL(t,m));s.append(c),a.append(s);let u=new Map(e.evaluations.map(m=>[m.id,m])),f=new Map(e.populations.map(m=>[m.id,m])),p=t.createElement("tbody");for(let m of e.metrics){let h=t.createElement("tr"),b="",y="",x;if(m.metric==="auroc"){let S=u.get(m.owner.evaluationId);b=S.label??S.model??S.population??S.id,y="AUROC",h.dataset.metric="auroc",h.dataset.evaluationId=m.owner.evaluationId}else m.metric==="prevalence"?(b=f.get(m.owner.populationId).label,y="Prevalence",h.dataset.metric="prevalence",h.dataset.populationId=m.owner.populationId):m.metric==="event_risk"&&(b=f.get(m.owner.populationId).label,y="Event Probability",x=m.horizon,h.dataset.metric="event_risk",h.dataset.populationId=m.owner.populationId,h.dataset.horizon=String(m.horizon));h.append(Dw(t,b,"rtichoke-summary-metrics__owner"),Dw(t,y,"rtichoke-summary-metrics__metric"));let g=Dw(t,VL(m.estimate),"rtichoke-summary-metrics__estimate");m.estimate===null?g.dataset.unavailable="true":g.dataset.estimate=String(m.estimate),h.append(g),i.push({element:h,horizon:x}),p.append(h)}a.append(p),r.append(a);function l(){for(let{element:m,horizon:h}of i)h===void 0||h===o?m.style.display="":m.style.display="none"}return l(),r}function jL(e){switch(e.errorType){case F.ArrayContains:return"Expected array to contain at least one matching value";case F.ArrayMaxContains:return`Expected array to contain no more than ${e.schema.maxContains} matching values`;case F.ArrayMinContains:return`Expected array to contain at least ${e.schema.minContains} matching values`;case F.ArrayMaxItems:return`Expected array length to be less or equal to ${e.schema.maxItems}`;case F.ArrayMinItems:return`Expected array length to be greater or equal to ${e.schema.minItems}`;case F.ArrayUniqueItems:return"Expected array elements to be unique";case F.Array:return"Expected array";case F.AsyncIterator:return"Expected AsyncIterator";case F.BigIntExclusiveMaximum:return`Expected bigint to be less than ${e.schema.exclusiveMaximum}`;case F.BigIntExclusiveMinimum:return`Expected bigint to be greater than ${e.schema.exclusiveMinimum}`;case F.BigIntMaximum:return`Expected bigint to be less or equal to ${e.schema.maximum}`;case F.BigIntMinimum:return`Expected bigint to be greater or equal to ${e.schema.minimum}`;case F.BigIntMultipleOf:return`Expected bigint to be a multiple of ${e.schema.multipleOf}`;case F.BigInt:return"Expected bigint";case F.Boolean:return"Expected boolean";case F.DateExclusiveMinimumTimestamp:return`Expected Date timestamp to be greater than ${e.schema.exclusiveMinimumTimestamp}`;case F.DateExclusiveMaximumTimestamp:return`Expected Date timestamp to be less than ${e.schema.exclusiveMaximumTimestamp}`;case F.DateMinimumTimestamp:return`Expected Date timestamp to be greater or equal to ${e.schema.minimumTimestamp}`;case F.DateMaximumTimestamp:return`Expected Date timestamp to be less or equal to ${e.schema.maximumTimestamp}`;case F.DateMultipleOfTimestamp:return`Expected Date timestamp to be a multiple of ${e.schema.multipleOfTimestamp}`;case F.Date:return"Expected Date";case F.Function:return"Expected function";case F.IntegerExclusiveMaximum:return`Expected integer to be less than ${e.schema.exclusiveMaximum}`;case F.IntegerExclusiveMinimum:return`Expected integer to be greater than ${e.schema.exclusiveMinimum}`;case F.IntegerMaximum:return`Expected integer to be less or equal to ${e.schema.maximum}`;case F.IntegerMinimum:return`Expected integer to be greater or equal to ${e.schema.minimum}`;case F.IntegerMultipleOf:return`Expected integer to be a multiple of ${e.schema.multipleOf}`;case F.Integer:return"Expected integer";case F.IntersectUnevaluatedProperties:return"Unexpected property";case F.Intersect:return"Expected all values to match";case F.Iterator:return"Expected Iterator";case F.Literal:return`Expected ${typeof e.schema.const=="string"?`'${e.schema.const}'`:e.schema.const}`;case F.Never:return"Never";case F.Not:return"Value should not match";case F.Null:return"Expected null";case F.NumberExclusiveMaximum:return`Expected number to be less than ${e.schema.exclusiveMaximum}`;case F.NumberExclusiveMinimum:return`Expected number to be greater than ${e.schema.exclusiveMinimum}`;case F.NumberMaximum:return`Expected number to be less or equal to ${e.schema.maximum}`;case F.NumberMinimum:return`Expected number to be greater or equal to ${e.schema.minimum}`;case F.NumberMultipleOf:return`Expected number to be a multiple of ${e.schema.multipleOf}`;case F.Number:return"Expected number";case F.Object:return"Expected object";case F.ObjectAdditionalProperties:return"Unexpected property";case F.ObjectMaxProperties:return`Expected object to have no more than ${e.schema.maxProperties} properties`;case F.ObjectMinProperties:return`Expected object to have at least ${e.schema.minProperties} properties`;case F.ObjectRequiredProperty:return"Expected required property";case F.Promise:return"Expected Promise";case F.RegExp:return"Expected string to match regular expression";case F.StringFormatUnknown:return`Unknown format '${e.schema.format}'`;case F.StringFormat:return`Expected string to match '${e.schema.format}' format`;case F.StringMaxLength:return`Expected string length less or equal to ${e.schema.maxLength}`;case F.StringMinLength:return`Expected string length greater or equal to ${e.schema.minLength}`;case F.StringPattern:return`Expected string to match '${e.schema.pattern}'`;case F.String:return"Expected string";case F.Symbol:return"Expected symbol";case F.TupleLength:return`Expected tuple to have ${e.schema.maxItems||0} elements`;case F.Tuple:return"Expected tuple";case F.Uint8ArrayMaxByteLength:return`Expected byte length less or equal to ${e.schema.maxByteLength}`;case F.Uint8ArrayMinByteLength:return`Expected byte length greater or equal to ${e.schema.minByteLength}`;case F.Uint8Array:return"Expected Uint8Array";case F.Undefined:return"Expected undefined";case F.Union:return"Expected union value";case F.Void:return"Expected void";case F.Kind:return`Expected kind '${e.schema[V]}'`;default:return"Unknown error type"}}var UL=jL;function Hk(){return UL}var Vw=class extends ge{constructor(t){super(`Unable to dereference schema with $id '${t.$ref}'`),this.schema=t}};function zL(e,t){let r=t.find(n=>n.$id===e.$ref);if(r===void 0)throw new Vw(e);return Le(r,t)}function sr(e,t){return!Be(e.$id)||t.some(r=>r.$id===e.$id)||t.push(e),t}function Le(e,t){return e[V]==="This"||e[V]==="Ref"?zL(e,t):e}var jw=class extends ge{constructor(t){super("Unable to hash value"),this.value=t}},wn;(function(e){e[e.Undefined=0]="Undefined",e[e.Null=1]="Null",e[e.Boolean=2]="Boolean",e[e.Number=3]="Number",e[e.String=4]="String",e[e.Object=5]="Object",e[e.Array=6]="Array",e[e.Date=7]="Date",e[e.Uint8Array=8]="Uint8Array",e[e.Symbol=9]="Symbol",e[e.BigInt=10]="BigInt"})(wn||(wn={}));var Ru=BigInt("14695981039346656037"),[BL,GL]=[BigInt("1099511628211"),BigInt("18446744073709551616")],KL=Array.from({length:256}).map((e,t)=>BigInt(t)),Yk=new Float64Array(1),Wk=new DataView(Yk.buffer),Xk=new Uint8Array(Yk.buffer);function*qL(e){let t=e===0?1:Math.ceil(Math.floor(Math.log2(e)+1)/8);for(let r=0;r>8*(t-1-r)&255}function HL(e){kr(wn.Array);for(let t of e)Eu(t)}function YL(e){kr(wn.Boolean),kr(e?1:0)}function WL(e){kr(wn.BigInt),Wk.setBigInt64(0,e);for(let t of Xk)kr(t)}function XL(e){kr(wn.Date),Eu(e.getTime())}function ZL(e){kr(wn.Null)}function QL(e){kr(wn.Number),Wk.setFloat64(0,e);for(let t of Xk)kr(t)}function JL(e){kr(wn.Object);for(let t of globalThis.Object.getOwnPropertyNames(e).sort())Eu(t),Eu(e[t])}function eV(e){kr(wn.String);for(let t=0;t=e.minItems)||Te(e.maxItems)&&!(r.length<=e.maxItems))return!1;for(let i of r)if(!cr(e.items,t,i))return!1;if(e.uniqueItems===!0&&!(function(){let i=new Set;for(let a of r){let s=Au(a);if(i.has(s))return!1;i.add(s)}return!0})())return!1;if(!(Te(e.contains)||lt(e.minContains)||lt(e.maxContains)))return!0;let n=Te(e.contains)?e.contains:_e(),o=r.reduce((i,a)=>cr(n,t,a)?i+1:i,0);return!(o===0||lt(e.minContains)&&oe.maxContains)}function cV(e,t,r){return up(r)}function uV(e,t,r){return!(!Yn(r)||Te(e.exclusiveMaximum)&&!(re.exclusiveMinimum)||Te(e.maximum)&&!(r<=e.maximum)||Te(e.minimum)&&!(r>=e.minimum)||Te(e.multipleOf)&&r%e.multipleOf!==BigInt(0))}function fV(e,t,r){return No(r)}function lV(e,t,r){return cr(e.returns,t,r.prototype)}function pV(e,t,r){return!(!Nr(r)||Te(e.exclusiveMaximumTimestamp)&&!(r.getTime()e.exclusiveMinimumTimestamp)||Te(e.maximumTimestamp)&&!(r.getTime()<=e.maximumTimestamp)||Te(e.minimumTimestamp)&&!(r.getTime()>=e.minimumTimestamp)||Te(e.multipleOfTimestamp)&&r.getTime()%e.multipleOfTimestamp!==0)}function mV(e,t,r){return ea(r)}function dV(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return cr(o,[...t,...n],r)}function hV(e,t,r){return!(!pp(r)||Te(e.exclusiveMaximum)&&!(re.exclusiveMinimum)||Te(e.maximum)&&!(r<=e.maximum)||Te(e.minimum)&&!(r>=e.minimum)||Te(e.multipleOf)&&r%e.multipleOf!==0)}function gV(e,t,r){let n=e.allOf.every(o=>cr(o,t,r));if(e.unevaluatedProperties===!1){let o=new RegExp(cc(e)),i=Object.getOwnPropertyNames(r).every(a=>o.test(a));return n&&i}else if(yt(e.unevaluatedProperties)){let o=new RegExp(cc(e)),i=Object.getOwnPropertyNames(r).every(a=>o.test(a)||cr(e.unevaluatedProperties,t,r[a]));return n&&i}else return n}function yV(e,t,r){return fp(r)}function bV(e,t,r){return r===e.const}function xV(e,t,r){return!1}function wV(e,t,r){return!cr(e.not,t,r)}function SV(e,t,r){return mi(r)}function vV(e,t,r){return!(!jt.IsNumberLike(r)||Te(e.exclusiveMaximum)&&!(re.exclusiveMinimum)||Te(e.minimum)&&!(r>=e.minimum)||Te(e.maximum)&&!(r<=e.maximum)||Te(e.multipleOf)&&r%e.multipleOf!==0)}function IV(e,t,r){if(!jt.IsObjectLike(r)||Te(e.minProperties)&&!(Object.getOwnPropertyNames(r).length>=e.minProperties)||Te(e.maxProperties)&&!(Object.getOwnPropertyNames(r).length<=e.maxProperties))return!1;let n=Object.getOwnPropertyNames(e.properties);for(let o of n){let i=e.properties[o];if(e.required&&e.required.includes(o)){if(!cr(i,t,r[o])||(Qa(i)||oV(i))&&!(o in r))return!1}else if(jt.IsExactOptionalProperty(r,o)&&!cr(i,t,r[o]))return!1}if(e.additionalProperties===!1){let o=Object.getOwnPropertyNames(r);return e.required&&e.required.length===n.length&&o.length===n.length?!0:o.every(i=>n.includes(i))}else return typeof e.additionalProperties=="object"?Object.getOwnPropertyNames(r).every(i=>n.includes(i)||cr(e.additionalProperties,t,r[i])):!0}function _V(e,t,r){return lp(r)}function PV(e,t,r){if(!jt.IsRecordLike(r)||Te(e.minProperties)&&!(Object.getOwnPropertyNames(r).length>=e.minProperties)||Te(e.maxProperties)&&!(Object.getOwnPropertyNames(r).length<=e.maxProperties))return!1;let[n,o]=Object.entries(e.patternProperties)[0],i=new RegExp(n),a=Object.entries(r).every(([u,f])=>i.test(u)?cr(o,t,f):!0),s=typeof e.additionalProperties=="object"?Object.entries(r).every(([u,f])=>i.test(u)?!0:cr(e.additionalProperties,t,f)):!0,c=e.additionalProperties===!1?Object.getOwnPropertyNames(r).every(u=>i.test(u)):!0;return a&&s&&c}function TV(e,t,r){return cr(Le(e,t),t,r)}function MV(e,t,r){let n=new RegExp(e.source,e.flags);return Te(e.minLength)&&!(r.length>=e.minLength)||Te(e.maxLength)&&!(r.length<=e.maxLength)?!1:n.test(r)}function CV(e,t,r){return!Be(r)||Te(e.minLength)&&!(r.length>=e.minLength)||Te(e.maxLength)&&!(r.length<=e.maxLength)||Te(e.pattern)&&!new RegExp(e.pattern).test(r)?!1:Te(e.format)?ia.Has(e.format)?ia.Get(e.format)(r):!1:!0}function OV(e,t,r){return di(r)}function kV(e,t,r){return Be(r)&&new RegExp(e.pattern).test(r)}function NV(e,t,r){return cr(Le(e,t),t,r)}function RV(e,t,r){if(!me(r)||e.items===void 0&&r.length!==0||r.length!==e.maxItems)return!1;if(!e.items)return!0;for(let n=0;ncr(n,t,r))}function FV(e,t,r){return!(!Ws(r)||Te(e.maxByteLength)&&!(r.length<=e.maxByteLength)||Te(e.minByteLength)&&!(r.length>=e.minByteLength))}function $V(e,t,r){return!0}function DV(e,t,r){return jt.IsVoidLike(r)}function LV(e,t,r){return ro.Has(e[V])?ro.Get(e[V])(e,r):!1}function cr(e,t,r){let n=Te(e.$id)?sr(e,t):t,o=e;switch(o[V]){case"Any":return iV(o,n,r);case"Argument":return aV(o,n,r);case"Array":return sV(o,n,r);case"AsyncIterator":return cV(o,n,r);case"BigInt":return uV(o,n,r);case"Boolean":return fV(o,n,r);case"Constructor":return lV(o,n,r);case"Date":return pV(o,n,r);case"Function":return mV(o,n,r);case"Import":return dV(o,n,r);case"Integer":return hV(o,n,r);case"Intersect":return gV(o,n,r);case"Iterator":return yV(o,n,r);case"Literal":return bV(o,n,r);case"Never":return xV(o,n,r);case"Not":return wV(o,n,r);case"Null":return SV(o,n,r);case"Number":return vV(o,n,r);case"Object":return IV(o,n,r);case"Promise":return _V(o,n,r);case"Record":return PV(o,n,r);case"Ref":return TV(o,n,r);case"RegExp":return MV(o,n,r);case"String":return CV(o,n,r);case"Symbol":return OV(o,n,r);case"TemplateLiteral":return kV(o,n,r);case"This":return NV(o,n,r);case"Tuple":return RV(o,n,r);case"Undefined":return EV(o,n,r);case"Union":return AV(o,n,r);case"Uint8Array":return FV(o,n,r);case"Unknown":return $V(o,n,r);case"Void":return DV(o,n,r);default:if(!ro.Has(o[V]))throw new Uw(o);return LV(o,n,r)}}function Ie(...e){return e.length===3?cr(e[0],e[1],e[2]):cr(e[0],[],e[1])}var F;(function(e){e[e.ArrayContains=0]="ArrayContains",e[e.ArrayMaxContains=1]="ArrayMaxContains",e[e.ArrayMaxItems=2]="ArrayMaxItems",e[e.ArrayMinContains=3]="ArrayMinContains",e[e.ArrayMinItems=4]="ArrayMinItems",e[e.ArrayUniqueItems=5]="ArrayUniqueItems",e[e.Array=6]="Array",e[e.AsyncIterator=7]="AsyncIterator",e[e.BigIntExclusiveMaximum=8]="BigIntExclusiveMaximum",e[e.BigIntExclusiveMinimum=9]="BigIntExclusiveMinimum",e[e.BigIntMaximum=10]="BigIntMaximum",e[e.BigIntMinimum=11]="BigIntMinimum",e[e.BigIntMultipleOf=12]="BigIntMultipleOf",e[e.BigInt=13]="BigInt",e[e.Boolean=14]="Boolean",e[e.DateExclusiveMaximumTimestamp=15]="DateExclusiveMaximumTimestamp",e[e.DateExclusiveMinimumTimestamp=16]="DateExclusiveMinimumTimestamp",e[e.DateMaximumTimestamp=17]="DateMaximumTimestamp",e[e.DateMinimumTimestamp=18]="DateMinimumTimestamp",e[e.DateMultipleOfTimestamp=19]="DateMultipleOfTimestamp",e[e.Date=20]="Date",e[e.Function=21]="Function",e[e.IntegerExclusiveMaximum=22]="IntegerExclusiveMaximum",e[e.IntegerExclusiveMinimum=23]="IntegerExclusiveMinimum",e[e.IntegerMaximum=24]="IntegerMaximum",e[e.IntegerMinimum=25]="IntegerMinimum",e[e.IntegerMultipleOf=26]="IntegerMultipleOf",e[e.Integer=27]="Integer",e[e.IntersectUnevaluatedProperties=28]="IntersectUnevaluatedProperties",e[e.Intersect=29]="Intersect",e[e.Iterator=30]="Iterator",e[e.Kind=31]="Kind",e[e.Literal=32]="Literal",e[e.Never=33]="Never",e[e.Not=34]="Not",e[e.Null=35]="Null",e[e.NumberExclusiveMaximum=36]="NumberExclusiveMaximum",e[e.NumberExclusiveMinimum=37]="NumberExclusiveMinimum",e[e.NumberMaximum=38]="NumberMaximum",e[e.NumberMinimum=39]="NumberMinimum",e[e.NumberMultipleOf=40]="NumberMultipleOf",e[e.Number=41]="Number",e[e.ObjectAdditionalProperties=42]="ObjectAdditionalProperties",e[e.ObjectMaxProperties=43]="ObjectMaxProperties",e[e.ObjectMinProperties=44]="ObjectMinProperties",e[e.ObjectRequiredProperty=45]="ObjectRequiredProperty",e[e.Object=46]="Object",e[e.Promise=47]="Promise",e[e.RegExp=48]="RegExp",e[e.StringFormatUnknown=49]="StringFormatUnknown",e[e.StringFormat=50]="StringFormat",e[e.StringMaxLength=51]="StringMaxLength",e[e.StringMinLength=52]="StringMinLength",e[e.StringPattern=53]="StringPattern",e[e.String=54]="String",e[e.Symbol=55]="Symbol",e[e.TupleLength=56]="TupleLength",e[e.Tuple=57]="Tuple",e[e.Uint8ArrayMaxByteLength=58]="Uint8ArrayMaxByteLength",e[e.Uint8ArrayMinByteLength=59]="Uint8ArrayMinByteLength",e[e.Uint8Array=60]="Uint8Array",e[e.Undefined=61]="Undefined",e[e.Union=62]="Union",e[e.Void=63]="Void"})(F||(F={}));var zw=class extends ge{constructor(t){super("Unknown type"),this.schema=t}};function Wi(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function Me(e){return e!==void 0}var La=class{constructor(t){this.iterator=t}[Symbol.iterator](){return this.iterator}First(){let t=this.iterator.next();return t.done?void 0:t.value}};function te(e,t,r,n,o=[]){return{type:e,schema:t,path:r,value:n,message:Hk()({errorType:e,path:r,schema:t,value:n,errors:o}),errors:o}}function*VV(e,t,r,n){}function*jV(e,t,r,n){}function*UV(e,t,r,n){if(!me(n))return yield te(F.Array,e,r,n);Me(e.minItems)&&!(n.length>=e.minItems)&&(yield te(F.ArrayMinItems,e,r,n)),Me(e.maxItems)&&!(n.length<=e.maxItems)&&(yield te(F.ArrayMaxItems,e,r,n));for(let a=0;aur(o,t,`${r}${c}`,s).next().done===!0?a+1:a,0);i===0&&(yield te(F.ArrayContains,e,r,n)),lt(e.minContains)&&ie.maxContains&&(yield te(F.ArrayMaxContains,e,r,n))}function*zV(e,t,r,n){up(n)||(yield te(F.AsyncIterator,e,r,n))}function*BV(e,t,r,n){if(!Yn(n))return yield te(F.BigInt,e,r,n);Me(e.exclusiveMaximum)&&!(ne.exclusiveMinimum)&&(yield te(F.BigIntExclusiveMinimum,e,r,n)),Me(e.maximum)&&!(n<=e.maximum)&&(yield te(F.BigIntMaximum,e,r,n)),Me(e.minimum)&&!(n>=e.minimum)&&(yield te(F.BigIntMinimum,e,r,n)),Me(e.multipleOf)&&n%e.multipleOf!==BigInt(0)&&(yield te(F.BigIntMultipleOf,e,r,n))}function*GV(e,t,r,n){No(n)||(yield te(F.Boolean,e,r,n))}function*KV(e,t,r,n){yield*ur(e.returns,t,r,n.prototype)}function*qV(e,t,r,n){if(!Nr(n))return yield te(F.Date,e,r,n);Me(e.exclusiveMaximumTimestamp)&&!(n.getTime()e.exclusiveMinimumTimestamp)&&(yield te(F.DateExclusiveMinimumTimestamp,e,r,n)),Me(e.maximumTimestamp)&&!(n.getTime()<=e.maximumTimestamp)&&(yield te(F.DateMaximumTimestamp,e,r,n)),Me(e.minimumTimestamp)&&!(n.getTime()>=e.minimumTimestamp)&&(yield te(F.DateMinimumTimestamp,e,r,n)),Me(e.multipleOfTimestamp)&&n.getTime()%e.multipleOfTimestamp!==0&&(yield te(F.DateMultipleOfTimestamp,e,r,n))}function*HV(e,t,r,n){ea(n)||(yield te(F.Function,e,r,n))}function*YV(e,t,r,n){let o=globalThis.Object.values(e.$defs),i=e.$defs[e.$ref];yield*ur(i,[...t,...o],r,n)}function*WV(e,t,r,n){if(!pp(n))return yield te(F.Integer,e,r,n);Me(e.exclusiveMaximum)&&!(ne.exclusiveMinimum)&&(yield te(F.IntegerExclusiveMinimum,e,r,n)),Me(e.maximum)&&!(n<=e.maximum)&&(yield te(F.IntegerMaximum,e,r,n)),Me(e.minimum)&&!(n>=e.minimum)&&(yield te(F.IntegerMinimum,e,r,n)),Me(e.multipleOf)&&n%e.multipleOf!==0&&(yield te(F.IntegerMultipleOf,e,r,n))}function*XV(e,t,r,n){let o=!1;for(let i of e.allOf)for(let a of ur(i,t,r,n))o=!0,yield a;if(o)return yield te(F.Intersect,e,r,n);if(e.unevaluatedProperties===!1){let i=new RegExp(cc(e));for(let a of Object.getOwnPropertyNames(n))i.test(a)||(yield te(F.IntersectUnevaluatedProperties,e,`${r}/${a}`,n))}if(typeof e.unevaluatedProperties=="object"){let i=new RegExp(cc(e));for(let a of Object.getOwnPropertyNames(n))if(!i.test(a)){let s=ur(e.unevaluatedProperties,t,`${r}/${a}`,n[a]).next();s.done||(yield s.value)}}}function*ZV(e,t,r,n){fp(n)||(yield te(F.Iterator,e,r,n))}function*QV(e,t,r,n){n!==e.const&&(yield te(F.Literal,e,r,n))}function*JV(e,t,r,n){yield te(F.Never,e,r,n)}function*ej(e,t,r,n){ur(e.not,t,r,n).next().done===!0&&(yield te(F.Not,e,r,n))}function*tj(e,t,r,n){mi(n)||(yield te(F.Null,e,r,n))}function*rj(e,t,r,n){if(!jt.IsNumberLike(n))return yield te(F.Number,e,r,n);Me(e.exclusiveMaximum)&&!(ne.exclusiveMinimum)&&(yield te(F.NumberExclusiveMinimum,e,r,n)),Me(e.maximum)&&!(n<=e.maximum)&&(yield te(F.NumberMaximum,e,r,n)),Me(e.minimum)&&!(n>=e.minimum)&&(yield te(F.NumberMinimum,e,r,n)),Me(e.multipleOf)&&n%e.multipleOf!==0&&(yield te(F.NumberMultipleOf,e,r,n))}function*nj(e,t,r,n){if(!jt.IsObjectLike(n))return yield te(F.Object,e,r,n);Me(e.minProperties)&&!(Object.getOwnPropertyNames(n).length>=e.minProperties)&&(yield te(F.ObjectMinProperties,e,r,n)),Me(e.maxProperties)&&!(Object.getOwnPropertyNames(n).length<=e.maxProperties)&&(yield te(F.ObjectMaxProperties,e,r,n));let o=Array.isArray(e.required)?e.required:[],i=Object.getOwnPropertyNames(e.properties),a=Object.getOwnPropertyNames(n);for(let s of o)a.includes(s)||(yield te(F.ObjectRequiredProperty,e.properties[s],`${r}/${Wi(s)}`,void 0));if(e.additionalProperties===!1)for(let s of a)i.includes(s)||(yield te(F.ObjectAdditionalProperties,e,`${r}/${Wi(s)}`,n[s]));if(typeof e.additionalProperties=="object")for(let s of a)i.includes(s)||(yield*ur(e.additionalProperties,t,`${r}/${Wi(s)}`,n[s]));for(let s of i){let c=e.properties[s];e.required&&e.required.includes(s)?(yield*ur(c,t,`${r}/${Wi(s)}`,n[s]),Qa(e)&&!(s in n)&&(yield te(F.ObjectRequiredProperty,c,`${r}/${Wi(s)}`,void 0))):jt.IsExactOptionalProperty(n,s)&&(yield*ur(c,t,`${r}/${Wi(s)}`,n[s]))}}function*oj(e,t,r,n){lp(n)||(yield te(F.Promise,e,r,n))}function*ij(e,t,r,n){if(!jt.IsRecordLike(n))return yield te(F.Object,e,r,n);Me(e.minProperties)&&!(Object.getOwnPropertyNames(n).length>=e.minProperties)&&(yield te(F.ObjectMinProperties,e,r,n)),Me(e.maxProperties)&&!(Object.getOwnPropertyNames(n).length<=e.maxProperties)&&(yield te(F.ObjectMaxProperties,e,r,n));let[o,i]=Object.entries(e.patternProperties)[0],a=new RegExp(o);for(let[s,c]of Object.entries(n))a.test(s)&&(yield*ur(i,t,`${r}/${Wi(s)}`,c));if(typeof e.additionalProperties=="object")for(let[s,c]of Object.entries(n))a.test(s)||(yield*ur(e.additionalProperties,t,`${r}/${Wi(s)}`,c));if(e.additionalProperties===!1){for(let[s,c]of Object.entries(n))if(!a.test(s))return yield te(F.ObjectAdditionalProperties,e,`${r}/${Wi(s)}`,c)}}function*aj(e,t,r,n){yield*ur(Le(e,t),t,r,n)}function*sj(e,t,r,n){if(!Be(n))return yield te(F.String,e,r,n);if(Me(e.minLength)&&!(n.length>=e.minLength)&&(yield te(F.StringMinLength,e,r,n)),Me(e.maxLength)&&!(n.length<=e.maxLength)&&(yield te(F.StringMaxLength,e,r,n)),!new RegExp(e.source,e.flags).test(n))return yield te(F.RegExp,e,r,n)}function*cj(e,t,r,n){if(!Be(n))return yield te(F.String,e,r,n);Me(e.minLength)&&!(n.length>=e.minLength)&&(yield te(F.StringMinLength,e,r,n)),Me(e.maxLength)&&!(n.length<=e.maxLength)&&(yield te(F.StringMaxLength,e,r,n)),Be(e.pattern)&&(new RegExp(e.pattern).test(n)||(yield te(F.StringPattern,e,r,n))),Be(e.format)&&(ia.Has(e.format)?ia.Get(e.format)(n)||(yield te(F.StringFormat,e,r,n)):yield te(F.StringFormatUnknown,e,r,n))}function*uj(e,t,r,n){di(n)||(yield te(F.Symbol,e,r,n))}function*fj(e,t,r,n){if(!Be(n))return yield te(F.String,e,r,n);new RegExp(e.pattern).test(n)||(yield te(F.StringPattern,e,r,n))}function*lj(e,t,r,n){yield*ur(Le(e,t),t,r,n)}function*pj(e,t,r,n){if(!me(n))return yield te(F.Tuple,e,r,n);if(e.items===void 0&&n.length!==0)return yield te(F.TupleLength,e,r,n);if(n.length!==e.maxItems)return yield te(F.TupleLength,e,r,n);if(e.items)for(let o=0;onew La(ur(i,t,r,n)));yield te(F.Union,e,r,n,o)}function*hj(e,t,r,n){if(!Ws(n))return yield te(F.Uint8Array,e,r,n);Me(e.maxByteLength)&&!(n.length<=e.maxByteLength)&&(yield te(F.Uint8ArrayMaxByteLength,e,r,n)),Me(e.minByteLength)&&!(n.length>=e.minByteLength)&&(yield te(F.Uint8ArrayMinByteLength,e,r,n))}function*gj(e,t,r,n){}function*yj(e,t,r,n){jt.IsVoidLike(n)||(yield te(F.Void,e,r,n))}function*bj(e,t,r,n){ro.Get(e[V])(e,n)||(yield te(F.Kind,e,r,n))}function*ur(e,t,r,n){let o=Me(e.$id)?[...t,e]:t,i=e;switch(i[V]){case"Any":return yield*VV(i,o,r,n);case"Argument":return yield*jV(i,o,r,n);case"Array":return yield*UV(i,o,r,n);case"AsyncIterator":return yield*zV(i,o,r,n);case"BigInt":return yield*BV(i,o,r,n);case"Boolean":return yield*GV(i,o,r,n);case"Constructor":return yield*KV(i,o,r,n);case"Date":return yield*qV(i,o,r,n);case"Function":return yield*HV(i,o,r,n);case"Import":return yield*YV(i,o,r,n);case"Integer":return yield*WV(i,o,r,n);case"Intersect":return yield*XV(i,o,r,n);case"Iterator":return yield*ZV(i,o,r,n);case"Literal":return yield*QV(i,o,r,n);case"Never":return yield*JV(i,o,r,n);case"Not":return yield*ej(i,o,r,n);case"Null":return yield*tj(i,o,r,n);case"Number":return yield*rj(i,o,r,n);case"Object":return yield*nj(i,o,r,n);case"Promise":return yield*oj(i,o,r,n);case"Record":return yield*ij(i,o,r,n);case"Ref":return yield*aj(i,o,r,n);case"RegExp":return yield*sj(i,o,r,n);case"String":return yield*cj(i,o,r,n);case"Symbol":return yield*uj(i,o,r,n);case"TemplateLiteral":return yield*fj(i,o,r,n);case"This":return yield*lj(i,o,r,n);case"Tuple":return yield*pj(i,o,r,n);case"Undefined":return yield*mj(i,o,r,n);case"Union":return yield*dj(i,o,r,n);case"Uint8Array":return yield*hj(i,o,r,n);case"Unknown":return yield*gj(i,o,r,n);case"Void":return yield*yj(i,o,r,n);default:if(!ro.Has(i[V]))throw new zw(e);return yield*bj(i,o,r,n)}}function Va(...e){let t=e.length===3?ur(e[0],e[1],"",e[2]):ur(e[0],[],"",e[1]);return new La(t)}var xj=function(e,t,r,n,o){if(n==="m")throw new TypeError("Private method is not writable");if(n==="a"&&!o)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return n==="a"?o.call(e,r):o?o.value=r:t.set(e,r),r},Qk=function(e,t,r,n){if(r==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?n:r==="a"?n.call(e):n?n.value:t.get(e)},Bw,kg,Jk,Gw=class extends ge{constructor(t){let r=t.First();super(r===void 0?"Invalid Value":r.message),Bw.add(this),kg.set(this,void 0),xj(this,kg,t,"f"),this.error=r}Errors(){return new La(Qk(this,Bw,"m",Jk).call(this))}};kg=new WeakMap,Bw=new WeakSet,Jk=function*(){this.error&&(yield this.error),yield*Qk(this,kg,"f")};function Zk(e,t,r){if(!Ie(e,t,r))throw new Gw(Va(e,t,r))}function Ng(...e){return e.length===3?Zk(e[0],e[1],e[2]):Zk(e[0],[],e[1])}function wj(e){let t={};for(let r of Object.getOwnPropertyNames(e))t[r]=Re(e[r]);for(let r of Object.getOwnPropertySymbols(e))t[r]=Re(e[r]);return t}function Sj(e){return e.map(t=>Re(t))}function vj(e){return e.slice()}function Ij(e){return new Map(Re([...e.entries()]))}function _j(e){return new Set(Re([...e.entries()]))}function Pj(e){return new Date(e.toISOString())}function Re(e){if(me(e))return Sj(e);if(Nr(e))return Pj(e);if(Pn(e))return vj(e);if(p2(e))return Ij(e);if(m2(e))return _j(e);if(xe(e))return wj(e);if(sn(e))return e;throw new Error("ValueClone: Unable to clone value")}var Sn=class extends ge{constructor(t,r){super(r),this.schema=t}};function Ee(e){return ea(e)?e():Re(e)}function Tj(e,t){return pe(e,"default")?Ee(e.default):{}}function Mj(e,t){return{}}function Cj(e,t){if(e.uniqueItems===!0&&!pe(e,"default"))throw new Sn(e,"Array with the uniqueItems constraint requires a default value");if("contains"in e&&!pe(e,"default"))throw new Sn(e,"Array with the contains constraint requires a default value");return"default"in e?Ee(e.default):e.minItems!==void 0?Array.from({length:e.minItems}).map(r=>vn(e.items,t)):[]}function Oj(e,t){return pe(e,"default")?Ee(e.default):(async function*(){})()}function kj(e,t){return pe(e,"default")?Ee(e.default):BigInt(0)}function Nj(e,t){return pe(e,"default")?Ee(e.default):!1}function Rj(e,t){if(pe(e,"default"))return Ee(e.default);{let r=vn(e.returns,t);return typeof r=="object"&&!Array.isArray(r)?class{constructor(){for(let[n,o]of Object.entries(r)){let i=this;i[n]=o}}}:class{}}}function Ej(e,t){return pe(e,"default")?Ee(e.default):e.minimumTimestamp!==void 0?new Date(e.minimumTimestamp):new Date}function Aj(e,t){return pe(e,"default")?Ee(e.default):()=>vn(e.returns,t)}function Fj(e,t){let r=globalThis.Object.values(e.$defs),n=e.$defs[e.$ref];return vn(n,[...t,...r])}function $j(e,t){return pe(e,"default")?Ee(e.default):e.minimum!==void 0?e.minimum:0}function Dj(e,t){if(pe(e,"default"))return Ee(e.default);{let r=e.allOf.reduce((n,o)=>{let i=vn(o,t);return typeof i=="object"?{...n,...i}:i},{});if(!Ie(e,t,r))throw new Sn(e,"Intersect produced invalid value. Consider using a default value.");return r}}function Lj(e,t){return pe(e,"default")?Ee(e.default):(function*(){})()}function Vj(e,t){return pe(e,"default")?Ee(e.default):e.const}function jj(e,t){if(pe(e,"default"))return Ee(e.default);throw new Sn(e,"Never types cannot be created. Consider using a default value.")}function Uj(e,t){if(pe(e,"default"))return Ee(e.default);throw new Sn(e,"Not types must have a default value")}function zj(e,t){return pe(e,"default")?Ee(e.default):null}function Bj(e,t){return pe(e,"default")?Ee(e.default):e.minimum!==void 0?e.minimum:0}function Gj(e,t){if(pe(e,"default"))return Ee(e.default);{let r=new Set(e.required),n={};for(let[o,i]of Object.entries(e.properties))r.has(o)&&(n[o]=vn(i,t));return n}}function Kj(e,t){return pe(e,"default")?Ee(e.default):Promise.resolve(vn(e.item,t))}function qj(e,t){return pe(e,"default")?Ee(e.default):{}}function Hj(e,t){return pe(e,"default")?Ee(e.default):vn(Le(e,t),t)}function Yj(e,t){if(pe(e,"default"))return Ee(e.default);throw new Sn(e,"RegExp types cannot be created. Consider using a default value.")}function Wj(e,t){if(e.pattern!==void 0){if(pe(e,"default"))return Ee(e.default);throw new Sn(e,"String types with patterns must specify a default value")}else if(e.format!==void 0){if(pe(e,"default"))return Ee(e.default);throw new Sn(e,"String types with formats must specify a default value")}else return pe(e,"default")?Ee(e.default):e.minLength!==void 0?Array.from({length:e.minLength}).map(()=>" ").join(""):""}function Xj(e,t){return pe(e,"default")?Ee(e.default):"value"in e?Symbol.for(e.value):Symbol()}function Zj(e,t){if(pe(e,"default"))return Ee(e.default);if(!gp(e))throw new Sn(e,"Can only create template literals that produce a finite variants. Consider using a default value.");return oc(e)[0]}function Qj(e,t){if(e6++>aU)throw new Sn(e,"Cannot create recursive type as it appears possibly infinite. Consider using a default.");return pe(e,"default")?Ee(e.default):vn(Le(e,t),t)}function Jj(e,t){return pe(e,"default")?Ee(e.default):e.items===void 0?[]:Array.from({length:e.minItems}).map((r,n)=>vn(e.items[n],t))}function eU(e,t){if(pe(e,"default"))return Ee(e.default)}function tU(e,t){if(pe(e,"default"))return Ee(e.default);if(e.anyOf.length===0)throw new Error("ValueCreate.Union: Cannot create Union with zero variants");return vn(e.anyOf[0],t)}function rU(e,t){return pe(e,"default")?Ee(e.default):e.minByteLength!==void 0?new Uint8Array(e.minByteLength):new Uint8Array(0)}function nU(e,t){return pe(e,"default")?Ee(e.default):{}}function oU(e,t){if(pe(e,"default"))return Ee(e.default)}function iU(e,t){if(pe(e,"default"))return Ee(e.default);throw new Error("User defined types must specify a default value")}function vn(e,t){let r=sr(e,t),n=e;switch(n[V]){case"Any":return Tj(n,r);case"Argument":return Mj(n,r);case"Array":return Cj(n,r);case"AsyncIterator":return Oj(n,r);case"BigInt":return kj(n,r);case"Boolean":return Nj(n,r);case"Constructor":return Rj(n,r);case"Date":return Ej(n,r);case"Function":return Aj(n,r);case"Import":return Fj(n,r);case"Integer":return $j(n,r);case"Intersect":return Dj(n,r);case"Iterator":return Lj(n,r);case"Literal":return Vj(n,r);case"Never":return jj(n,r);case"Not":return Uj(n,r);case"Null":return zj(n,r);case"Number":return Bj(n,r);case"Object":return Gj(n,r);case"Promise":return Kj(n,r);case"Record":return qj(n,r);case"Ref":return Hj(n,r);case"RegExp":return Yj(n,r);case"String":return Wj(n,r);case"Symbol":return Xj(n,r);case"TemplateLiteral":return Zj(n,r);case"This":return Qj(n,r);case"Tuple":return Jj(n,r);case"Undefined":return eU(n,r);case"Union":return tU(n,r);case"Uint8Array":return rU(n,r);case"Unknown":return nU(n,r);case"Void":return oU(n,r);default:if(!ro.Has(n[V]))throw new Sn(n,"Unknown type");return iU(n,r)}}var aU=512,e6=0;function _o(...e){return e6=0,e.length===2?vn(e[0],e[1]):vn(e[0],[])}var Rg=class extends ge{constructor(t,r){super(r),this.schema=t}};function t6(e,t,r){if(e[V]==="Object"&&typeof r=="object"&&!mi(r)){let n=e,o=Object.getOwnPropertyNames(r);return Object.entries(n.properties).reduce((a,[s,c])=>{let u=c[V]==="Literal"&&c.const===r[s]?100:0,f=Ie(c,t,r[s])?10:0,p=o.includes(s)?1:0;return a+(u+f+p)},0)}else if(e[V]==="Union"){let o=e.anyOf.map(i=>Le(i,t)).map(i=>t6(i,t,r));return Math.max(...o)}else return Ie(e,t,r)?1:0}function sU(e,t,r){let n=e.anyOf.map(a=>Le(a,t)),[o,i]=[n[0],0];for(let a of n){let s=t6(a,t,r);s>i&&(o=a,i=s)}return o}function cU(e,t,r){if("default"in e)return typeof r=="function"?e.default:Re(e.default);{let n=sU(e,t,r);return ep(n,t,r)}}function uU(e,t,r){return Ie(e,t,r)?Re(r):_o(e,t)}function fU(e,t,r){return Ie(e,t,r)?r:_o(e,t)}function lU(e,t,r){if(Ie(e,t,r))return Re(r);let n=me(r)?Re(r):_o(e,t),o=lt(e.minItems)&&n.lengthnull)]:n,a=(lt(e.maxItems)&&o.length>e.maxItems?o.slice(0,e.maxItems):o).map(c=>Po(e.items,t,c));if(e.uniqueItems!==!0)return a;let s=[...new Set(a)];if(!Ie(e,t,s))throw new Rg(e,"Array cast produced invalid data due to uniqueItems constraint");return s}function pU(e,t,r){if(Ie(e,t,r))return _o(e,t);let n=new Set(e.returns.required||[]),o=function(){};for(let[i,a]of Object.entries(e.returns.properties))!n.has(i)&&r.prototype[i]===void 0||(o.prototype[i]=Po(a,t,r.prototype[i]));return o}function mU(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return Po(o,[...t,...n],r)}function r6(e,t){return xe(e)&&!xe(t)||!xe(e)&&xe(t)?e:!xe(e)||!xe(t)?t:globalThis.Object.getOwnPropertyNames(e).reduce((r,n)=>{let o=n in t?r6(e[n],t[n]):e[n];return{...r,[n]:o}},{})}function dU(e,t,r){if(Ie(e,t,r))return r;let n=_o(e,t),o=r6(n,r);return Ie(e,t,o)?o:n}function hU(e,t,r){throw new Rg(e,"Never types cannot be cast")}function gU(e,t,r){if(Ie(e,t,r))return r;if(r===null||typeof r!="object")return _o(e,t);let n=new Set(e.required||[]),o={};for(let[i,a]of Object.entries(e.properties))!n.has(i)&&r[i]===void 0||(o[i]=Po(a,t,r[i]));if(typeof e.additionalProperties=="object"){let i=Object.getOwnPropertyNames(e.properties);for(let a of Object.getOwnPropertyNames(r))i.includes(a)||(o[a]=Po(e.additionalProperties,t,r[a]))}return o}function yU(e,t,r){if(Ie(e,t,r))return Re(r);if(r===null||typeof r!="object"||Array.isArray(r)||r instanceof Date)return _o(e,t);let n=Object.getOwnPropertyNames(e.patternProperties)[0],o=e.patternProperties[n],i={};for(let[a,s]of Object.entries(r))i[a]=Po(o,t,s);return i}function bU(e,t,r){return Po(Le(e,t),t,r)}function xU(e,t,r){return Po(Le(e,t),t,r)}function wU(e,t,r){return Ie(e,t,r)?Re(r):me(r)?e.items===void 0?[]:e.items.map((n,o)=>Po(n,t,r[o])):_o(e,t)}function SU(e,t,r){return Ie(e,t,r)?Re(r):cU(e,t,r)}function Po(e,t,r){let n=Be(e.$id)?sr(e,t):t,o=e;switch(e[V]){case"Array":return lU(o,n,r);case"Constructor":return pU(o,n,r);case"Import":return mU(o,n,r);case"Intersect":return dU(o,n,r);case"Never":return hU(o,n,r);case"Object":return gU(o,n,r);case"Record":return yU(o,n,r);case"Ref":return bU(o,n,r);case"This":return xU(o,n,r);case"Tuple":return wU(o,n,r);case"Union":return SU(o,n,r);case"Date":case"Symbol":case"Uint8Array":return uU(e,t,r);default:return fU(o,n,r)}}function ep(...e){return e.length===3?Po(e[0],e[1],e[2]):Po(e[0],[],e[1])}function vU(e){return ra(e)&&e[V]!=="Unsafe"}function IU(e,t,r){return me(r)?r.map(n=>rn(e.items,t,n)):r}function _U(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return rn(o,[...t,...n],r)}function PU(e,t,r){let n=e.unevaluatedProperties,i=e.allOf.map(s=>rn(s,t,Re(r))).reduce((s,c)=>xe(c)?{...s,...c}:c,{});if(!xe(r)||!xe(i)||!ra(n))return i;let a=Hr(e);for(let s of Object.getOwnPropertyNames(r))a.includes(s)||Ie(n,t,r[s])&&(i[s]=rn(n,t,r[s]));return i}function TU(e,t,r){if(!xe(r)||me(r))return r;let n=e.additionalProperties;for(let o of Object.getOwnPropertyNames(r)){if(pe(e.properties,o)){r[o]=rn(e.properties[o],t,r[o]);continue}if(ra(n)&&Ie(n,t,r[o])){r[o]=rn(n,t,r[o]);continue}delete r[o]}return r}function MU(e,t,r){if(!xe(r))return r;let n=e.additionalProperties,o=Object.getOwnPropertyNames(r),[i,a]=Object.entries(e.patternProperties)[0],s=new RegExp(i);for(let c of o){if(s.test(c)){r[c]=rn(a,t,r[c]);continue}if(ra(n)&&Ie(n,t,r[c])){r[c]=rn(n,t,r[c]);continue}delete r[c]}return r}function CU(e,t,r){return rn(Le(e,t),t,r)}function OU(e,t,r){return rn(Le(e,t),t,r)}function kU(e,t,r){if(!me(r))return r;if(ft(e.items))return[];let n=Math.min(r.length,e.items.length);for(let o=0;on?r.slice(0,n):r}function NU(e,t,r){for(let n of e.anyOf)if(vU(n)&&Ie(n,t,r))return rn(n,t,r);return r}function rn(e,t,r){let n=Be(e.$id)?sr(e,t):t,o=e;switch(o[V]){case"Array":return IU(o,n,r);case"Import":return _U(o,n,r);case"Intersect":return PU(o,n,r);case"Object":return TU(o,n,r);case"Record":return MU(o,n,r);case"Ref":return CU(o,n,r);case"This":return OU(o,n,r);case"Tuple":return kU(o,n,r);case"Union":return NU(o,n,r);default:return r}}function Eg(...e){return e.length===3?rn(e[0],e[1],e[2]):rn(e[0],[],e[1])}function Ag(e){return Be(e)&&!isNaN(e)&&!isNaN(parseFloat(e))}function RU(e){return Yn(e)||No(e)||lt(e)}function tp(e){return e===!0||lt(e)&&e===1||Yn(e)&&e===BigInt("1")||Be(e)&&(e.toLowerCase()==="true"||e==="1")}function rp(e){return e===!1||lt(e)&&(e===0||Object.is(e,-0))||Yn(e)&&e===BigInt("0")||Be(e)&&(e.toLowerCase()==="false"||e==="0"||e==="-0")}function EU(e){return Be(e)&&/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i.test(e)}function AU(e){return Be(e)&&/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)?$/i.test(e)}function FU(e){return Be(e)&&/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i.test(e)}function $U(e){return Be(e)&&/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)?$/i.test(e)}function DU(e){return Be(e)&&/^\d\d\d\d-[0-1]\d-[0-3]\d$/i.test(e)}function LU(e,t){let r=o6(e);return r===t?r:e}function VU(e,t){let r=i6(e);return r===t?r:e}function jU(e,t){let r=n6(e);return r===t?r:e}function UU(e,t){return Be(e.const)?LU(t,e.const):lt(e.const)?VU(t,e.const):No(e.const)?jU(t,e.const):t}function n6(e){return tp(e)?!0:rp(e)?!1:e}function zU(e){let t=r=>r.split(".")[0];return Ag(e)?BigInt(t(e)):lt(e)?BigInt(Math.trunc(e)):rp(e)?BigInt(0):tp(e)?BigInt(1):e}function o6(e){return di(e)&&e.description!==void 0?e.description.toString():RU(e)?e.toString():e}function i6(e){return Ag(e)?parseFloat(e):tp(e)?1:rp(e)?0:e}function BU(e){return Ag(e)?parseInt(e):lt(e)?Math.trunc(e):tp(e)?1:rp(e)?0:e}function GU(e){return Be(e)&&e.toLowerCase()==="null"?null:e}function KU(e){return Be(e)&&e==="undefined"?void 0:e}function qU(e){return Nr(e)?e:lt(e)?new Date(e):tp(e)?new Date(1):rp(e)?new Date(0):Ag(e)?new Date(parseInt(e)):AU(e)?new Date(`1970-01-01T${e}.000Z`):EU(e)?new Date(`1970-01-01T${e}`):$U(e)?new Date(`${e}.000Z`):FU(e)?new Date(e):DU(e)?new Date(`${e}T00:00:00.000Z`):e}function HU(e,t,r){return(me(r)?r:[r]).map(o=>To(e.items,t,o))}function YU(e,t,r){return zU(r)}function WU(e,t,r){return n6(r)}function XU(e,t,r){return qU(r)}function ZU(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return To(o,[...t,...n],r)}function QU(e,t,r){return BU(r)}function JU(e,t,r){return e.allOf.reduce((n,o)=>To(o,t,n),r)}function ez(e,t,r){return UU(e,r)}function tz(e,t,r){return GU(r)}function rz(e,t,r){return i6(r)}function nz(e,t,r){if(!xe(r)||me(r))return r;for(let n of Object.getOwnPropertyNames(e.properties))pe(r,n)&&(r[n]=To(e.properties[n],t,r[n]));return r}function oz(e,t,r){if(!(xe(r)&&!me(r)))return r;let o=Object.getOwnPropertyNames(e.patternProperties)[0],i=e.patternProperties[o];for(let[a,s]of Object.entries(r))r[a]=To(i,t,s);return r}function iz(e,t,r){return To(Le(e,t),t,r)}function az(e,t,r){return o6(r)}function sz(e,t,r){return Be(r)||lt(r)?Symbol(r):r}function cz(e,t,r){return To(Le(e,t),t,r)}function uz(e,t,r){return me(r)&&!ft(e.items)?r.map((o,i)=>iMo(e.items,t,`${r}/${i}`,o))):xt(e,r,n)}function mz(e,t,r,n){if(!xe(n)||sn(n))return xt(e,r,n);let o=Sp(e),i=o.map(f=>f[0]),a={...n};for(let[f,p]of o)f in a&&(a[f]=Mo(p,t,`${r}/${f}`,a[f]));if(!Ae(e.unevaluatedProperties))return xt(e,r,a);let s=Object.getOwnPropertyNames(a),c=e.unevaluatedProperties,u={...a};for(let f of s)i.includes(f)||(u[f]=xt(c,`${r}/${f}`,u[f]));return xt(e,r,u)}function dz(e,t,r,n){let o=globalThis.Object.values(e.$defs),i=e.$defs[e.$ref],a=Mo(i,[...t,...o],r,n);return xt(e,r,a)}function hz(e,t,r,n){return xt(e,r,Mo(e.not,t,r,n))}function gz(e,t,r,n){if(!xe(n))return xt(e,r,n);let o=Hr(e),i={...n};for(let u of o)pe(i,u)&&(ft(i[u])&&(!yi(e.properties[u])||jt.IsExactOptionalProperty(i,u))||(i[u]=Mo(e.properties[u],t,`${r}/${u}`,i[u])));if(!yt(e.additionalProperties))return xt(e,r,i);let a=Object.getOwnPropertyNames(i),s=e.additionalProperties,c={...i};for(let u of a)o.includes(u)||(c[u]=xt(s,`${r}/${u}`,c[u]));return xt(e,r,c)}function yz(e,t,r,n){if(!xe(n))return xt(e,r,n);let o=Object.getOwnPropertyNames(e.patternProperties)[0],i=new RegExp(o),a={...n};for(let f of Object.getOwnPropertyNames(n))i.test(f)&&(a[f]=Mo(e.patternProperties[o],t,`${r}/${f}`,a[f]));if(!yt(e.additionalProperties))return xt(e,r,a);let s=Object.getOwnPropertyNames(a),c=e.additionalProperties,u={...a};for(let f of s)i.test(f)||(u[f]=xt(c,`${r}/${f}`,u[f]));return xt(e,r,u)}function bz(e,t,r,n){let o=Le(e,t);return xt(e,r,Mo(o,t,r,n))}function xz(e,t,r,n){let o=Le(e,t);return xt(e,r,Mo(o,t,r,n))}function wz(e,t,r,n){return me(n)&&me(e.items)?xt(e,r,e.items.map((o,i)=>Mo(o,t,`${r}/${i}`,n[i]))):xt(e,r,n)}function Sz(e,t,r,n){for(let o of e.anyOf){if(!Ie(o,t,n))continue;let i=Mo(o,t,r,n);return xt(e,r,i)}return xt(e,r,n)}function Mo(e,t,r,n){let o=sr(e,t),i=e;switch(e[V]){case"Array":return pz(i,o,r,n);case"Import":return dz(i,o,r,n);case"Intersect":return mz(i,o,r,n);case"Not":return hz(i,o,r,n);case"Object":return gz(i,o,r,n);case"Record":return yz(i,o,r,n);case"Ref":return bz(i,o,r,n);case"Symbol":return xt(i,r,n);case"This":return xz(i,o,r,n);case"Tuple":return wz(i,o,r,n);case"Union":return Sz(i,o,r,n);default:return xt(i,r,n)}}function Dg(e,t,r){return Mo(e,t,"",r)}var Lg=class extends ge{constructor(t,r,n){super("The encoded value does not match the expected schema"),this.schema=t,this.value=r,this.error=n}},qw=class extends ge{constructor(t,r,n,o){super(`${o instanceof Error?o.message:"Unknown error"}`),this.schema=t,this.path=r,this.value=n,this.error=o}};function br(e,t,r){try{return Ae(e)?e[gt].Encode(r):r}catch(n){throw new qw(e,t,r,n)}}function vz(e,t,r,n){let o=br(e,r,n);return me(o)?o.map((i,a)=>Co(e.items,t,`${r}/${a}`,i)):o}function Iz(e,t,r,n){let o=globalThis.Object.values(e.$defs),i=e.$defs[e.$ref],a=br(e,r,n);return Co(i,[...t,...o],r,a)}function _z(e,t,r,n){let o=br(e,r,n);if(!xe(n)||sn(n))return o;let i=Sp(e),a=i.map(p=>p[0]),s={...o};for(let[p,l]of i)p in s&&(s[p]=Co(l,t,`${r}/${p}`,s[p]));if(!Ae(e.unevaluatedProperties))return s;let c=Object.getOwnPropertyNames(s),u=e.unevaluatedProperties,f={...s};for(let p of c)a.includes(p)||(f[p]=br(u,`${r}/${p}`,f[p]));return f}function Pz(e,t,r,n){return br(e.not,r,br(e,r,n))}function Tz(e,t,r,n){let o=br(e,r,n);if(!xe(o))return o;let i=Hr(e),a={...o};for(let f of i)pe(a,f)&&(ft(a[f])&&(!yi(e.properties[f])||jt.IsExactOptionalProperty(a,f))||(a[f]=Co(e.properties[f],t,`${r}/${f}`,a[f])));if(!yt(e.additionalProperties))return a;let s=Object.getOwnPropertyNames(a),c=e.additionalProperties,u={...a};for(let f of s)i.includes(f)||(u[f]=br(c,`${r}/${f}`,u[f]));return u}function Mz(e,t,r,n){let o=br(e,r,n);if(!xe(n))return o;let i=Object.getOwnPropertyNames(e.patternProperties)[0],a=new RegExp(i),s={...o};for(let p of Object.getOwnPropertyNames(n))a.test(p)&&(s[p]=Co(e.patternProperties[i],t,`${r}/${p}`,s[p]));if(!yt(e.additionalProperties))return s;let c=Object.getOwnPropertyNames(s),u=e.additionalProperties,f={...s};for(let p of c)a.test(p)||(f[p]=br(u,`${r}/${p}`,f[p]));return f}function Cz(e,t,r,n){let o=Le(e,t),i=Co(o,t,r,n);return br(e,r,i)}function Oz(e,t,r,n){let o=Le(e,t),i=Co(o,t,r,n);return br(e,r,i)}function kz(e,t,r,n){let o=br(e,r,n);return me(e.items)?e.items.map((i,a)=>Co(i,t,`${r}/${a}`,o[a])):[]}function Nz(e,t,r,n){for(let o of e.anyOf){if(!Ie(o,t,n))continue;let i=Co(o,t,r,n);return br(e,r,i)}for(let o of e.anyOf){let i=Co(o,t,r,n);if(Ie(e,t,i))return br(e,r,i)}return br(e,r,n)}function Co(e,t,r,n){let o=sr(e,t),i=e;switch(e[V]){case"Array":return vz(i,o,r,n);case"Import":return Iz(i,o,r,n);case"Intersect":return _z(i,o,r,n);case"Not":return Pz(i,o,r,n);case"Object":return Tz(i,o,r,n);case"Record":return Mz(i,o,r,n);case"Ref":return Cz(i,o,r,n);case"This":return Oz(i,o,r,n);case"Tuple":return kz(i,o,r,n);case"Union":return Nz(i,o,r,n);default:return br(i,r,n)}}function Vg(e,t,r){return Co(e,t,"",r)}function Rz(e,t){return Ae(e)||Qt(e.items,t)}function Ez(e,t){return Ae(e)||Qt(e.items,t)}function Az(e,t){return Ae(e)||Qt(e.returns,t)||e.parameters.some(r=>Qt(r,t))}function Fz(e,t){return Ae(e)||Qt(e.returns,t)||e.parameters.some(r=>Qt(r,t))}function $z(e,t){return Ae(e)||Ae(e.unevaluatedProperties)||e.allOf.some(r=>Qt(r,t))}function Dz(e,t){let r=globalThis.Object.getOwnPropertyNames(e.$defs).reduce((o,i)=>[...o,e.$defs[i]],[]),n=e.$defs[e.$ref];return Ae(e)||Qt(n,[...r,...t])}function Lz(e,t){return Ae(e)||Qt(e.items,t)}function Vz(e,t){return Ae(e)||Qt(e.not,t)}function jz(e,t){return Ae(e)||Object.values(e.properties).some(r=>Qt(r,t))||yt(e.additionalProperties)&&Qt(e.additionalProperties,t)}function Uz(e,t){return Ae(e)||Qt(e.item,t)}function zz(e,t){let r=Object.getOwnPropertyNames(e.patternProperties)[0],n=e.patternProperties[r];return Ae(e)||Qt(n,t)||yt(e.additionalProperties)&&Ae(e.additionalProperties)}function Bz(e,t){return Ae(e)?!0:Qt(Le(e,t),t)}function Gz(e,t){return Ae(e)?!0:Qt(Le(e,t),t)}function Kz(e,t){return Ae(e)||!ft(e.items)&&e.items.some(r=>Qt(r,t))}function qz(e,t){return Ae(e)||e.anyOf.some(r=>Qt(r,t))}function Qt(e,t){let r=sr(e,t),n=e;if(e.$id&&Hw.has(e.$id))return!1;switch(e.$id&&Hw.add(e.$id),e[V]){case"Array":return Rz(n,r);case"AsyncIterator":return Ez(n,r);case"Constructor":return Az(n,r);case"Function":return Fz(n,r);case"Import":return Dz(n,r);case"Intersect":return $z(n,r);case"Iterator":return Lz(n,r);case"Not":return Vz(n,r);case"Object":return jz(n,r);case"Promise":return Uz(n,r);case"Record":return zz(n,r);case"Ref":return Bz(n,r);case"This":return Gz(n,r);case"Tuple":return Kz(n,r);case"Union":return qz(n,r);default:return Ae(e)}}var Hw=new Set;function Bs(e,t){return Hw.clear(),Qt(e,t)}function a6(...e){let[t,r,n]=e.length===3?[e[0],e[1],e[2]]:[e[0],[],e[1]];if(!Ie(t,r,n))throw new $g(t,n,Va(t,r,n).First());return Bs(t,r)?Dg(t,r,n):n}function Xi(e,t){let r=pe(e,"default")?e.default:void 0,n=ea(r)?r():Re(r);return ft(t)?n:xe(t)&&xe(n)?Object.assign(n,t):t}function Yw(e){return ra(e)&&"default"in e}function Hz(e,t,r){if(me(r)){for(let o=0;o{let a=Ur(i,t,n);return xe(a)?{...o,...a}:a},{})}function Zz(e,t,r){let n=Xi(e,r);if(!xe(n))return n;let o=Object.getOwnPropertyNames(e.properties);for(let i of o){let a=Ur(e.properties[i],t,n[i]);ft(a)||(n[i]=Ur(e.properties[i],t,n[i]))}if(!Yw(e.additionalProperties))return n;for(let i of Object.getOwnPropertyNames(n))o.includes(i)||(n[i]=Ur(e.additionalProperties,t,n[i]));return n}function Qz(e,t,r){let n=Xi(e,r);if(!xe(n))return n;let o=e.additionalProperties,[i,a]=Object.entries(e.patternProperties)[0],s=new RegExp(i);for(let c of Object.getOwnPropertyNames(n))s.test(c)&&Yw(a)&&(n[c]=Ur(a,t,n[c]));if(!Yw(o))return n;for(let c of Object.getOwnPropertyNames(n))s.test(c)||(n[c]=Ur(o,t,n[c]));return n}function Jz(e,t,r){return Ur(Le(e,t),t,Xi(e,r))}function eB(e,t,r){return Ur(Le(e,t),t,r)}function tB(e,t,r){let n=Xi(e,r);if(!me(n)||ft(e.items))return n;let[o,i]=[e.items,Math.max(e.items.length,n.length)];for(let a=0;aoB,Format:()=>np,Get:()=>aB,Has:()=>iB,Set:()=>nB,ValuePointerRootDeleteError:()=>zg,ValuePointerRootSetError:()=>Ug});var Ug=class extends ge{constructor(t,r,n){super("Cannot set root value"),this.value=t,this.path=r,this.update=n}},zg=class extends ge{constructor(t,r){super("Cannot delete root value"),this.value=t,this.path=r}};function s6(e){return e.indexOf("~")===-1?e:e.replace(/~1/g,"/").replace(/~0/g,"~")}function*np(e){if(e==="")return;let[t,r]=[0,0];for(let n=0;nGs(e[o],t[o]))}function cB(e,t){return Nr(t)&&e.getTime()===t.getTime()}function uB(e,t){return!me(t)||e.length!==t.length?!1:e.every((r,n)=>Gs(r,t[n]))}function fB(e,t){return!Pn(t)||e.length!==t.length||Object.getPrototypeOf(e).constructor.name!==Object.getPrototypeOf(t).constructor.name?!1:e.every((r,n)=>Gs(r,t[n]))}function lB(e,t){return e===t}function Gs(e,t){if(Nr(e))return cB(e,t);if(Pn(e))return fB(e,t);if(me(e))return uB(e,t);if(xe(e))return sB(e,t);if(sn(e))return lB(e,t);throw new Error("ValueEquals: Unable to compare value")}var pB=$e({type:Oe("insert"),path:Rr(),value:no()}),mB=$e({type:Oe("update"),path:Rr(),value:no()}),dB=$e({type:Oe("delete"),path:Rr()}),u6=Fe([pB,mB,dB]),Bg=class extends ge{constructor(t,r){super(r),this.value=t}};function Gg(e,t){return{type:"update",path:e,value:t}}function f6(e,t){return{type:"insert",path:e,value:t}}function l6(e){return{type:"delete",path:e}}function c6(e){if(globalThis.Object.getOwnPropertySymbols(e).length>0)throw new Bg(e,"Cannot diff objects with symbols")}function*hB(e,t,r){if(c6(t),c6(r),!dy(r))return yield Gg(e,r);let n=globalThis.Object.getOwnPropertyNames(t),o=globalThis.Object.getOwnPropertyNames(r);for(let i of o)pe(t,i)||(yield f6(`${e}/${i}`,r[i]));for(let i of n)pe(r,i)&&(Gs(t,r)||(yield*Kg(`${e}/${i}`,t[i],r[i])));for(let i of n)pe(r,i)||(yield l6(`${e}/${i}`))}function*gB(e,t,r){if(!me(r))return yield Gg(e,r);for(let n=0;n=0;n--)n0&&e[0].path===""&&e[0].type==="update"}function wB(e){return e.length===0}function m6(e,t){if(xB(t))return Re(t[0].value);if(wB(t))return Re(e);let r=Re(e);for(let n of t)switch(n.type){case"insert":{Oo.Set(r,n.path,n.value);break}case"update":{Oo.Set(r,n.path,n.value);break}case"delete":{Oo.Delete(r,n.path);break}}return r}function d6(...e){let[t,r,n]=e.length===3?[e[0],e[1],e[2]]:[e[0],[],e[1]],o=Bs(t,r)?Vg(t,r,n):n;if(!Ie(t,r,o))throw new Lg(t,o,Va(t,r,o).First());return o}function qg(e){return xe(e)&&!me(e)}var Hg=class extends ge{constructor(t){super(t)}};function SB(e,t,r,n){if(!qg(r))Oo.Set(e,t,Re(n));else{let o=Object.getOwnPropertyNames(r),i=Object.getOwnPropertyNames(n);for(let a of o)i.includes(a)||delete r[a];for(let a of i)o.includes(a)||(r[a]=null);for(let a of i)Ww(e,`${t}/${a}`,r[a],n[a])}}function vB(e,t,r,n){if(!me(r))Oo.Set(e,t,Re(n));else{for(let o=0;o(Ng(i,a,s),s)],["Cast",(i,a,s)=>ep(i,a,s)],["Clean",(i,a,s)=>Eg(i,a,s)],["Clone",(i,a,s)=>Re(s)],["Convert",(i,a,s)=>Fg(i,a,s)],["Decode",(i,a,s)=>Bs(i,a)?Dg(i,a,s):s],["Default",(i,a,s)=>jg(i,a,s)],["Encode",(i,a,s)=>Bs(i,a)?Vg(i,a,s):s]]);function r(i){t.delete(i)}e.Delete=r;function n(i,a){t.set(i,a)}e.Set=n;function o(i){return t.get(i)}e.Get=o})(Xw||(Xw={}));var y6=["Clone","Clean","Default","Convert","Assert","Decode"];function TB(e,t,r,n){return e.reduce((o,i)=>{let a=Xw.Get(i);if(ft(a))throw new Yg(`Unable to find Parse operation '${i}'`);return a(t,r,o)},n)}function b6(...e){let[t,r,n,o]=e.length===4?[e[0],e[1],e[2],e[3]]:e.length===3?me(e[0])?[e[0],e[1],[],e[2]]:[y6,e[0],e[1],e[2]]:e.length===2?[y6,e[0],[],e[1]]:(()=>{throw new Yg("Invalid Arguments")})();return TB(t,r,n,o)}var Fu={};Ba(Fu,{Assert:()=>Ng,Cast:()=>ep,Check:()=>Ie,Clean:()=>Eg,Clone:()=>Re,Convert:()=>Fg,Create:()=>_o,Decode:()=>a6,Default:()=>jg,Diff:()=>p6,Edit:()=>u6,Encode:()=>d6,Equal:()=>Gs,Errors:()=>Va,Hash:()=>Au,Mutate:()=>g6,Parse:()=>b6,Patch:()=>m6,ValueErrorIterator:()=>La});function Wg(e){switch(e.type){case"summary_metrics":return Lw(e);case"performance_table":return Fw(e);case"prediction_distribution":return $w(e);case"outcome_distribution":return Aw(e);case"roc":return Mw(e);case"calibration":return Vk(e);case"precision_recall":return Ow(e);case"gains":return kw(e);case"lift":return Nw(e);case"decision_curve":return Rw(e);case"interventions_avoided":return Ew(e)}}function ui(e,t){let r=e.toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"id";/^[a-z]/i.test(r)||(r=`id-${r}`);let n=r,o=1;for(;t.has(n);)n=`${r}-${o}`,o++;return t.add(n),n}function Zw(e,t){let r=(n,o=!0)=>{e.forEach((i,a)=>{let s=a===n;i.setAttribute("aria-selected",s?"true":"false"),i.tabIndex=s?0:-1,t[a].hidden=!s}),o&&e[n].focus()};e.forEach((n,o)=>{n.addEventListener("click",()=>{r(o,!1)}),n.addEventListener("keydown",i=>{let a=null;i.key==="ArrowRight"?a=(o+1)%e.length:i.key==="ArrowLeft"?a=(o-1+e.length)%e.length:i.key==="Home"?a=0:i.key==="End"&&(a=e.length-1),a!==null&&(i.preventDefault(),r(a,!0))})})}function MB(e){if(!Fu.Check(Fp,e))throw new Error("Invalid ReportSpec");Dp(e);let t=document.createElement("div");if(t.className="rtichoke-report",e.title){let r=document.createElement("h1");r.className="rtichoke-report__title",r.textContent=e.title,t.append(r)}for(let r of e.components){let n=document.createElement("section");if(n.className="rtichoke-report__component",n.dataset.componentId=r.id,r.title){let i=document.createElement("h2");i.className="rtichoke-report__component-title",i.textContent=r.title,n.append(i)}let o=document.createElement("div");o.className="rtichoke-report__component-content",o.append(Wg(r.spec)),n.append(o),t.append(n)}return t}function CB(e,t){if(!Fu.Check($p,e))throw new Error("Invalid ReportSpec");Dp(e);let r=!!e.title,n=new Set,o=document.createElement("article");if(o.className="rtichoke-report",e.title){let m=document.createElement("header");m.className="rtichoke-report__header";let h=document.createElement("h1");h.className="rtichoke-report__title",h.textContent=e.title,m.append(h),o.append(m)}let i=[],a=0;for(let m of e.sections){let h=ui(m.id,n);a++;let b=[];for(let y of m.items)if(y.type==="group"){let x=ui(y.id,n);a++,b.push({rawId:y.id,title:y.title,domId:x})}i.push({rawId:m.id,title:m.title,domId:h,groups:b})}if(a>1){let m=document.createElement("nav");m.className="rtichoke-report__nav",m.setAttribute("aria-label","Report sections");let h=document.createElement("ul");h.className="rtichoke-report__nav-list";for(let b of i){let y=document.createElement("li");y.className="rtichoke-report__nav-item";let x=document.createElement("a");if(x.className="rtichoke-report__nav-link",x.href=`#${b.domId}`,x.textContent=b.title,y.append(x),b.groups.length>0){let g=document.createElement("ul");g.className="rtichoke-report__nav-sublist";for(let S of b.groups){let w=document.createElement("li");w.className="rtichoke-report__nav-subitem";let _=document.createElement("a");_.className="rtichoke-report__nav-link",_.href=`#${S.domId}`,_.textContent=S.title,w.append(_),g.append(w)}y.append(g)}h.append(y)}m.append(h),o.append(m)}let s=r?"h2":"h1",c=r?"h3":"h2",u=r?"h3":"h2",f=r?"h4":"h3",p=(m,h)=>{let b=document.createElement("section");if(b.className="rtichoke-report__component",b.dataset.componentId=m.id,m.title){let x=ui(`heading-${m.id}`,n),g=document.createElement(h);g.className="rtichoke-report__component-title",g.id=x,g.textContent=m.title,b.setAttribute("aria-labelledby",x),b.append(g)}let y=document.createElement("div");return y.className="rtichoke-report__component-content",y.append(Wg(m.spec)),b.append(y),b},l=(m,h,b)=>{let y=document.createElement("section");y.className="rtichoke-report__group",y.id=h.domId,y.dataset.groupId=m.id;let x=ui(`heading-${m.id}`,n),g=document.createElement(c);if(g.className="rtichoke-report__group-title",b&&g.classList.add("rtichoke-report__group-title--tab-panel"),g.id=x,g.textContent=m.title,y.setAttribute("aria-labelledby",b??x),y.append(g),t.groupPresentation==="tabs"){let S=document.createElement("div");S.className="rtichoke-report__tablist",S.setAttribute("role","tablist"),S.setAttribute("aria-labelledby",x);let w=[],_=[];m.components.forEach((v,I)=>{let T=ui(`tab-${m.id}-${v.id}`,n),P=ui(`panel-${m.id}-${v.id}`,n),R=document.createElement("button");R.className="rtichoke-report__tab",R.type="button",R.id=T,R.setAttribute("role","tab"),R.setAttribute("aria-controls",P),R.setAttribute("aria-selected",I===0?"true":"false"),R.tabIndex=I===0?0:-1,R.textContent=v.title||v.id;let C=document.createElement("section");C.className="rtichoke-report__component rtichoke-report__tabpanel",C.id=P,C.setAttribute("role","tabpanel"),C.setAttribute("aria-labelledby",T),C.tabIndex=0,C.dataset.componentId=v.id,C.hidden=I!==0;let N=document.createElement("div");N.className="rtichoke-report__component-content",N.append(Wg(v.spec)),C.append(N),w.push(R),_.push(C),S.append(R)}),Zw(w,_),y.append(S,..._)}else for(let S of m.components)y.append(p(S,f));return y};for(let m=0;mT.type==="group"),w=t.sectionGroupPresentation==="tabs"&&S.length>1,_=0,v=!1,I=0;for(;I1){let N=document.createElement("div");N.className="rtichoke-report__tablist",N.setAttribute("role","tablist"),N.setAttribute("aria-labelledby",x);let G=[],D=[];R.forEach((O,z)=>{let U=ui(`tab-${h.id}-${O.id}`,n),W=ui(`panel-${h.id}-${O.id}`,n),B=document.createElement("button");B.className="rtichoke-report__tab",B.type="button",B.id=U,B.setAttribute("role","tab"),B.setAttribute("aria-controls",W),B.setAttribute("aria-selected",z===0?"true":"false"),B.tabIndex=z===0?0:-1,B.textContent=O.title||O.id;let q=document.createElement("section");q.className="rtichoke-report__component rtichoke-report__tabpanel",q.id=W,q.setAttribute("role","tabpanel"),q.setAttribute("aria-labelledby",U),q.tabIndex=0,q.dataset.componentId=O.id,q.hidden=z!==0;let X=document.createElement("div");X.className="rtichoke-report__component-content",X.append(Wg(O.spec)),q.append(X),G.push(B),D.push(q),N.append(B)}),Zw(G,D),y.append(N,...D),I=P}else y.append(p(T,u)),I++}else if(T.type==="group"){if(w){if(!v){v=!0;let P=document.createElement("div");P.className="rtichoke-report__tablist rtichoke-report__section-group-tablist",P.setAttribute("role","tablist"),P.setAttribute("aria-labelledby",x);let R=[],C=[];S.forEach((N,G)=>{let D=b.groups[G],O=ui(`section-group-tab-${h.id}-${N.id}`,n),z=document.createElement("button");z.className="rtichoke-report__tab",z.type="button",z.id=O,z.setAttribute("role","tab"),z.setAttribute("aria-controls",D.domId),z.setAttribute("aria-selected",G===0?"true":"false"),z.tabIndex=G===0?0:-1,z.textContent=N.title;let U=l(N,D,O);U.classList.add("rtichoke-report__tabpanel"),U.setAttribute("role","tabpanel"),U.setAttribute("aria-labelledby",O),U.tabIndex=0,U.hidden=G!==0,R.push(z),C.push(U),P.append(z)}),Zw(R,C),y.append(P,...C)}}else y.append(l(T,b.groups[_++]));I++}}o.append(y)}return o}function OB(e,t){if(!e||typeof e!="object")throw new Error("Invalid ReportSpec");let r=t?.groupPresentation??"stacked",n=t?.sectionGroupPresentation??"stacked",o=t?.sectionComponentPresentation??"stacked";if(t!==void 0&&(typeof t!="object"||t===null||t.groupPresentation!==void 0&&t.groupPresentation!=="stacked"&&t.groupPresentation!=="tabs"))throw new Error("Invalid render options: groupPresentation must be 'stacked' or 'tabs'");if(t!==void 0&&t.sectionGroupPresentation!==void 0&&t.sectionGroupPresentation!=="stacked"&&t.sectionGroupPresentation!=="tabs")throw new Error("Invalid render options: sectionGroupPresentation must be 'stacked' or 'tabs'");if(t!==void 0&&t.sectionComponentPresentation!==void 0&&t.sectionComponentPresentation!=="stacked"&&t.sectionComponentPresentation!=="tabs")throw new Error("Invalid render options: sectionComponentPresentation must be 'stacked' or 'tabs'");if(e.schemaVersion==="1.0")return MB(e);if(e.schemaVersion==="1.1")return CB(e,{groupPresentation:r,sectionGroupPresentation:n,sectionComponentPresentation:o});throw new Error("Invalid ReportSpec")}var kB=["#1b9e77","#d95f02","#7570b3","#e7298a","#07004D","#E6AB02","#FE5F55","#54494B","#006E90","#BC96E6"];function NB(e){let t=e.data.map(n=>({...n,false_positive_rate:1-n.specificity})),r=[Zt(t,{x:"false_positive_rate",y:"sensitivity",stroke:"model",strokeWidth:2,tip:!0})];return e.references?.some(n=>n.type==="identity")&&r.unshift(Zt([{x:0,y:0},{x:1,y:1}],{x:"x",y:"y",stroke:"#BEBEBE",strokeWidth:2})),ci({width:600,height:600,marginLeft:64,marginBottom:56,style:{background:"transparent",color:"#222",fontFamily:"Arial, Helvetica, sans-serif",fontSize:"13px"},x:{label:e.xAxis.label,domain:e.xAxis.domain,grid:!1,ticks:6},y:{label:e.yAxis.label,domain:e.yAxis.domain,grid:!1,ticks:6},color:{legend:!0,range:kB},marks:r})}export{ab as AUROCSummaryMetricSchema,qy as CalibrationSpecSchema,kv as CalibrationV2DatumSchema,Wy as CalibrationV2SpecSchema,$v as DecisionCurveV2DatumSchema,Dv as DecisionCurveV2EvaluationSchema,Uv as DecisionCurveV2ReferenceSchema,Lv as DecisionCurveV2SeriesSchema,Qy as DecisionCurveV2SpecSchema,Cv as DiscreteCalibrationV2DatumSchema,Tv as DisplayGroupingSpecSchema,Pv as DisplayRoleSchema,Er as EvaluationSpecSchema,Jy as GainsV2SpecSchema,qv as InterventionsAvoidedTreatAllReferenceSchema,Hv as InterventionsAvoidedTreatNoneReferenceSchema,Bv as InterventionsAvoidedV2DatumSchema,Gv as InterventionsAvoidedV2EvaluationSchema,Yv as InterventionsAvoidedV2ReferenceSchema,Kv as InterventionsAvoidedV2SeriesSchema,eb as InterventionsAvoidedV2SpecSchema,tb as LiftV2SpecSchema,nf as OperatingPointDimensionSchema,Rv as OperatingPointSchema,wi as OperatingPointSpecSchema,ub as OutcomeDistributionSpecSchema,Wv as OutcomeStateSchema,Ev as PerformanceEvaluationContextSchema,Nv as PerformanceMetricDefinitionSchema,Xy as PerformanceMetricIdSchema,Ir as PerformanceMetricValueSchema,Av as PerformanceTableRowSchema,Zy as PerformanceTableSpecSchema,ib as PopulationSummaryOwnerSpecSchema,rb as PrecisionRecallV2SpecSchema,Zv as PredictionDistributionBinSchema,Qv as PredictionDistributionOperatingPointSchema,af as PredictionDistributionSpecSchema,sb as PrevalenceSummaryMetricSchema,Or as RTICHOKE_BROWSER_THEME,$k as RTICHOKE_COLORS,Mv as ReferenceLineV2SpecSchema,eI as ReportComponentSchema,lb as ReportComponentV1_1Schema,tI as ReportGroupSchema,rI as ReportSectionSchema,$3 as ReportSpecSchema,Fp as ReportSpecV1_0Schema,$p as ReportSpecV1_1Schema,Hy as RocSpecSchema,nb as RocV2SpecSchema,w3 as RtichokeChartSpecSchema,ob as RtichokeChartSpecV2Schema,gc as SeriesSpecSchema,Ov as SmoothCalibrationV2DatumSchema,fb as StandaloneCanonicalSpecSchema,of as StateDistributionSchema,Xv as StateStratumSchema,E3 as SummaryMetricSchema,cb as SummaryMetricsSpecSchema,jv as TreatAllReferenceSchema,Vv as TreatNoneReferenceSchema,mb as assertOutcomeDistributionReferentialIntegrity,pb as assertPerformanceTableReferentialIntegrity,sf as assertPredictionDistributionReferentialIntegrity,Dp as assertReportReferentialIntegrity,Lp as assertStateDistributionValid,db as assertSummaryMetricsReferentialIntegrity,Si as assertV2ReferentialIntegrity,V3 as calibrationSpecFromRtichokeRows,B3 as calibrationV2SpecFromRtichokeRows,Dk as extractOperatingPointValues,qk as preparePredictionDistributionPlotData,ZD as renderCalibration,yL as renderCalibrationV2,Rw as renderDecisionCurveV2,kw as renderGainsV2,Ew as renderInterventionsAvoidedV2,Nw as renderLiftV2,Aw as renderOutcomeDistribution,Fw as renderPerformanceTable,Ow as renderPrecisionRecallV2,$w as renderPredictionDistribution,OB as renderReport,NB as renderRoc,Mw as renderRocV2,Lw as renderSummaryMetrics,Us as renderWithOperatingPointSelection,en as resolveV2RenderOptions,L3 as rocSpecFromRtichokePython,D3 as rocSpecFromRtichokeR,z3 as rocV2SpecFromRtichokePython,U3 as rocV2SpecFromRtichokeR}; +}`)).call(wu,r);for(let G of f){let{channels:Y,values:W,facets:Z}=y.get(G);if(h===void 0||G.facet==="super"){let q=null;if(Z&&(q=Z[0],q=G.filter(q,Y,W),q.length===0))continue;let ie=G.render(q,g,W,v,I);if(ie==null)continue;M.appendChild(ie)}else{let q;for(let ie of h){if(!(G.facetAnchor?.(h,N,ie)??!ie.empty))continue;let ee=null;if(Z){let re=p.has(G);if(ee=Z[re?ie.i:0],ee=G.filter(ee,Y,W),ee.length===0)continue;!re&&ee===Z[0]&&(ee=ST(ee)),ee.fx=ie.x,ee.fy=ie.y,ee.fi=ie.i}let oe=G.render(ee,g,W,_,I);if(oe!=null){(q??=Vr(M).append("g")).append(()=>oe).datum(ie);for(let re of["aria-label","aria-description","aria-hidden","transform"])oe.hasAttribute(re)&&(q.attr(re,oe.getAttribute(re)),oe.removeAttribute(re))}}q?.selectChildren().each(K)}}let V=fk(b,I,e),{figure:D=n!=null||o!=null||i!=null||V.length>0}=e;D&&(E=O.createElement("figure"),E.className=`${c}-figure`,E.style.maxWidth="initial",n!=null&&E.append(Pk(O,n,"h2")),o!=null&&E.append(Pk(O,o,"h3")),E.append(...V,M),i!=null&&E.append(mD(O,i)),"value"in M&&(E.value=M.value,delete M.value)),E.scale=jO(g.scales),E.legend=sk(b,I,e);let H=yO();return H>0&&Vr(M).append("text").attr("x",F).attr("y",20).attr("dy","-1em").attr("text-anchor","end").attr("font-family","initial").text("\u26A0\uFE0F").append("title").text(`${H.toLocaleString("en-US")} warning${H===1?"":"s"}. Please check the console.`),E}function Pk(e,t,r){if(t.ownerDocument)return t;let n=e.createElement(r);return n.append(t),n}function mD(e,t){let r=e.createElement("figcaption");return r.append(t),r}function Mk(e){return e.flat(1/0).filter(t=>t!=null).map(dD)}function dD(e){return typeof e.render=="function"?e:new Sw(e)}var Sw=class extends Je{constructor(t){if(typeof t!="function")throw new TypeError("invalid mark; missing render function");super(),this.render=t}render(){}};function vw(e,t){for(let r in e)kk(e[r],t);return e}function kk(e,t){let{scale:r,transform:n=!0}=e;if(r==null||!n)return;let{type:o,percent:i,interval:a,transform:s=i?c=>c==null?NaN:c*100:p1(a,o)}=t[r]??{};s!=null&&(e.value=Xe(e.value,s),e.transform=!1)}function hD(e){for(let t in e)P1(t,e[t])}function Zl(e,t,r,n=gT){for(let{channels:o}of t.values())for(let i in o){let a=o[i],{scale:s}=a;if(s!=null&&n(s))if(s==="projection"){if(!QO(r)){let c=r.x?.domain===void 0,f=r.y?.domain===void 0;if(c||f){let[u,p]=eC(a);c&&ww(e,"x",u),f&&ww(e,"y",p)}}}else ww(e,s,a)}return e}function ww(e,t,r){let n=e.get(t);n!==void 0?n.push(r):e.set(t,[r])}function gD(e,t){if(e==null)return;let{x:r,y:n}=e;if(r==null&&n==null)return;let o=Bi(e.data);if(o==null)throw new Error("missing facet data");let i={};r!=null&&(i.fx=pu(o,{value:r,scale:"fx"})),n!=null&&(i.fy=pu(o,{value:n,scale:"fy"})),vw(i,t);let a=Jh(o,i);return{channels:i,groups:a,data:e.data}}function Tk(e,t,r){if(e.facet===null||e.facet==="super")return;let{fx:n,fy:o}=e;if(n!=null||o!=null){let c=Bi(e.data??n??o);if(c===void 0)throw new Error(`missing facet data in ${e.ariaLabel}`);if(c===null)return;let f={};return n!=null&&(f.fx=pu(c,{value:n,scale:"fx"})),o!=null&&(f.fy=pu(c,{value:o,scale:"fy"})),vw(f,r),{channels:f,groups:Jh(c,f)}}if(t===void 0)return;let{channels:i,groups:a,data:s}=t;if(e.facet!=="auto"||e.data===s)return{channels:i,groups:a};s.length>0&&(a.size>1||a.size===1&&i.fx&&i.fy&&[...a][0][1].size>1)&&Ca(Bi(e.data))===Ca(s)&&tn(`Warning: the ${e.ariaLabel} mark appears to use faceted data, but isn\u2019t faceted. The mark data has the same length as the facet data and the mark facet option is "auto", but the mark data and facet data are distinct. If this mark should be faceted, set the mark facet option to true; otherwise, suppress this warning by setting the mark facet option to false.`)}function bD(e,t={}){return Gi({...t,x:null,y:null},(r,n,o,i,a,s)=>s.getMarkState(e))}function yD(e){let t=[];for(let r of e){let n=r.tip;if(n){n===!0?n={}:typeof n=="string"&&(n={pointer:n});let{pointer:o,preferredAnchor:i}=n;o=/^x$/i.test(o)?fC:/^y$/i.test(o)?W1:uC,n=o(bD(r,n)),n.title=null,i===void 0&&(n.preferredAnchor=o===W1?"left":"bottom");let a=_k(r.data,n);a.facet=r.facet,a.facetAnchor=r.facetAnchor,t.push(a)}}return t}function xD(e,t,r){let{projection:n,x:o={},y:i={},fx:a={},fy:s={},axis:c,grid:f,facet:u={},facet:{axis:p=c,grid:l}=u,x:{axis:m=c,grid:h=m===null?null:f}=o,y:{axis:y=c,grid:b=y===null?null:f}=i,fx:{axis:x=p,grid:g=x===null?null:l}=a,fy:{axis:S=p,grid:w=S===null?null:l}=s}=r;(n||!iu(o)&&!Ok("x",e))&&(m=h=null),(n||!iu(i)&&!Ok("y",e))&&(y=b=null),t.has("fx")||(x=g=null),t.has("fy")||(S=w=null),m===void 0&&(m=!Ig(e,"x")),y===void 0&&(y=!Ig(e,"y")),x===void 0&&(x=!Ig(e,"fx")),S===void 0&&(S=!Ig(e,"fy")),m===!0&&(m="bottom"),y===!0&&(y="left"),x===!0&&(x=m==="top"||m===null?"bottom":"top"),S===!0&&(S=y==="right"||y===null?"left":"right");let _=[];return vg(_,w,KC,s),Sg(_,S,zC,"right","left",u,s),vg(_,g,HC,a),Sg(_,x,jC,"top","bottom",u,a),vg(_,b,GC,i),Sg(_,y,mw,"left","right",r,i),vg(_,h,qC,o),Sg(_,m,dw,"bottom","top",r,o),_}function Sg(e,t,r,n,o,i,a){if(!t)return;let s=wD(t);a=SD(s?n:t,i,a);let{line:c}=a;(r===mw||r===dw)&&c&&!Cs(c)&&e.push(bw(vD(a))),e.push(r(a)),s&&e.push(r({...a,anchor:o,label:null}))}function vg(e,t,r,n){!t||Cs(t)||e.push(r(ID(t,n)))}function wD(e){return/^\s*both\s*$/i.test(e)}function SD(e,t,{line:r=t.line,ticks:n,tickSize:o,tickSpacing:i,tickPadding:a,tickFormat:s,tickRotate:c,fontVariant:f,ariaLabel:u,ariaDescription:p,label:l=t.label,labelAnchor:m,labelArrow:h=t.labelArrow,labelOffset:y}){return{anchor:e,line:r,ticks:n,tickSize:o,tickSpacing:i,tickPadding:a,tickFormat:s,tickRotate:c,fontVariant:f,ariaLabel:u,ariaDescription:p,label:l,labelAnchor:m,labelArrow:h,labelOffset:y}}function vD(e){let{anchor:t,line:r}=e;return{anchor:t,facetAnchor:t+"-empty",stroke:r===!0?void 0:r}}function ID(e,{stroke:t=uu(e)?e:void 0,ticks:r=_D(e)?e:void 0,tickSpacing:n,ariaLabel:o,ariaDescription:i}){return{stroke:t,ticks:r,tickSpacing:n,ariaLabel:o,ariaDescription:i}}function _D(e){switch(typeof e){case"number":return!0;case"string":return!uu(e)}return en(e)||typeof e?.range=="function"}function Ig(e,t){let r=`${t}-axis `;return e.some(n=>n.ariaLabel?.startsWith(r))}function Ok(e,t){for(let r of t)for(let n in r.channels){let{scale:o}=r.channels[n];if(o===e||o==="projection")return!0}return!1}function PD(e,t){for(let r in e){let n=e[r],o=t[r];n.label===void 0&&o&&(n.label=o.label)}return e}function MD({fx:e,fy:t},r){let{marginTop:n,marginRight:o,marginBottom:i,marginLeft:a,width:s,height:c}=Zh(r),f=e&&Ck(e),u=t&&Ck(t);return{marginTop:t?u[0]:n,marginRight:e?s-f[1]:o,marginBottom:t?c-u[1]:i,marginLeft:e?f[0]:a,inset:{marginTop:r.marginTop,marginRight:r.marginRight,marginBottom:r.marginBottom,marginLeft:r.marginLeft},width:s,height:c}}function Ck(e){let t=e.domain();if(t.length===0)return[0,e.bandwidth()];let r=e(t[0]),n=e(t[t.length-1]);return n{let z=Ll(dt(L,g),A?.[S]),R=dt(L,O),Q=dt(L,Z),X=dt(L,q),le=KT(c,{z:R,fill:Q,stroke:X}),xe=[],Me=[],ne=z&&_([]),me=R&&W([]),Ge=Q&&ee([]),Pt=X&&re([]),ot=e&&p([]),ht=e&&m([]),er=t&&y([]),No=t&&x([]),qt=DD(e,t,L),tr=0;for(let Ht of c)Ht.initialize(L);a&&a.initialize(L),i&&i.initialize(L);for(let Ht of P){let ja=[];for(let Ro of c)Ro.scope("facet",Ht);a&&a.scope("facet",Ht),i&&i.scope("facet",Ht);for(let[Ro,Ua]of v1(Ht,le))for(let[Du,_n]of v1(Ua,z))for(let[fe,ge]of qt(_n))if(le&&(ge.z=Ro),!(i&&!i.reduce(fe,ge))){ja.push(tr++),Me.push(o.reduceIndex(fe,L,ge)),z&&ne.push(Du),R&&me.push(le===R?Ro:R[(fe.length>0?fe:_n)[0]]),Q&&Ge.push(le===Q?Ro:Q[(fe.length>0?fe:_n)[0]]),X&&Pt.push(le===X?Ro:X[(fe.length>0?fe:_n)[0]]),ot&&(ot.push(ge.x1),ht.push(ge.x2)),er&&(er.push(ge.y1),No.push(ge.y2));for(let Se of c)Se.reduce(fe,ge);a&&a.reduce(fe,ge)}xe.push(ja)}return qT(xe,a,s),{data:Me,facets:xe}}),...!zl(c,"x")&&(u?{x1:u,x2:l,x:Dl(u,l)}:{x:v,x1:C,x2:N}),...!zl(c,"y")&&(h?{y1:h,y2:b,y:Dl(h,b)}:{y:I,y1:K,y2:F}),...w&&{[S]:w},...Object.fromEntries(c.map(({name:L,output:P})=>[L,P]))}}function ND({cumulative:e,domain:t,thresholds:r,interval:n,...o},i){return[o,{cumulative:e,domain:t,thresholds:r,interval:n,...i}]}function RD(e,{cumulative:t,domain:r,thresholds:n,interval:o},i){return e={...ii(e)},e.domain===void 0&&(e.domain=r),e.cumulative===void 0&&(e.cumulative=t),e.thresholds===void 0&&(e.thresholds=n),e.interval===void 0&&(e.interval=o),e.value===void 0&&(e.value=i),e.thresholds=ED(e.thresholds,e.interval),e}function Rk(e){if(e==null)return;let{value:t,cumulative:r,domain:n=Wt,thresholds:o}=e,i=a=>{let s=dt(a,t),c;if(At(s)||$D(o)){s=Xe(s,u1,Float64Array);let[u,p]=typeof n=="function"?n(s):n,l=typeof o=="function"&&!ka(o)?o(s,u,p):o;typeof l=="number"&&(l=ul(u,p,l)),ka(l)&&(n===Wt&&(u=l.floor(u),p=l.offset(l.floor(p))),l=l.range(u,l.offset(p))),c=l}else{s=ri(s);let[u,p]=typeof n=="function"?n(s):n,l=typeof o=="function"&&!ka(o)?o(s,u,p):o;if(typeof l=="number")if(n===Wt){let m=rs(u,p,l);if(isFinite(m))if(m>0){let h=Math.round(u/m),y=Math.round(p/m);h*m<=u||--h,y*m>p||++y;let b=y-h+1;l=new Float64Array(b);for(let x=0;xp||++y;let b=y-h+1;l=new Float64Array(b);for(let x=0;x0?LD:_w)(f,c,s),f};return i.label=wo(t),i}function ED(e,t,r=Ek){if(e===void 0)return t===void 0?r:oi(t);if(typeof e=="string"){switch(e.toLowerCase()){case"freedman-diaconis":return Wp;case"scott":return df;case"sturges":return Kp;case"auto":return Ek}return Fl(e)}return e}function AD(e,t){return GT(e,t,Ak)}function Ak(e,t,r){return w1(e,t,r,Fk)}function Fk(e,t,r){return S1(e,t,r,$k)}function $k(e,t){return jl(e,t,FD)}function FD(e){switch(`${e}`.toLowerCase()){case"x":return zD;case"x1":return UD;case"x2":return BD;case"y":return jD;case"y1":return GD;case"y2":return KD;case"z":return HT}throw new Error(`invalid bin reduce: ${e}`)}function Ek(e,t,r){return Math.min(200,df(e,t,r))}function $D(e){return _T(e)||en(e)&&At(e)}function DD(e,t,r){let n=e?.(r),o=t?.(r);return n&&o?function*(i){let a=n.bin(i);for(let[s,[c,f]]of n.entries()){let u=o.bin(a[s]);for(let[p,[l,m]]of o.entries())yield[u[p],{data:r,x1:c,y1:l,x2:f,y2:m}]}}:n?function*(i){let a=n.bin(i);for(let[s,[c,f]]of n.entries())yield[a[s],{data:r,x1:c,x2:f}]}:function*(i){let a=o.bin(i);for(let[s,[c,f]]of o.entries())yield[a[s],{data:r,y1:c,y2:f}]}}function _w(e,t,r){return t=ri(t),n=>{let o=e.map(()=>[]);for(let i of n)o[_i(t,r[i])-1]?.push(i);return o}}function LD(e,t,r){let n=_w(e,t,r);return o=>{let i=n(o);for(let a=1,s=i.length;a{let i=n(o);for(let a=i.length-2;a>=0;--a){let s=i[a+1],c=i[a];for(let f of s)c.push(f)}return i}}function Dk(e,t){let r=(+e+ +t)/2;return e instanceof Date?new Date(r):r}var zD={reduceIndex(e,t,{x1:r,x2:n}){return Dk(r,n)}},jD={reduceIndex(e,t,{y1:r,y2:n}){return Dk(r,n)}},UD={reduceIndex(e,t,{x1:r}){return r}},BD={reduceIndex(e,t,{x2:r}){return r}},GD={reduceIndex(e,t,{y1:r}){return r}},KD={reduceIndex(e,t,{y2:r}){return r}};var HD={ariaLabel:"area",strokeWidth:1,strokeLinecap:"round",strokeLinejoin:"round",strokeMiterlimit:1},Pg=class extends Je{constructor(t,r={}){let{x1:n,y1:o,x2:i,y2:a,z:s,curve:c,tension:f}=r;super(t,{x1:{value:n,scale:"x"},y1:{value:o,scale:"y"},x2:{value:i,scale:"x",optional:!0},y2:{value:a,scale:"y",optional:!0},z:{value:su(r),optional:!0}},r,HD),this.z=s,this.curve=Iw(c,f)}filter(t){return t}render(t,r,n,o,i){let{x1:a,y1:s,x2:c=a,y2:f=s}=n;return Le("svg:g",i).call(Dt,this,o,i).call(Lt,this,r,0,0).call(u=>u.selectAll().data(ag(t,[a,s,c,f],this,n)).enter().append("path").call(It,this).call(ig,this,n).attr("d",_x().curve(this.curve).defined(p=>p>=0).x0(p=>a[p]).y0(p=>s[p]).x1(p=>c[p]).y1(p=>f[p]))).node()}};function Pw(e,t){let{x:r=bo,...n}=_g(t);return new Pg(e,Tu(Mu({...n,x1:r,x2:void 0},r===bo?"y2":"y")))}var YD={ariaLabel:"bar"},Mw=class extends Je{constructor(t,r,n={},o=YD){super(t,r,n,o),Yl(this,n),Wl(this,n)}render(t,r,n,o,i){let{rx:a,ry:s,rx1y1:c,rx1y2:f,rx2y1:u,rx2y2:p}=this,l=this._x(r,n,o),m=this._y(r,n,o),h=this._width(r,n,o),y=this._height(r,n,o);return Le("svg:g",i).call(Dt,this,o,i).call(this._transform,this,r).call(b=>b.selectAll().data(t).enter().call(c||f||u||p?x=>x.append("path").call(It,this).call(Xl,l,m,Lk(l,h),Lk(m,y),this).call(wr,this,n):x=>x.append("rect").call(It,this).attr("x",l).attr("width",h).attr("y",m).attr("height",y).call(he,"rx",a).call(he,"ry",s).call(wr,this,n))).node()}_x(t,{x:r},{marginLeft:n}){let{insetLeft:o}=this;return r?i=>r[i]+o:n+o}_y(t,{y:r},{marginTop:n}){let{insetTop:o}=this;return r?i=>r[i]+o:n+o}_width({x:t},{x:r},{marginRight:n,marginLeft:o,width:i}){let{insetLeft:a,insetRight:s}=this,c=r&&t?t.bandwidth():i-n-o;return Math.max(0,c-a-s)}_height({y:t},{y:r},{marginTop:n,marginBottom:o,height:i}){let{insetTop:a,insetBottom:s}=this,c=r&&t?t.bandwidth():i-n-o;return Math.max(0,c-a-s)}};function Lk(e,t){return typeof e=="function"&&typeof t=="function"?r=>e(r)+t(r):typeof e=="function"?r=>e(r)+t:typeof t=="function"?r=>e+t(r):e+t}var Mg=class extends Mw{constructor(t,r={},n){let{x:o,y1:i,y2:a}=r;super(t,{y1:{value:i,scale:"y"},y2:{value:a,scale:"y"},x:{value:o,scale:"x",type:"band",optional:!0}},r,n)}_transform(t,r,{y:n}){t.call(Lt,r,{y:n},0,0)}_y({y:t},{y1:r,y2:n},{marginTop:o}){let{insetTop:i}=this;return So(t)?o+i:a=>Math.min(r[a],n[a])+i}_height({y:t},{y1:r,y2:n},{marginTop:o,marginBottom:i,height:a}){let{insetTop:s,insetBottom:c}=this;return So(t)?a-o-i-s-c:f=>Math.max(0,Math.abs(n[f]-r[f])-s-c)}};function Jl(e,t={}){return zh(t)||(t={...t,x:bo,y2:Ze}),new Mg(e,Tu(ug(Mu(t))))}var WD={ariaLabel:"dot",fill:"none",stroke:"currentColor",strokeWidth:1.5};function XD(e){return e.sort===void 0&&e.reverse===void 0?jT({channel:"-r"},e):e}var Tg=class extends Je{constructor(t,r={}){let{x:n,y:o,r:i,rotate:a,symbol:s=zi,frameAnchor:c}=r,[f,u]=Ct(a,0),[p,l]=LT(s),[m,h]=Ct(i,p==null?3:4.5);super(t,{x:{value:n,scale:"x",optional:!0},y:{value:o,scale:"y",optional:!0},r:{value:m,scale:"r",filter:Ts,optional:!0},rotate:{value:f,optional:!0},symbol:{value:p,scale:"auto",optional:!0}},XD(r),WD),this.r=h,this.rotate=u,this.symbol=l,this.frameAnchor=Na(c);let{channels:y}=this,{symbol:b}=y;if(b){let{fill:x,stroke:g}=y;b.hint={fill:x?x.value===b.value?"color":"currentColor":this.fill??"currentColor",stroke:g?g.value===b.value?"color":"currentColor":this.stroke??"none"}}}render(t,r,n,o,i){let{x:a,y:s}=r,{x:c,y:f,r:u,rotate:p,symbol:l}=n,{r:m,rotate:h,symbol:y}=this,[b,x]=ci(this,o),g=y===zi,S=u?void 0:m*m*Math.PI;return eu(m)&&(t=[]),Le("svg:g",i).call(Dt,this,o,i).call(Lt,this,{x:c&&a,y:f&&s}).call(w=>w.selectAll().data(t).enter().append(g?"circle":"path").call(It,this).call(g?_=>{_.attr("cx",c?v=>c[v]:b).attr("cy",f?v=>f[v]:x).attr("r",u?v=>u[v]:m)}:_=>{_.attr("transform",vu`translate(${c?v=>c[v]:b},${f?v=>f[v]:x})${p?v=>` rotate(${p[v]})`:h?` rotate(${h})`:""}`).attr("d",u&&l?v=>{let I=po();return l[v].draw(I,u[v]*u[v]*Math.PI),I}:u?v=>{let I=po();return y.draw(I,u[v]*u[v]*Math.PI),I}:l?v=>{let I=po();return l[v].draw(I,S),I}:(()=>{let v=po();return y.draw(v,S),v})())}).call(wr,this,n)).node()}};function Ls(e,{x:t,y:r,...n}={}){return n.frameAnchor===void 0&&([t,r]=xo(t,r)),new Tg(e,{...n,x:t,y:r})}var ZD={ariaLabel:"line",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",strokeMiterlimit:1},ep=class extends Je{constructor(t,r={}){let{x:n,y:o,z:i,curve:a,tension:s}=r;super(t,{x:{value:n,scale:"x"},y:{value:o,scale:"y"},z:{value:su(r),optional:!0}},r,ZD),this.z=i,this.curve=Nk(a,s),ql(this,r)}filter(t){return t}project(t,r,n){this.curve!==Ql&&super.project(t,r,n)}render(t,r,n,o,i){let{x:a,y:s}=n,{curve:c}=this;return Le("svg:g",i).call(Dt,this,o,i).call(Lt,this,r).call(f=>f.selectAll().data(ag(t,[a,s],this,n)).enter().append("path").call(It,this).call(ig,this,n).call(dC,this,n,i).attr("d",c===Ql&&i.projection?QD(i.path(),a,s):yl().curve(c).defined(u=>u>=0).x(u=>a[u]).y(u=>s[u]))).node()}};function QD(e,t,r){return t=ri(t),r=ri(r),n=>{let o=[],i=[o];for(let a of n)a===-1?(o=[],i.push(o)):o.push([t[a],r[a]]);return e({type:"MultiLineString",coordinates:i})}}function Qt(e,{x:t,y:r,...n}={}){return[t,r]=xo(t,r),new ep(e,{...n,x:t,y:r})}function Tw(e,{x:t=bo,y:r=Ze,...n}={}){return new ep(e,_g({...n,x:t,y:r}))}Je.prototype.plot=function({marks:e=[],...t}={}){return ui({...t,marks:[...e,this]})};var JD=["#1b9e77","#d95f02","#7570b3","#e7298a","#07004D","#E6AB02","#FE5F55","#54494B","#006E90","#BC96E6"],Vk={background:"transparent",color:"#222",fontFamily:"Arial, Helvetica, sans-serif",fontSize:"13px"};function eL(e,t){let r=[...t?[e.model]:[],`Predicted: ${e.predicted.toFixed(3)}`,`Observed: ${e.observed.toFixed(3)}`];return e.method==="discrete"&&e.events!==void 0&&e.total!==void 0&&(r[r.length-1]+=` ( ${e.events} / ${e.total} )`),r.join(` +`)}function tL(e){let r=[...new Set(e.data.map(m=>m.model))].length>1,n=r?JD:["#000000"],o=e.data.map(m=>({...m,tooltip:eL(m,r)})),i=[];e.references?.some(m=>m.type==="identity")&&i.push(Qt([{x:0,y:0},{x:1,y:1}],{x:"x",y:"y",stroke:"#BEBEBE",strokeWidth:2,strokeDasharray:"4,4"})),i.push(Qt(o,{x:"predicted",y:"observed",stroke:"model",strokeWidth:2,title:"tooltip",tip:!0}));let a=o.filter(m=>m.method==="discrete");a.length>0&&i.push(Ls(a,{x:"predicted",y:"observed",fill:"model",stroke:"white",strokeWidth:1.5,r:5,title:"tooltip",tip:!0}));let s=(e.distribution?.length??0)>0,c=ui({width:600,height:s?480:600,marginLeft:64,marginBottom:s?16:56,style:Vk,x:{label:s?null:e.xAxis.label,domain:e.xAxis.domain,grid:!1,ticks:6,axis:s?null:"bottom"},y:{label:e.yAxis.label,domain:e.yAxis.domain,grid:!1,ticks:6},color:{legend:r,range:n},marks:i});if(!s||!e.distribution)return c;let f=e.distribution.map(m=>({...m,tooltip:`${r?`${m.model} +`:""}${m.count} observations in [${(m.midpoint-m.binWidth/2).toFixed(3)}, ${(m.midpoint+m.binWidth/2).toFixed(3)}]`})),u=new Set(e.distribution.map(m=>m.model)).size,p=ui({width:600,height:120,marginLeft:64,marginTop:0,marginBottom:48,style:Vk,x:{label:e.xAxis.label,domain:e.xAxis.domain,grid:!1,ticks:6},y:{label:null,grid:!1,ticks:3},color:{legend:!1,range:n},marks:[Wi(f,{x1:m=>m.midpoint-m.binWidth/2,x2:m=>m.midpoint+m.binWidth/2,y:"count",fill:"model",fillOpacity:1/Math.max(u,1),title:"tooltip",tip:!0})]}),l=document.createElement("div");return l.style.width="600px",l.style.maxWidth="100%",l.append(c,p),l}var rL=0,jk=["#1b9e77","#d95f02","#7570b3","#e7298a","#07004D","#E6AB02","#FE5F55","#54494B","#006E90","#BC96E6"],Rr={width:600,height:500,margins:{top:28,right:28,bottom:58,left:66},background:"#ffffff",frame:{color:"#444444",width:1},typography:{fontFamily:"Arial, Helvetica, sans-serif",fontSize:12,axisTitleSize:14,axisTitleWeight:400,legendSize:12},axis:{color:"#444444",tickSize:5,tickPadding:7,ticks:6,numberFormat:".1f"},colors:jk,line:{width:2,dash:null},marker:{radius:2.5,fill:null,stroke:"#ffffff",strokeWidth:.5},reference:{color:"#BEBEBE",width:1.5,dash:"2,3"},legend:{position:"top",swatchWidth:12,columns:null},tip:{digits:3},predictionDistribution:{emphasizedTrue:"#009E73",nonEmphasizedTrue:"#F4FFF0",emphasizedFalse:"#FAC8CD",nonEmphasizedFalse:"#FFF7F8",observedPositive:"#4C5454",observedNegative:"#E0E0E0"}};function nL(e){let t=e.theme??{};return{...Rr,width:e.width??Rr.width,height:e.height??Rr.height,background:t.background??Rr.background,colors:e.colors??Rr.colors,margins:{...Rr.margins,...t.margins},frame:{...Rr.frame,...t.frame},typography:{...Rr.typography,...t.typography},axis:{...Rr.axis,...t.axis},line:{...Rr.line,...t.line},marker:{...Rr.marker,...t.marker},reference:{...Rr.reference,...t.reference},legend:{...Rr.legend,...t.legend},tip:{...Rr.tip,...t.tip},predictionDistribution:{...Rr.predictionDistribution,...t.predictionDistribution}}}function rn(e,t={}){let r=t.allGroups??(typeof e=="number"?Array.from({length:e},(s,c)=>`group-${c+1}`):[...e]),n=nL(t);if(!Number.isFinite(n.width)||n.width<=0||!Number.isFinite(n.height)||n.height<=0)throw new Error("Renderer width and height must be positive finite numbers");if(!Number.isInteger(n.tip.digits)||n.tip.digits<0||n.tip.digits>20)throw new Error("Renderer tip digits must be an integer between 0 and 20");let o=r.length<=1?["#000000"]:[...n.colors];if(o.length1;return{theme:{...n,colors:i},groups:r,colors:i,colorByGroup:new Map(r.map((s,c)=>[s,i[c]])),showLegend:a}}function Uk(e){if(!e.operatingPoint)return[];let t=e.operatingPoint.dimension,r=t==="probability_threshold"?e.type==="decision_curve"||e.type==="interventions_avoided"?"threshold":"cutoff":"ppcr";if(t==="probability_threshold"){let n=e.series.map(i=>i.id);if(n.length===0)return[];let o=null;for(let i of n){let s=e.data.filter(f=>f.seriesId===i).map(f=>f[r]).filter(f=>typeof f=="number"&&Number.isFinite(f)),c=new Set(s);if(o===null)o=c;else{let f=o;o=new Set(Array.from(f).filter(u=>c.has(u)))}}return Array.from(o??[]).sort((i,a)=>i-a)}else{let n=e.data.map(i=>i[r]).filter(i=>typeof i=="number"&&Number.isFinite(i));return[...new Set(n)].sort((i,a)=>i-a)}}function oL(e,t){let r=e.series.filter(o=>t.has(o.display.group)),n=new Set(r.map(o=>o.id));return{...e,series:r,data:e.data.filter(o=>n.has(o.seriesId))}}function Ou(e,t,r,n,o){let i=tp(e),a=n;if(i.length<=1)return r(e,t,a,g=>{a=g,o&&o(g)});let s={...t,allGroups:i,showLegend:!1},c=rn(i,s),{theme:f,colorByGroup:u}=c,p=new Map(e.series.map(g=>[g.display.group,g.display.label])),l=new Set(i),m=document.createElement("div");m.className="rtichoke-legend-chart",m.style.maxWidth=`${f.width}px`;let h=document.createElement("div");h.className="rtichoke-legend",h.style.paddingLeft=`${f.margins.left}px`,h.setAttribute("aria-label","Chart legend");let y=new Map;i.forEach(g=>{let S=document.createElement("button");S.type="button",S.className="rtichoke-legend-item",S.setAttribute("aria-pressed","true");let w=p.get(g)??g;S.setAttribute("aria-label",`Toggle series ${w}`);let _=document.createElement("span");_.className="rtichoke-legend-swatch";let v=document.createElement("span");v.className="rtichoke-legend-line",v.style.backgroundColor=u.get(g)??"#000000",_.append(v);let I=document.createElement("span");I.className="rtichoke-legend-label",I.textContent=w,S.append(_,I),h.append(S),y.set(g,S)});let b=document.createElement("div");b.className="rtichoke-legend-content";let x=()=>{let g=oL(e,l),S=r(g,s,a,w=>{a=w,o&&o(w)});b.replaceChildren(S)};return i.forEach(g=>{let S=y.get(g);S.addEventListener("click",()=>{if(l.has(g)){if(l.size<=1)return;l.delete(g),S.setAttribute("aria-pressed","false")}else l.add(g),S.setAttribute("aria-pressed","true");x()})}),m.append(h,b),x(),m}function js(e,t,r,n,o){if(!e.operatingPoint)return r(e,void 0);let i=Uk(e);if(i.length===0)return r(e,void 0);let a=rn(tp(e),t),{theme:s}=a,c=document.createElement("div");c.className="rtichoke-operating-point-chart",c.style.maxWidth=`${s.width}px`;let f=document.createElement("div");f.className="rtichoke-operating-point-control",f.style.marginLeft=`${s.margins.left}px`,f.style.marginRight=`${s.margins.right}px`;let u=e.operatingPoint.dimension==="probability_threshold"?"Probability threshold":"Predicted positives condition rate (PPCR)",p=e.operatingPoint.dimension==="probability_threshold"?"Probability threshold":"PPCR",l=`rtichoke-v2-slider-${++rL}`,m=document.createElement("label");m.className="rtichoke-operating-point-label",m.htmlFor=l;let h=document.createElement("span");h.textContent=`${p}: `;let y=document.createElement("span");y.className="rtichoke-operating-point-value";let b=document.createElement("input");b.type="range",b.id=l,b.className="rtichoke-operating-point-slider",b.min="0",b.max=String(i.length-1),b.step="1",b.setAttribute("aria-label",u);let x=0;if(n!==void 0){let v=i.indexOf(n);v!==-1&&(x=v)}let g=i[x];b.value=String(x);let S=g.toFixed(s.tip.digits);y.textContent=S,b.setAttribute("aria-valuetext",S),o&&o(g),m.append(h,y),f.append(m,b);let w=document.createElement("div");w.className="rtichoke-operating-point-content";let _=v=>{w.replaceChildren(r(e,v))};return b.addEventListener("input",()=>{let v=Number(b.value),I=i[v],O=I.toFixed(s.tip.digits);y.textContent=O,b.setAttribute("aria-valuetext",O),o&&o(I),_(I)}),c.append(w,f),_(g),c}function iL(e){return new Map(e.series.map(t=>[t.id,t.display]))}function tp(e){return[...new Set(e.series.map(t=>t.display.group))]}function Og(e,t){let r=iL(e);return t.map(n=>({...n,group:r.get(n.seriesId).group,label:r.get(n.seriesId).label}))}var aL={true_positives:"TP",true_negatives:"TN",false_positives:"FP",false_negatives:"FN",sensitivity:"Sensitivity",specificity:"Specificity",false_positive_rate:"FPR",ppv:"PPV",npv:"NPV",lift:"Lift",predicted_positives:"Predicted Positives",ppcr:"PPCR",net_benefit:"Net Benefit",net_benefit_interventions_avoided:"Interventions Avoided"},sL=new Set(["true_positives","true_negatives","false_positives","false_negatives","predicted_positives"]);function cL(e,t,r){if(t!=null)return sL.has(e)&&Number.isInteger(t)?String(t):t.toFixed(r)}function Da(e,t,r,n){if(!e||e.length===0)return[];let o=new Map;for(let a of e)a.estimate!==void 0&&a.estimate!==null&&o.set(a.metricId,a.estimate);let i=[];for(let a of t)if(!(n&&n.has(a))&&o.has(a)){let s=o.get(a),c=aL[a]??a,f=cL(a,s,r);f!==void 0&&i.push([c,f])}return i}function Ue(e,t){if(e!=null)return typeof e=="number"?e.toFixed(t):String(e)}function Vt(e,t){return t.filter(([,r])=>r!==void 0).map(([r,n])=>`${r}: ${typeof n=="number"?n.toFixed(e):String(n)}`).join(` +`)}function Cg(e,t){let{theme:r}=e,n=new Map(t.series.map(o=>[o.display.group,o.display.label]));return{width:r.width,height:r.height,marginTop:r.margins.top,marginRight:r.margins.right,marginBottom:r.margins.bottom,marginLeft:r.margins.left,style:{background:r.background,color:r.axis.color,fontFamily:r.typography.fontFamily,fontSize:`${r.typography.fontSize}px`},color:{legend:e.showLegend,domain:e.groups,range:e.colors,tickFormat:o=>n.get(o)??o}}}function $a(e,t,r){return{label:t,domain:r,grid:!1,line:!0,ticks:e.axis.ticks,tickSize:e.axis.tickSize,tickPadding:e.axis.tickPadding,tickFormat:e.axis.numberFormat}}function Cw(e,t){let r={stroke:t.reference.color,strokeWidth:t.reference.width,strokeDasharray:t.reference.dash},n=[];for(let o of e.references??[])o.type==="identity"?n.push(Qt([{x:0,y:0},{x:1,y:1}],{x:"x",y:"y",...r})):o.type==="horizontal"&&o.value!==void 0?n.push(Io([o.value],{...r})):o.type==="path"&&o.points&&n.push(Qt(o.points,{x:"x",y:"y",...r}));return n}function kg(e,t){return e}function uL(e,t,r=40){let n=new Map;for(let i of e){let a=t(i),s=n.get(a);s||(s=[],n.set(a,s)),s.push(i)}let o=[];for(let i of n.values()){let a=i.length;if(a<=r)o.push(...i);else{let s=new Set;for(let c=0;cu.seriesId,40),a=n.theme,s=o?.marker?.radius??a.marker.radius,c=o?.marker?.stroke??a.marker.stroke,f=o?.marker?.strokeWidth??a.marker.strokeWidth;return Ls(i,{ariaLabel:"ordinary-point",x:t,y:r,fill:"group",stroke:c,strokeWidth:f,r:s})}function ku(e,t,r,n,o){let i=n.groups.length>1,a=o?.marker?.fill??(i?"group":"#f6e3be"),s=o?.marker?.stroke??"#1a1a1a",c=o?.marker?.strokeWidth??2.5,f=o?.marker?.radius??6;return Ls(e,{className:"rtichoke-selected-operating-point",x:t,y:r,fill:a,stroke:s,strokeWidth:c,r:f})}function fL(e,t,r){let n=e/255,o=t/255,i=r/255,a=n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4),s=o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4),c=i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4);return .2126*a+.7152*s+.0722*c}function lL(e){let t=gn(e);if(!t)return"#ffffff";let r=t.rgb(),n=fL(r.r,r.g,r.b),o=(1+.05)/(n+.05);return(n+.05)/(0+.05)>=o?"#000000":"#ffffff"}function Us(e,t){let r=typeof SVGSVGElement<"u"&&e instanceof SVGSVGElement?e:e.querySelector("svg[class^='plot-']")??e.querySelector("svg");if(!r)return;let n=Vr(r),o=e.scale?.("x")??r.scale?.("x"),i=e.scale?.("y")??r.scale?.("y");if(!o||!i)return;let a=t.items.filter(b=>Number.isFinite(b.xValue)&&Number.isFinite(b.yValue)).map(b=>({...b,px:o.apply(b.xValue),py:i.apply(b.yValue)})),s=(t.selectedOperatingPointItems??[]).filter(b=>Number.isFinite(b.xValue)&&Number.isFinite(b.yValue)).map(b=>({...b,px:o.apply(b.xValue),py:i.apply(b.yValue)})),c=n.select("g.rtichoke-hover-tooltip");c.empty()&&(c=n.append("g").attr("class","rtichoke-hover-tooltip").style("pointer-events","none").style("display","none"),c.append("path").attr("class","rtichoke-hover-tooltip-arrow"),c.append("rect").attr("class","rtichoke-hover-tooltip-bg"),c.append("text").attr("class","rtichoke-hover-tooltip-text"));let f=c.select("path.rtichoke-hover-tooltip-arrow"),u=c.select("rect.rtichoke-hover-tooltip-bg"),p=c.select("text.rtichoke-hover-tooltip-text");function l(b,x,g,S=!1){let w=x.filter(([,ee])=>ee!=null);if(w.length===0)return;let _=S||x.length===1&&x[0][0]==="Reference",v=t.tooltipStyle==="light",I=t.tooltipStyle==="plotly",O=v?"#ffffff":_&&!I?"#f3f4f6":g,M=v?"#1f2937":I?_?t.theme.frame.color:"#ffffff":_?"#1f2937":lL(g),E=v?"#d1d5db":I?_?t.theme.frame.color:"#ffffff":_?"#d1d5db":"#374151";p.attr("fill",M).attr("font-family",t.theme.typography.fontFamily).attr("font-size",I?"13px":"11px").attr("transform",null),p.selectAll("tspan").remove(),w.forEach(([ee,oe],re)=>{let L=p.append("tspan").attr("x","0").attr("dy",re===0?"1em":I?"1.3em":"1.2em"),P=ee!==""&&ee!==null&&ee!==void 0,A=oe!==""&&oe!==null&&oe!==void 0;P&&A?(L.append("tspan").attr("font-weight","bold").text(`${ee}: `),L.append("tspan").attr("font-weight","normal").text(String(oe))):P?L.append("tspan").attr("font-weight","bold").text(String(ee)):A&&L.append("tspan").attr("font-weight","normal").text(String(oe))});let C=p.node();if(!C)return;let N=C.getBBox(),K=8,F=6,T=Math.max(N.width+K*2,60),V=N.height+F*2,[D,H]=ma(b,r),G=r?.viewBox?.baseVal,Y=G&&G.width>0?G.width:r?.width?.baseVal?.value||t.theme.width,W=G&&G.height>0?G.height:r?.height?.baseVal?.value||t.theme.height,Z=t.theme.margins,q=D+12;q+T>Y-Z.right&&(q=D-12-T),qW-Z.bottom&&(ie=W-Z.bottom-V),I){let ee=q>D?q:q+T;f.attr("d",`M${D},${H} L${ee},${H-6} L${ee},${H+6} Z`).attr("fill",O).attr("stroke",E).attr("stroke-width",1)}else f.attr("d",null);u.attr("x",q).attr("y",ie).attr("width",T).attr("height",V).attr("fill",O).attr("stroke",E).attr("stroke-width",1).attr("rx",I?0:4).attr("ry",I?0:4).style("filter",I?"none":"drop-shadow(0 2px 4px rgba(0,0,0,0.15))"),p.attr("transform",`translate(${q+K-N.x}, ${ie+F-N.y})`),c.style("display",null)}function m(){c.style("display","none")}let h=n.select("g.rtichoke-hover-targets");h.empty()||h.remove(),h=n.insert("g","g.rtichoke-hover-tooltip").attr("class","rtichoke-hover-targets");for(let b of t.references??[]){let x=b.backgroundColor??"#f3f4f6",g=[["Reference",b.label]];if(b.type==="identity"){let S=b.points&&b.points.length>=2?b.points:[{x:0,y:0},{x:1,y:1}],w=S[0].x,_=S[S.length-1].x,v=S.map((I,O)=>`${O===0?"M":"L"}${o.apply(I.x)},${i.apply(I.y)}`).join(" ");h.append("path").attr("class","rtichoke-hover-ref-target").attr("d",v).attr("fill","none").attr("stroke","transparent").attr("stroke-width",12).style("pointer-events","stroke").on("pointermove",I=>{if(t.tooltipStyle==="light"||t.tooltipStyle==="plotly"){let[O]=ma(I,r),M=Array.isArray(o.range)?o.range[0]:typeof o.range=="function"?o.range()[0]:t.theme.margins.left,E=Array.isArray(o.range)?o.range[o.range.length-1]:typeof o.range=="function"?o.range()[o.range().length-1]:t.theme.width-t.theme.margins.right,C=t.xDomain?t.xDomain[0]:0,N=t.xDomain?t.xDomain[1]:1,K;if(typeof o.invert=="function")K=o.invert(O);else{let D=E!==M?(O-M)/(E-M):0;K=C+D*(N-C)}let F=Math.max(w,Math.min(_,K)),T=zs(F),V=[[b.label,""],["Predicted",T],["Observed",T]];l(I,V,x,!0)}else l(I,g,x,!0)}).on("mouseleave pointerleave",m)}else if(b.type==="horizontal"&&b.value!==void 0){let S=i.apply(b.value);h.append("line").attr("class","rtichoke-hover-ref-target").attr("x1",t.theme.margins.left).attr("x2",t.theme.width-t.theme.margins.right).attr("y1",S).attr("y2",S).attr("stroke","transparent").attr("stroke-width",12).style("pointer-events","stroke").on("pointermove",w=>l(w,g,x,!0)).on("mouseleave pointerleave",m)}else if(b.type==="path"&&b.points&&b.points.length>0){let S=b.points.map((w,_)=>`${_===0?"M":"L"}${o.apply(w.x)},${i.apply(w.y)}`).join(" ");h.append("path").attr("class","rtichoke-hover-ref-target").attr("d",S).attr("fill","none").attr("stroke","transparent").attr("stroke-width",12).style("pointer-events","stroke").on("pointermove",w=>l(w,g,x,!0)).on("mouseleave pointerleave",m)}}let y=new Map;for(let b of a){let x=y.get(b.seriesId);x||(x=[],y.set(b.seriesId,x)),x.push(b)}for(let b of y.values()){if(b.length<2)continue;let x=b.map((g,S)=>`${S===0?"M":"L"}${g.px},${g.py}`).join(" ");h.append("path").attr("class","rtichoke-hover-line-target").attr("d",x).attr("fill","none").attr("stroke","transparent").attr("stroke-width",12).style("pointer-events","stroke").on("pointermove",g=>{let[S,w]=ma(g,r),_=1/0,v=b[0];for(let I of b){let O=I.px-S,M=I.py-w,E=O*O+M*M;E<_&&(_=E,v=I)}l(g,v.tooltipFields,v.backgroundColor)}).on("mouseleave pointerleave",m)}for(let b of a)h.append("circle").attr("class","rtichoke-hover-point-target").attr("cx",b.px).attr("cy",b.py).attr("r",8).attr("fill","transparent").style("pointer-events","all").on("pointermove",x=>l(x,b.tooltipFields,b.backgroundColor)).on("mouseleave pointerleave",m);for(let b of s)h.append("circle").attr("class","rtichoke-hover-op-target").attr("cx",b.px).attr("cy",b.py).attr("r",10).attr("fill","transparent").style("pointer-events","all").on("pointermove",x=>l(x,b.tooltipFields,b.backgroundColor)).on("mouseleave pointerleave",m);n.on("mouseleave pointerleave",m)}var pL=100;function zs(e){if(!Number.isFinite(e))return String(e);let t=Math.round(e*1e3)/1e3;return String(t)}function zk(e,t){let r=e.filter(Number.isFinite);if(r.length===0)return[...t];let n=Math.min(...r),o=Math.max(...r),i=Math.abs(t[1]-t[0]),s=(o-n||i||1)*.05;return[n-s,o+s]}function mL(e,t){let r=e.data.map(o=>o.predicted),n=e.data.map(o=>o.observed);for(let o of e.distribution??[])r.push(o.midpoint-o.binWidth/2),r.push(o.midpoint+o.binWidth/2);for(let o of e.references??[])if(o.type==="identity")r.push(0,1),n.push(0,1);else if(o.type==="horizontal"&&o.value!==void 0)n.push(o.value);else if(o.type==="path")for(let i of o.points??[])r.push(i.x),n.push(i.y);return{x:zk(r,t.x),y:zk(n,t.y)}}function Ow(e,t,r=[0,1],n=[0,1],o){let i=e-t.left-t.right,a=Math.abs(r[1]-r[0]),s=Math.abs(n[1]-n[0]),c=Number.isFinite(a)&&a>0?a:1,f=Number.isFinite(s)&&s>0?s:1,u=i*(f/c),p=o??t.bottom;return Math.round(t.top+u+p)}function qn(e,t){let r=ui(e);for(let n of r.querySelectorAll('[aria-label$="axis label"] text'))n.style.fontSize=`${t.typography.axisTitleSize}px`,n.style.fontWeight=String(t.typography.axisTitleWeight);for(let n of r.querySelectorAll('[aria-label="frame"]'))n.setAttribute("stroke",t.frame.color);if(r instanceof HTMLElement){r.style.fontSize=`${t.typography.legendSize}px`;for(let n of r.querySelectorAll('svg[width="15"], div[class*="-swatches"] svg'))n.setAttribute("width",String(t.legend.swatchWidth)),n.setAttribute("height","10")}return r}var dL=["sensitivity","specificity","false_positive_rate","ppv","npv","lift","net_benefit","predicted_positives","true_positives","true_negatives","false_positives","false_negatives"],hL=["sensitivity","ppv","specificity","false_positive_rate","npv","lift","net_benefit","predicted_positives","true_positives","true_negatives","false_positives","false_negatives"],gL=["sensitivity","specificity","false_positive_rate","ppv","npv","lift","net_benefit","predicted_positives","true_positives","true_negatives","false_positives","false_negatives"],bL=["lift","sensitivity","specificity","false_positive_rate","ppv","npv","net_benefit","predicted_positives","true_positives","true_negatives","false_positives","false_negatives"];function yL(e,t={},r){vi(e);let n=rn(tp(e),t),{theme:o,colorByGroup:i}=n,a=e.operatingPoint?.dimension,s=Og(e,e.data).map(x=>{let g=1-x.specificity,S=[["Series",x.label]];return a==="ppcr"?(x.ppcr!==void 0&&S.push(["PPCR",Ue(x.ppcr,o.tip.digits)]),S.push(["Cutoff",Ue(x.cutoff,o.tip.digits)])):(S.push(["Cutoff",Ue(x.cutoff,o.tip.digits)]),x.ppcr!==void 0&&S.push(["PPCR",Ue(x.ppcr,o.tip.digits)])),x.performance&&x.performance.length>0?S.push(["Sensitivity",Ue(x.sensitivity,o.tip.digits)],["Specificity",Ue(x.specificity,o.tip.digits)],["FPR",Ue(g,o.tip.digits)],...Da(x.performance,dL,o.tip.digits,new Set(["sensitivity","specificity","false_positive_rate"]))):S.push(["Sensitivity",Ue(x.sensitivity,o.tip.digits)],["Specificity",Ue(x.specificity,o.tip.digits)],["False Positive Rate",Ue(g,o.tip.digits)]),{...x,false_positive_rate:g,tooltipFields:S,title:Vt(o.tip.digits,S)}}),c=Cw(e,o);c.push(Qt(s,{x:"false_positive_rate",y:"sensitivity",z:"seriesId",stroke:"group",strokeWidth:o.line.width,strokeDasharray:o.line.dash??void 0}),Cu(s,"false_positive_rate","sensitivity",n,t.theme));let f=[];if(r!==void 0&&e.operatingPoint){let x=e.operatingPoint.dimension==="probability_threshold"?"cutoff":"ppcr";f=s.filter(g=>g[x]===r),f.length>0&&c.push(ku(f,"false_positive_rate","sensitivity",n,t.theme))}let u=e.xAxis.domain??[0,1],p=e.yAxis.domain??[0,1],l=Ow(o.width,o.margins,u,p),m=qn({...Cg(n,e),height:l,x:$a(o,e.xAxis.label,u),y:$a(o,e.yAxis.label,p),marks:kg(c,o)},o),h=s.map(x=>({seriesId:x.seriesId,group:x.group,xValue:x.false_positive_rate,yValue:x.sensitivity,tooltipFields:x.tooltipFields,backgroundColor:i.get(x.group)??"#1b9e77"})),y=f.map(x=>({seriesId:x.seriesId,group:x.group,xValue:x.false_positive_rate,yValue:x.sensitivity,tooltipFields:x.tooltipFields,backgroundColor:i.get(x.group)??"#1b9e77"})),b=[];for(let x of e.references??[]){let g=x.label??(x.type==="identity"?"Identity":"Reference");x.type==="identity"?b.push({type:"identity",points:[{x:0,y:0},{x:1,y:1}],label:g}):x.type==="horizontal"&&x.value!==void 0?b.push({type:"horizontal",value:x.value,label:g}):x.type==="path"&&x.points&&b.push({type:"path",points:x.points,label:g})}return Us(m,{items:h,selectedOperatingPointItems:y,references:b,theme:o}),m}function kw(e,t={}){return Ou(e,t,(r,n,o,i)=>Nu(r,(a,s,c)=>js(a,n,(f,u)=>yL(f,n,u),s,c),o,i))}function xL(e,t,r){let n=typeof SVGSVGElement<"u"&&e instanceof SVGSVGElement?e:e.querySelector("svg[class^='plot-']")??e.querySelector("svg");if(!n)return;let o=Vr(n),i=e.scale?.("x")??n.scale?.("x");if(!i)return;let a=o.select("g.rtichoke-hover-tooltip");a.empty()&&(a=o.append("g").attr("class","rtichoke-hover-tooltip").style("pointer-events","none").style("display","none"),a.append("path").attr("class","rtichoke-hover-tooltip-arrow"),a.append("rect").attr("class","rtichoke-hover-tooltip-bg"),a.append("text").attr("class","rtichoke-hover-tooltip-text"));let s=a.select("path.rtichoke-hover-tooltip-arrow"),c=a.select("rect.rtichoke-hover-tooltip-bg"),f=a.select("text.rtichoke-hover-tooltip-text");function u(y,b,x){let g=b.filter(([,H])=>H!=null);if(g.length===0)return;f.attr("fill","#ffffff").attr("font-family",r.theme.typography.fontFamily).attr("font-size","13px").attr("transform",null),f.selectAll("tspan").remove(),g.forEach(([H,G],Y)=>{let W=f.append("tspan").attr("x","0").attr("dy",Y===0?"1em":"1.2em"),Z=H!==""&&H!==null&&H!==void 0,q=G!==""&&G!==null&&G!==void 0;Z&&q?(W.append("tspan").attr("font-weight","bold").text(`${H}: `),W.append("tspan").attr("font-weight","normal").text(String(G))):Z?W.append("tspan").attr("font-weight","bold").text(String(H)):q&&W.append("tspan").attr("font-weight","normal").text(String(G))});let S=f.node();if(!S)return;let w=S.getBBox(),_=8,v=6,I=Math.max(w.width+_*2,60),O=w.height+v*2,[M,E]=ma(y,n),C=n?.viewBox?.baseVal,N=C&&C.width>0?C.width:n?.width?.baseVal?.value||r.theme.width,K=C&&C.height>0?C.height:n?.height?.baseVal?.value||r.theme.height,F=r.theme.margins,T=M+12;T+I>N-F.right&&(T=M-12-I),TK-F.bottom&&(V=K-F.bottom-O);let D=T>M?T:T+I;s.attr("d",`M${M},${E} L${D},${E-6} L${D},${E+6} Z`).attr("fill",x).attr("stroke","#ffffff").attr("stroke-width",1),c.attr("x",T).attr("y",V).attr("width",I).attr("height",O).attr("fill",x).attr("stroke","#ffffff").attr("stroke-width",1).attr("rx",0).attr("ry",0).style("filter",null),f.attr("transform",`translate(${T+_-w.x}, ${V+v-w.y})`),a.style("display",null)}function p(){a.style("display","none")}let l=o.select("g.rtichoke-hover-targets");l.empty()||l.remove(),l=o.insert("g","g.rtichoke-hover-tooltip").attr("class","rtichoke-hover-targets");let m=e.scale?.("y")??n.scale?.("y"),h=[...t].sort((y,b)=>b.count-y.count);for(let y of h){if(y.count<=0)continue;let b=y.midpoint-y.binWidth/2,x=y.midpoint+y.binWidth/2,g=Math.abs(b)<1e-9?0:b,S=Math.abs(x)<1e-9?0:x,w=zs(g),_=zs(S),v=g<=0?`[0,${_}]`:`( ${w} , ${_} ]`,I=`${y.count} observations in ${v}`,O=[];r.groupCount>1&&O.push([y.label,""]),O.push(["",I]);let M=i.apply(b),E=i.apply(x),C=Math.min(M,E),N=Math.max(Math.abs(E-M),2),K=0,F=r.height??r.theme.height;if(m){let T=m.apply(0),V=m.apply(y.count);K=Math.min(T,V),F=Math.max(Math.abs(T-V),4)}l.append("rect").attr("class","rtichoke-hover-hist-target").attr("x",C).attr("width",N).attr("y",K).attr("height",F).attr("fill","transparent").style("pointer-events","all").on("pointermove",T=>u(T,O,r.colorByGroup.get(y.group)??"#1b9e77")).on("mouseleave pointerleave",p)}o.on("mouseleave pointerleave",p)}function wL(e,t,r,n){vi(e);let o=rn(tp(e),t),{theme:i,colorByGroup:a}=o,s=Og(e,e.data).map(M=>{let E=[];o.groups.length>1&&E.push([M.label,""]);let C=zs(M.predicted),N=zs(M.observed);if(M.method==="discrete"&&M.events!==void 0&&M.total!==void 0){let K=Number.isInteger(M.events)?String(M.events):zs(M.events),F=Number.isInteger(M.total)?String(M.total):zs(M.total);N+=` ( ${K} / ${F} )`}return E.push(["Predicted",C]),E.push(["Observed",N]),{...M,tooltipFields:E}}),c=Cw(e,i);c.push(Qt(s,{x:"predicted",y:"observed",z:"seriesId",stroke:"group",strokeWidth:i.line.width,strokeDasharray:i.line.dash??void 0}));let f=s.filter(M=>M.method==="discrete");f.length>0&&c.push(Ls(f,{x:"predicted",y:"observed",fill:i.marker.fill??"group",stroke:i.marker.stroke,strokeWidth:i.marker.strokeWidth,r:i.marker.radius}));let u=(e.distribution?.length??0)>0,p=n.y,l=n.x,m,h=pL,y=i,b=u?8:i.margins.bottom,x=i.margins.bottom;if(r){x=40;let N=19.4;h=Math.round(87.3+x);let F=378.3;b=Math.round(N);let T=550,V=Math.max(50,T-40),D=Math.max(50,F),H=Math.abs(l[1]-l[0])||1,G=Math.abs(p[1]-p[0])||1,Y=Math.min(V/H,D/G),W=H*Y,Z=G*Y,q=Math.max(10,(T-W)/2),ie=Math.max(10,T-W-q),ee=Math.max(0,F-Z),oe=25+ee/2;b=Math.round(N)+ee/2,m=550-h,y={...i,width:T,margins:{top:oe,left:q,right:ie,bottom:b}}}else u?(b=8,m=Ow(i.width,i.margins,l,p,b)):m=Ow(i.width,i.margins,l,p,i.margins.bottom);let g={...o,theme:y},S=qn({...Cg(g,e),height:m,marginBottom:b,x:u?{...$a(y,e.xAxis.label,l),axis:null,label:null}:$a(y,e.xAxis.label,l),y:$a(y,e.yAxis.label,p),marks:kg(c,y)},y);S.style.cursor="crosshair";let w=s.map(M=>({seriesId:M.seriesId,group:M.group,xValue:M.predicted,yValue:M.observed,tooltipFields:M.tooltipFields,backgroundColor:a.get(M.group)??"#1b9e77"})),_=[];for(let M of e.references??[]){let E=M.label&&M.label!=="Identity"?M.label:M.type==="identity"?"Perfectly Calibrated":"Reference";if(M.type==="identity"){let C=Math.max(0,Math.min(l[0],l[1]),Math.min(p[0],p[1])),N=Math.min(1,Math.max(l[0],l[1]),Math.max(p[0],p[1]));C<=N&&_.push({type:"identity",points:[{x:C,y:C},{x:N,y:N}],label:E,backgroundColor:y.reference.color})}else M.type==="horizontal"&&M.value!==void 0?_.push({type:"horizontal",value:M.value,label:E,backgroundColor:y.reference.color}):M.type==="path"&&M.points&&_.push({type:"path",points:M.points,label:E,backgroundColor:y.reference.color})}if(Us(S,{items:w,references:_,theme:y,tooltipStyle:"plotly",xDomain:l,yDomain:p}),!u||!e.distribution)return S;let v=Og(e,e.distribution),I=qn({...Cg(g,e),height:h,marginTop:0,marginBottom:x,x:$a(y,e.xAxis.label,l),y:{label:null,grid:!1,ticks:3,tickSize:y.axis.tickSize,tickPadding:y.axis.tickPadding},color:{legend:!1,domain:o.groups,range:o.colors},marks:kg([Wi(v,{x1:M=>M.midpoint-M.binWidth/2,x2:M=>M.midpoint+M.binWidth/2,y:"count",fill:"group",fillOpacity:1/Math.max(o.groups.length,1)})],y)},y);I.style.cursor="crosshair",xL(I,v,{theme:y,xDomain:l,groupCount:o.groups.length,colorByGroup:a,height:h});let O=document.createElement("div");return O.className="rtichoke-calibration",O.style.width=`${y.width}px`,O.style.maxWidth="100%",O.append(S,I),O}function Bk(e,t,r){let n=e.data.map(s=>s.observed).filter(Number.isFinite),o={x:e.xAxis.domain??[0,1],y:e.yAxis.domain??[Math.min(0,...n),Math.max(1,...n)]},i=mL(e,o),a=s=>{let c=wL(e,t,r,s?i:o);return c.dataset.calibrationZoom=s?"autorange":"configured",c.addEventListener("dblclick",f=>{f.preventDefault();let u=a(!s);c.replaceWith(u)}),c};return a(!1)}function SL(e,t={}){return Bk(e,t,!1)}function Gk(e){return Bk(e,{},!0)}function vL(e,t,r,n,o){vi(e);let i=rn(tp(e),t),{theme:a,colorByGroup:s}=i,c=e.operatingPoint?.dimension,f=Og(e,e.data).map(b=>{let x=b,g=[["Series",b.label]];return e.type==="precision_recall"?(c==="ppcr"?(x.ppcr!==void 0&&g.push(["PPCR",Ue(x.ppcr,a.tip.digits)]),g.push(["Cutoff",Ue(x.cutoff,a.tip.digits)])):(g.push(["Cutoff",Ue(x.cutoff,a.tip.digits)]),x.ppcr!==void 0&&g.push(["PPCR",Ue(x.ppcr,a.tip.digits)])),g.push(["Sensitivity",Ue(x.sensitivity,a.tip.digits)],["PPV",Ue(x.ppv,a.tip.digits)]),x.performance&&x.performance.length>0&&g.push(...Da(x.performance,hL,a.tip.digits,new Set(["sensitivity","ppv"])))):e.type==="gains"?(c==="probability_threshold"?(g.push(["Cutoff",Ue(x.cutoff,a.tip.digits)]),g.push(["PPCR",Ue(x.ppcr,a.tip.digits)])):(g.push(["PPCR",Ue(x.ppcr,a.tip.digits)]),g.push(["Cutoff",Ue(x.cutoff,a.tip.digits)])),g.push(["Sensitivity",Ue(x.sensitivity,a.tip.digits)]),x.performance&&x.performance.length>0&&g.push(...Da(x.performance,gL,a.tip.digits,new Set(["sensitivity"])))):e.type==="lift"&&(c==="probability_threshold"?(g.push(["Cutoff",Ue(x.cutoff,a.tip.digits)]),g.push(["PPCR",Ue(x.ppcr,a.tip.digits)])):(g.push(["PPCR",Ue(x.ppcr,a.tip.digits)]),g.push(["Cutoff",Ue(x.cutoff,a.tip.digits)])),g.push(["Lift",Ue(x.lift,a.tip.digits)]),x.performance&&x.performance.length>0&&g.push(...Da(x.performance,bL,a.tip.digits,new Set(["lift"])))),{...b,tooltipFields:g,title:Vt(a.tip.digits,g)}}),u=Cw(e,a);u.push(Qt(f,{x:r,y:n,z:"seriesId",stroke:"group",strokeWidth:a.line.width,strokeDasharray:a.line.dash??void 0}),Cu(f,r,n,i,t.theme));let p=[];if(o!==void 0&&e.operatingPoint){let x=e.operatingPoint.dimension==="probability_threshold"?"cutoff":"ppcr";p=f.filter(g=>g[x]===o),p.length>0&&u.push(ku(p,r,n,i,t.theme))}let l=qn({...Cg(i,e),x:$a(a,e.xAxis.label,e.xAxis.domain),y:$a(a,e.yAxis.label,e.yAxis.domain),marks:kg(u,a)},a),m=f.map(b=>({seriesId:b.seriesId,group:b.group,xValue:Number(b[r]),yValue:Number(b[n]),tooltipFields:b.tooltipFields,backgroundColor:s.get(b.group)??"#1b9e77"})),h=p.map(b=>({seriesId:b.seriesId,group:b.group,xValue:Number(b[r]),yValue:Number(b[n]),tooltipFields:b.tooltipFields,backgroundColor:s.get(b.group)??"#1b9e77"})),y=[];for(let b of e.references??[]){let x=b.label??(b.type==="identity"?"Identity":"Reference");b.type==="identity"?y.push({type:"identity",points:[{x:0,y:0},{x:1,y:1}],label:x}):b.type==="horizontal"&&b.value!==void 0?y.push({type:"horizontal",value:b.value,label:x}):b.type==="path"&&b.points&&y.push({type:"path",points:b.points,label:x})}return Us(l,{items:m,selectedOperatingPointItems:h,references:y,theme:a}),l}function IL(e){return[...new Set(e.series.map(t=>t.horizon).filter(t=>t!==void 0))]}function _L(e,t){let r=e.series.filter(o=>o.horizon===void 0||o.horizon===t),n=new Set(r.map(o=>o.id));return{...e,series:r,data:e.data.filter(o=>n.has(o.seriesId)),references:e.references?.filter(o=>o.scope!=="population_horizon"||o.horizon===t)}}function Nu(e,t,r,n){let o=IL(e);if(o.length<=1)return t(e,r,n);let i=r,a=document.createElement("div");a.className="rtichoke-horizon-chart";let s=document.createElement("label");s.className="rtichoke-horizon-control",s.textContent="Fixed Time Horizon: ";let c=document.createElement("select");c.className="rtichoke-horizon-select",c.setAttribute("aria-label","Fixed Time Horizon");for(let p of o){let l=document.createElement("option");l.value=String(p),l.textContent=String(p),c.append(l)}s.append(c);let f=document.createElement("div"),u=p=>{f.replaceChildren(t(_L(e,p),i,l=>{i=l,n&&n(l)}))};return c.addEventListener("change",()=>u(Number(c.value))),a.append(s,f),u(o[0]),a}function Nw(e,t,r,n){return Ou(e,t,(o,i,a,s)=>Nu(o,(c,f,u)=>js(c,i,(p,l)=>vL(p,i,r,n,l),f,u),a,s))}function Rw(e,t={}){return Nw(e,t,"sensitivity","ppv")}function Ew(e,t={}){return Nw(e,t,"ppcr","sensitivity")}function Aw(e,t={}){return Nw(e,t,"ppcr","lift")}var PL=["net_benefit","ppcr","sensitivity","specificity","false_positive_rate","ppv","npv","lift","predicted_positives","true_positives","true_negatives","false_positives","false_negatives"];function Fw(e,t={}){return vi(e),Ou(e,t,(r,n,o,i)=>Nu(r,(a,s,c)=>js(a,n,(f,u)=>ML(f,n,u),s,c),o,i))}function ML(e,t,r){let n=[...new Set(e.series.map(g=>g.display.group))],o=rn(n,{...t,showLegend:!1}),{theme:i,colorByGroup:a}=o,s=new Map(e.series.map(g=>[g.id,g.display])),c=new Map(e.series.map(g=>[g.display.group,g.display.label])),f=e.data.map(g=>{let S=[["Series",s.get(g.seriesId).label],["Threshold",Ue(g.threshold,i.tip.digits)],["Net Benefit",Ue(g.netBenefit,i.tip.digits)]];return g.performance&&g.performance.length>0&&S.push(...Da(g.performance,PL,i.tip.digits,new Set(["net_benefit"]))),{...g,group:s.get(g.seriesId).group,label:s.get(g.seriesId).label,tooltipFields:S,title:Vt(i.tip.digits,S)}}),u={stroke:i.reference.color,strokeWidth:i.reference.width,strokeDasharray:i.reference.dash},p=[];for(let g of e.references)g.benchmark==="treat_none"?p.push(Io([0],{...u})):p.push(Qt(g.points,{x:"x",y:"y",...u}));p.push(Qt(f,{x:"threshold",y:"netBenefit",z:"seriesId",stroke:"group",strokeWidth:i.line.width,strokeDasharray:i.line.dash??void 0}),Cu(f,"threshold","netBenefit",o,t.theme));let l=[];r!==void 0&&e.operatingPoint&&(l=f.filter(g=>g.threshold===r),l.length>0&&p.push(ku(l,"threshold","netBenefit",o,t.theme)));let m=(g,S)=>({label:g,domain:S,grid:!1,line:!0,ticks:i.axis.ticks,tickSize:i.axis.tickSize,tickPadding:i.axis.tickPadding,tickFormat:i.axis.numberFormat}),h=qn({width:i.width,height:i.height,marginTop:i.margins.top,marginRight:i.margins.right,marginBottom:i.margins.bottom,marginLeft:i.margins.left,style:{background:i.background,color:i.axis.color,fontFamily:i.typography.fontFamily,fontSize:`${i.typography.fontSize}px`},color:{legend:o.showLegend,domain:o.groups,range:o.colors,tickFormat:g=>c.get(g)??g},x:m(e.xAxis.label,e.xAxis.domain),y:m(e.yAxis.label,e.yAxis.domain),marks:p},i),y=f.map(g=>({seriesId:g.seriesId,group:g.group,xValue:g.threshold,yValue:g.netBenefit,tooltipFields:g.tooltipFields,backgroundColor:a.get(g.group)??"#1b9e77"})),b=l.map(g=>({seriesId:g.seriesId,group:g.group,xValue:g.threshold,yValue:g.netBenefit,tooltipFields:g.tooltipFields,backgroundColor:a.get(g.group)??"#1b9e77"})),x=e.references.map(g=>{if(g.type==="horizontal"){let S=g.label??"Treat None";return{type:"horizontal",value:g.value,label:S}}else if(g.type==="path"){let S=g.population?`Treat All \u2014 ${g.population}`:"Treat All",w=g.label??S;return{type:"path",points:g.points,label:w}}return{type:"horizontal",value:0,label:g.label??"Reference"}});return Us(h,{items:y,selectedOperatingPointItems:b,references:x,theme:i}),h}var TL=["net_benefit_interventions_avoided","net_benefit","predicted_positives","ppcr","true_negatives","false_negatives"];function $w(e,t={}){return vi(e),Ou(e,t,(r,n,o,i)=>Nu(r,(a,s,c)=>js(a,n,(f,u)=>OL(f,n,u),s,c),o,i))}function OL(e,t,r){let n=[...new Set(e.series.map(g=>g.display.group))],o=rn(n,{...t,showLegend:!1}),{theme:i,colorByGroup:a}=o,s=new Map(e.series.map(g=>[g.id,g.display])),c=new Map(e.series.map(g=>[g.display.group,g.display.label])),f=e.data.map(g=>{let S=[["Series",s.get(g.seriesId).label],["Threshold",Ue(g.threshold,i.tip.digits)],["Interventions Avoided",Ue(g.interventionsAvoided,i.tip.digits)]];return g.performance&&g.performance.length>0&&S.push(...Da(g.performance,TL,i.tip.digits,new Set(["net_benefit_interventions_avoided"]))),{...g,group:s.get(g.seriesId).group,label:s.get(g.seriesId).label,tooltipFields:S,title:Vt(i.tip.digits,S)}}),u={stroke:i.reference.color,strokeWidth:i.reference.width,strokeDasharray:i.reference.dash},p=[];for(let g of e.references)g.benchmark==="treat_all"?p.push(Io([0],{...u})):p.push(Qt(g.points,{x:"x",y:"y",...u}));p.push(Qt(f,{x:"threshold",y:"interventionsAvoided",z:"seriesId",stroke:"group",strokeWidth:i.line.width,strokeDasharray:i.line.dash??void 0}),Cu(f,"threshold","interventionsAvoided",o,t.theme));let l=[];r!==void 0&&e.operatingPoint&&(l=f.filter(g=>g.threshold===r),l.length>0&&p.push(ku(l,"threshold","interventionsAvoided",o,t.theme)));let m=(g,S)=>({label:g,domain:S,grid:!1,line:!0,ticks:i.axis.ticks,tickSize:i.axis.tickSize,tickPadding:i.axis.tickPadding,tickFormat:i.axis.numberFormat}),h=qn({width:i.width,height:i.height,marginTop:i.margins.top,marginRight:i.margins.right,marginBottom:i.margins.bottom,marginLeft:i.margins.left,style:{background:i.background,color:i.axis.color,fontFamily:i.typography.fontFamily,fontSize:`${i.typography.fontSize}px`},color:{legend:o.showLegend,domain:o.groups,range:o.colors,tickFormat:g=>c.get(g)??g},x:m(e.xAxis.label,e.xAxis.domain),y:m(e.yAxis.label,e.yAxis.domain),marks:p},i),y=f.map(g=>({seriesId:g.seriesId,group:g.group,xValue:g.threshold,yValue:g.interventionsAvoided,tooltipFields:g.tooltipFields,backgroundColor:a.get(g.group)??"#1b9e77"})),b=l.map(g=>({seriesId:g.seriesId,group:g.group,xValue:g.threshold,yValue:g.interventionsAvoided,tooltipFields:g.tooltipFields,backgroundColor:a.get(g.group)??"#1b9e77"})),x=e.references.map(g=>{if(g.type==="horizontal"){let S=g.label??"Treat All";return{type:"horizontal",value:g.value,label:S}}else if(g.type==="path"){let S=g.population?`Treat None \u2014 ${g.population}`:"Treat None",w=g.label??S;return{type:"path",points:g.points,label:w}}return{type:"horizontal",value:0,label:g.label??"Reference"}});return Us(h,{items:y,selectedOperatingPointItems:b,references:x,theme:i}),h}var CL=0,kL=0,Kk={real_positive:"Event",target_event:"Event",real_competing:"Competing event",competing_outcome:"Competing event",real_negative:"Event-free",no_target_event:"Event-free",real_censored:"Censored",unknown:"Censored"},qk={real_positive:"#4C5454",real_positives_est:"#4C5454",target_event:"#4C5454",real_competing:"#C880B7",real_competing_est:"#C880B7",competing_outcome:"#C880B7",real_negative:"#E0E0E0",real_negatives_est:"#E0E0E0",no_target_event:"#E0E0E0",real_censored:"#E3F09B",real_censored_est:"#E3F09B",unknown:"#E3F09B"},NL=["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Ru=["#EDF5FD","#D5E8FA","#AFD4F3","#7EB9E7","#4999D7","#2477BB","#155A98","#103C70"],Dw=["#2672B9","#FFC247","#9E91CF","#E68A31","#7CC4E4","#6D7797","#D7B86B","#B9B1CC"];function Hk(e){let t=e.replace("#",""),r=parseInt(t,16);return[r>>16&255,r>>8&255,r&255]}function RL(e,t,r){let n=o=>Math.min(255,Math.max(0,Math.round(o))).toString(16).padStart(2,"0");return`#${n(e)}${n(t)}${n(r)}`.toUpperCase()}function EL(e,t,r){let[n,o,i]=Hk(e),[a,s,c]=Hk(t);return RL(n+r*(a-n),o+r*(s-o),i+r*(c-i))}function AL(e){if(e<=0)return[];if(e===1)return[Ru[Ru.length-1]];let t=Ru.length-1,r=[];for(let n=0;nu+(p.mass!==void 0&&p.mass!==null?p.mass:0),0)),a&&(c=r.reduce((u,p)=>u+(p.count!==void 0&&p.count!==null?p.count:0),0));let f=r.map(u=>{let p=FL(u.stateId,u.label,n),l=0;return e.estimator==="aalen_johansen"&&u.estimate!==void 0&&u.estimate!==null?l=u.estimate:e.estimator==="raw"&&u.count!==void 0&&u.count!==null&&c&&c>0?l=u.count/c:o&&u.estimate!==void 0&&u.estimate!==null?l=u.estimate:i&&u.mass!==void 0&&u.mass!==null&&s&&s>0?l=u.mass/s:a&&u.count!==void 0&&u.count!==null&&c&&c>0&&(l=u.count/c),{stateId:u.stateId,label:p,proportion:l,percentage:l*100,estimate:u.estimate??null,mass:u.mass??null,count:u.count??null}});return{evaluationId:e.evaluationId,horizon:t,estimator:e.estimator,estimateOrigin:e.estimateOrigin,censoringHeuristic:e.censoringHeuristic,competingHeuristic:e.competingHeuristic,states:f,totalMass:s,totalCount:c}}function Vw(e,t,r,n,o,i,a,s){let c=[];if(s==="observed_step")c.push(["Step",e]),c.push(["State",t.label]),a==="aalen_johansen"?(t.estimate!==null&&c.push(["AJ estimated occupancy",t.estimate.toFixed(o)]),c.push(["Percentage",`${t.percentage.toFixed(1)}%`])):(t.count!==null&&c.push(["Observed count",t.count]),r!==null&&c.push(["Observed denominator",r]),c.push(["Observed percentage",`${t.percentage.toFixed(1)}%`]));else{c.push([i?"Time":"Horizon",e]),c.push(["Outcome status",t.label]);let f=t.count??t.mass,u=r??n;f!=null&&c.push(["Count",f]),c.push(["Percent",`${t.percentage.toFixed(1)}%`]),u!=null&&c.push(["Denominator",u]),c.push(["Accounting","Raw observed status"]),(t.stateId==="real_censored"||t.label.toLowerCase().includes("censored"))&&c.push(["Note","Censored before horizon; no censoring adjustment is applied."])}return Vt(o,c)}function zw(e,t={}){gy(e);let r=++CL,n=rn(2,t),{theme:o}=n,i=o.tip.digits,a=e.evaluations[0].id,s=document.createElement("div");s.className="rtichoke-outcome-distribution",s.style.width=`${o.width}px`,s.style.maxWidth="100%";let c=e.title??"Outcome Distribution",f=document.createElement("h3");f.className="rtichoke-outcome-distribution__title",f.textContent=c,s.append(f);let u=document.createElement("div");u.className="rtichoke-outcome-distribution__controls",s.append(u);let p=document.createElement("div");p.className="rtichoke-outcome-distribution__readout",s.append(p);let l=document.createElement("div");l.className="rtichoke-operating-point-control",l.style.marginLeft=`${o.margins.left}px`,l.style.marginRight=`${o.margins.right}px`;let m=`rtichoke-od-slider-${++kL}`,h=document.createElement("label");h.className="rtichoke-operating-point-label",h.htmlFor=m;let y=document.createElement("span"),b=document.createElement("span");b.className="rtichoke-operating-point-value",h.append(y,b);let x=document.createElement("input");x.type="range",x.id=m,x.className="rtichoke-operating-point-slider",l.append(h,x);let g=document.createElement("div");g.className="rtichoke-legend",g.style.paddingLeft=`${o.margins.left}px`;let S=document.createElement("div");S.className="rtichoke-outcome-distribution__chart",s.append(l,g,S);let _=(e.stateScale??"nominal")==="ordinal",v=new Map;if(e.stateDistributions.length>0){let C=e.stateDistributions.some(F=>F.estimateOrigin==="observed_step"),N=[];for(let F of e.stateDistributions)for(let T of F.states)N.includes(T.stateId)||N.push(T.stateId);let K=N.length;if(_){let F=AL(K);N.forEach((T,V)=>{v.set(T,F[V])})}else C&&N.forEach((F,T)=>{let V=Dw[T%Dw.length];v.set(F,V)})}let I=0,O=C=>{if(v.has(C))return v.get(C);let N=e.stateDistributions.some(T=>T.estimateOrigin==="observed_step");if(!_&&!N&&qk[C]){let T=qk[C];return v.set(C,T),T}let K=N?Dw:NL,F=K[I%K.length];return I++,v.set(C,F),F},M=null,E=()=>{if(u.replaceChildren(),e.evaluations.length>1){let L=document.createElement("div");L.className="rtichoke-pd-radio-group",L.setAttribute("role","radiogroup"),L.setAttribute("aria-label","Evaluation");let P=document.createElement("span");P.className="rtichoke-pd-radio-group-label",P.textContent="Evaluation:",L.append(P);let A=document.createElement("div");A.className="rtichoke-pd-radio-options";for(let z of e.evaluations){let R=z.label??z.model??z.population??z.id,Q=document.createElement("label");Q.className="rtichoke-pd-radio-option";let X=document.createElement("input");X.type="radio",X.name=`od-eval-${r}`,X.value=z.id,X.checked=z.id===a,X.addEventListener("change",()=>{X.checked&&(a=z.id,M=null,E())});let le=document.createElement("span");le.textContent=R,Q.append(X,le),A.append(Q)}L.append(A),u.append(L)}let C=e.stateDistributions.filter(L=>L.evaluationId===a);if(C.length===0){l.style.display="none",g.style.display="none",p.replaceChildren(),S.replaceChildren();let L=document.createElement("p");L.className="rtichoke-outcome-distribution__empty",L.textContent="No state distribution data available.",S.append(L);return}let N=new Set,K=!1;for(let L of C){let A=`${L.estimateOrigin??"unspecified"}:${L.horizon??0}`;if(N.has(A)){K=!0;break}N.add(A)}if(K){l.style.display="none",g.style.display="none",p.replaceChildren(),S.replaceChildren();let L=document.createElement("p");L.className="rtichoke-outcome-distribution__empty",L.textContent="Multiple heuristic/method variants detected for evaluation; unsupported data state.",S.append(L);return}let F=C.filter(L=>L.estimateOrigin==="event_table").map(Lw).sort((L,P)=>L.horizon-P.horizon),T=C.filter(L=>L.estimateOrigin==="fixed_time_horizon").map(Lw).sort((L,P)=>L.horizon-P.horizon),V=C.filter(L=>L.estimateOrigin==="observed_step").map(Lw).sort((L,P)=>L.horizon-P.horizon),D=V.length>0,H=D?Array.from(new Set(V.map(L=>L.horizon))).sort((L,P)=>L-P):Array.from(new Set(T.map(L=>L.horizon))).sort((L,P)=>L-P);if(F.length===0&&T.length===0&&V.length===0){l.style.display="none",g.style.display="none",p.replaceChildren(),S.replaceChildren();let L=document.createElement("p");L.className="rtichoke-outcome-distribution__empty",L.textContent="No outcome distribution data found for current selection.",S.append(L);return}let G=F.length>0||D&&V.length>1,Y=D&&V.length===1;if(D)if(V.length>1){l.style.display="flex",(M===null||!H.includes(M))&&(M=H[H.length-1]);let L=H.indexOf(M),P=H.length-1;x.min="0",x.max=String(Math.max(0,P)),x.step="1",x.value=String(Math.max(0,L)),y.textContent="Step: ",b.textContent=String(M),x.setAttribute("aria-label","Step"),x.setAttribute("aria-valuetext",String(M))}else l.style.display="none",M=H[0];else if(H.length>0){l.style.display="flex",(M===null||!H.includes(M))&&(M=H[H.length-1]);let L=H.indexOf(M),P=H.length-1;x.min="0",x.max=String(Math.max(0,P)),x.step="1",x.value=String(Math.max(0,L)),y.textContent="Time: ",b.textContent=M.toFixed(i),x.setAttribute("aria-label","Time horizon"),x.setAttribute("aria-valuetext",M.toFixed(i))}else l.style.display="none";p.replaceChildren();let W=D?V.find(L=>L.horizon===M):T.find(L=>L.horizon===M)??F.find(L=>L.horizon===M);if(W){let L=document.createElement("div");L.className="rtichoke-outcome-distribution__readout-card";let P=document.createElement("div");P.className="rtichoke-outcome-distribution__readout-header",P.textContent=D?`Active Step: Step = ${W.horizon}`:`Active Horizon: Time = ${W.horizon.toFixed(i)}`,L.append(P);let A=document.createElement("table");A.className="rtichoke-outcome-distribution__readout-table";let z=document.createElement("thead"),R=document.createElement("tr"),Q=document.createElement("th");Q.textContent=D?"State":"Outcome";let X=document.createElement("th");D&&W.estimator==="aalen_johansen"?X.textContent="Occupancy (%)":X.textContent="Count / Total (%)",R.append(Q,X),z.append(R),A.append(z);let le=document.createElement("tbody"),xe=W.totalCount??W.totalMass;for(let Me of W.states){let ne=document.createElement("tr"),me=document.createElement("td"),Ge=document.createElement("span");Ge.className="rtichoke-performance-table__badge";let Pt=O(Me.stateId);Ge.style.backgroundColor=Pt,me.append(Ge,document.createTextNode(Me.label));let ot=document.createElement("td");ot.className="rtichoke-outcome-distribution__readout-cell";let ht=document.createElement("div");ht.className="rtichoke-performance-table__bar";let er=document.createElement("div");er.className="rtichoke-performance-table__bar-fill",er.style.backgroundColor=Pt,er.style.opacity="0.45";let No=Math.min(Math.max(Me.percentage,0),100);er.style.width=`${No}%`,ht.append(er);let qt=document.createElement("span");if(qt.className="rtichoke-performance-table__cell-text",D&&W.estimator==="aalen_johansen")qt.textContent=`${Me.percentage.toFixed(1)}%`;else{let tr=Me.count??Me.mass;tr!=null&&xe!==null&&xe!==void 0?qt.textContent=`${tr.toLocaleString()} / ${xe.toLocaleString()} (${Me.percentage.toFixed(1)}%)`:qt.textContent=`${Me.percentage.toFixed(1)}%`}ot.append(ht,qt),ne.append(me,ot),le.append(ne)}A.append(le),L.append(A),p.append(L)}g.replaceChildren(),g.style.display="flex";let Z=document.createElement("span");Z.style.fontWeight="600",Z.style.marginRight="0.5rem",Z.textContent="Outcome:",g.append(Z);let q=new Map,ie=D?V:G?F:T;for(let L of ie)for(let P of L.states)q.has(P.label)||q.set(P.label,{stateId:P.stateId,label:P.label});for(let L of q.values()){let P=document.createElement("div");P.className="rtichoke-legend-item";let A=document.createElement("span");A.className="rtichoke-legend-swatch";let z=document.createElement("span");z.className="rtichoke-legend-line",z.style.backgroundColor=O(L.stateId),z.style.height="10px",z.style.borderRadius="2px",A.append(z);let R=document.createElement("span");R.className="rtichoke-legend-label",R.textContent=L.label,P.append(A,R),g.append(P)}let ee=[];if(D){let L=[];for(let P of V)for(let A of P.states){let z=O(A.stateId),R=Vw(P.horizon,A,P.totalCount,P.totalMass,i,!1,P.estimator,P.estimateOrigin);L.push({step:P.horizon,stepLabel:`Step ${P.horizon}`,stateId:A.stateId,label:A.label,percentage:A.percentage,color:z,title:R})}ee.push(Jl(L,Fa({x:"step",y:"percentage",z:"stateId",fill:P=>P.color,fillOpacity:P=>M===null||P.step<=M?.88:.28,stroke:o.axis.color,strokeWidth:.75,title:P=>P.title}))),M!==null&&ee.push(Jl([{step:M,percentage:100}],{x:"step",y:"percentage",fill:"none",stroke:o.axis.color,strokeWidth:2.5}))}else if(F.length>0){let L=[];for(let z of F)for(let R of z.states){let Q=O(R.stateId),X=Vw(z.horizon,R,z.totalCount,z.totalMass,i,!0,z.estimator,z.estimateOrigin);L.push({horizon:z.horizon,stateId:R.stateId,label:R.label,percentage:R.percentage,color:Q,title:X})}ee.push(Pw(L,Fa({x:"horizon",y:"percentage",z:"stateId",fill:z=>z.color,fillOpacity:.85,curve:"step-after"})));let A=(F[0]?.states??[]).length-1;if(A>0){let z=[];for(let R of F){let Q=0;for(let X=0;XP.color,fillOpacity:.88,stroke:o.axis.color,strokeWidth:.75,title:P=>P.title})))}let oe={width:o.width,height:Math.round(o.height*.65),marginTop:o.margins.top+10,marginRight:o.margins.right,marginBottom:o.margins.bottom,marginLeft:o.margins.left,style:{background:o.background,color:o.axis.color,fontFamily:o.typography.fontFamily,fontSize:`${o.typography.fontSize}px`},x:D?G?{label:"Step",grid:!1,line:!0,ticks:H,tickFormat:L=>String(L),tickSize:o.axis.tickSize,tickPadding:o.axis.tickPadding}:{label:"Step",grid:!1,line:!0}:G?{label:"Time",grid:!1,line:!0,ticks:o.axis.ticks,tickSize:o.axis.tickSize,tickPadding:o.axis.tickPadding}:{label:"Time",grid:!1,line:!0},y:{label:D?"State occupancy (%)":"Outcomes",domain:[0,100],grid:!1,line:!0,ticks:5,tickSize:o.axis.tickSize,tickPadding:o.axis.tickPadding,tickFormat:L=>`${L}%`},marks:ee},re=qn(oe,o);S.replaceChildren(re)};return x.addEventListener("input",()=>{let C=e.stateDistributions.filter(T=>T.evaluationId===a),K=C.some(T=>T.estimateOrigin==="observed_step")?Array.from(new Set(C.filter(T=>T.estimateOrigin==="observed_step").map(T=>T.horizon??0))).sort((T,V)=>T-V):Array.from(new Set(C.filter(T=>T.estimateOrigin==="fixed_time_horizon").map(T=>T.horizon??0))).sort((T,V)=>T-V),F=Number(x.value);F>=0&&F[a.metricId,a.estimate])),r=t.get("true_positives"),n=t.get("true_negatives"),o=t.get("false_positives"),i=t.get("false_negatives");return r==null||isNaN(r)||n===void 0||n===null||isNaN(n)||o===void 0||o===null||isNaN(o)||i===void 0||i===null||isNaN(i)?null:{tp:r,tn:n,fp:o,fn:i}}function La(e,t,r,n){let o=e.createElement("td");o.className=n;let i=e.createElement("span");i.className="rtichoke-performance-table__confusion-val",i.textContent=Rg(t);let a=e.createElement("span");if(a.className="rtichoke-performance-table__confusion-pct",r>0&&!isNaN(t)&&!isNaN(r)){let s=t/r*100;a.textContent=`${s.toFixed(2)}%`}else a.textContent=nn;return o.append(i,a),o}var LL=0;function Yk(e){return e.split("_").map((t,r)=>r===0?t.charAt(0).toUpperCase()+t.slice(1):t).join(" ")}function Rg(e){return Number.isInteger(e)?e.toString():new Intl.NumberFormat("en-US",{maximumFractionDigits:2}).format(e)}function VL(e){return e.toFixed(2)}function zL(e){if(e.length<=1)return 2;let t=2;for(;t<=6;){let r=e.map(o=>o.toFixed(t));if(new Set(r).size===new Set(e).size)return t;t++}return t}function jL(e,t){if(!e||e.estimate===null||e.estimate===void 0||isNaN(e.estimate))return nn;let r=t(e.estimate);if(e.lower===void 0&&e.upper===void 0)return r;let n=e.lower===void 0||e.lower===null||isNaN(e.lower)?nn:t(e.lower),o=e.upper===void 0||e.upper===null||isNaN(e.upper)?nn:t(e.upper);return`${r} [${n}, ${o}]`}function rp(e,t,r,n=!1,o=!1,i="positive"){if(isNaN(r)||!isFinite(r))return;let a=t.createElement("div");a.className="rtichoke-performance-table__bar";let s=t.createElement("div");if(s.className="rtichoke-performance-table__bar-fill",n){let c=Math.min(Math.max(r,0),50);s.style.width=`${c}%`,o?(s.classList.add("rtichoke-performance-table__bar-fill--negative"),s.style.right="50%",s.style.left="auto"):(s.classList.add("rtichoke-performance-table__bar-fill--positive"),s.style.left="50%",s.style.right="auto")}else{let c=Math.min(Math.max(r,0),100);s.style.width=`${c}%`,i==="neutral"?s.classList.add("rtichoke-performance-table__bar-fill--neutral"):s.classList.add("rtichoke-performance-table__bar-fill--positive")}a.append(s),e.append(a)}function jw(e,t=globalThis.document){hy(e);let r=t.createElement("div");if(r.className="rtichoke-performance-table",e.title){let P=t.createElement("div");P.className="rtichoke-performance-table__title",P.textContent=e.title,r.append(P)}let n=t.createElement("div");n.className="rtichoke-performance-table__scroll";let o=t.createElement("table");o.className="rtichoke-performance-table__table";let i=new Map(e.evaluations.map(P=>[P.id,P])),a=new Set(e.evaluations.map(P=>P.model).filter(Boolean)),s=new Set(e.evaluations.map(P=>P.population).filter(Boolean)),c=a.size>1,f=s.size>1,u=c,p=f||!c&&a.size===0&&s.size>1,l=new Map,m=0;for(let P of e.evaluations)P.model&&!l.has(P.model)&&(l.set(P.model,Ng[m%Ng.length]),m++);let h=new Map,y=0;for(let P of e.evaluations)P.population&&!h.has(P.population)&&(h.set(P.population,Ng[y%Ng.length]),y++);let b=e.evaluations.some(P=>P.label?!!(c&&P.label!==P.model||f&&P.label!==P.population||!c&&!f&&P.label!==P.model&&P.label!==P.population):!1),x=e.rows.some(P=>P.horizon!==void 0),g=e.rows.some(P=>P.context?.censoringHeuristic!==void 0),S=e.rows.some(P=>P.context?.competingEventHeuristic!==void 0),w=new Set(e.rows.map(P=>P.operatingPoint.type)),_=w.size===1&&w.has("probability_threshold"),v=w.size===1&&w.has("ppcr"),I=new Set(e.metrics.map(P=>P.id)),O=I.has("predicted_positives"),M=I.has("ppcr"),E=O&&(M||v),C=_||!v&&w.has("probability_threshold"),N=E,K=v&&!E,F=!_&&!v&&!E,T=e.rows.filter(P=>P.operatingPoint.type==="probability_threshold").map(P=>P.operatingPoint.value),V=zL(T),D=$L.map(P=>{let A=e.metrics.find(z=>z.id===P.id);return A?{id:A.id,label:A.label||P.defaultLabel}:null}).filter(P=>P!==null),H=new Set,G=D.filter(P=>H.has(P.label)?!1:(H.add(P.label),!0)),Y=0,W=0;for(let P of e.rows)for(let A of P.values)if(A.metricId==="lift"&&A.estimate!==null&&A.estimate!==void 0&&isFinite(A.estimate)&&A.estimate>Y&&(Y=A.estimate),A.metricId==="net_benefit"&&A.estimate!==null&&A.estimate!==void 0&&isFinite(A.estimate)){let z=Math.abs(A.estimate);z>W&&(W=z)}let Z=++LL,q=t.createElement("thead");q.className="rtichoke-performance-table__header";let ie=t.createElement("tr"),ee=t.createElement("tr"),oe=1;if(ee.append(_t(t,"",{ariaLabel:"Row details",className:"rtichoke-performance-table__toggle-header"})),u&&(oe++,ee.append(_t(t,"Model"))),p&&(oe++,ee.append(_t(t,"Population"))),b&&(oe++,ee.append(_t(t,"Evaluation"))),C&&(oe++,ee.append(_t(t,"Probability Threshold"))),N&&(oe++,ee.append(_t(t,"Predicted Positives"))),K&&(oe++,ee.append(_t(t,"PPCR"))),F&&(oe++,ee.append(_t(t,"Operating Point"))),x&&(oe++,ee.append(_t(t,"Time Horizon"))),g&&(oe++,ee.append(_t(t,"Censoring"))),S&&(oe++,ee.append(_t(t,"Competing Event"))),G.length>0){let P=_t(t,"",{colSpan:oe,className:"rtichoke-performance-table__spanner--empty"});ie.append(P)}if(G.length>0){let P=_t(t,"Performance Metrics",{colSpan:G.length,className:"rtichoke-performance-table__spanner"});ie.append(P);for(let A of G)ee.append(_t(t,A.label,{className:"rtichoke-performance-table__metric-header"}))}q.append(ie),q.append(ee),o.append(q);let re=oe+G.length,L=t.createElement("tbody");for(let P=0;P0?"100.00%":nn,Se.append(Yt,Kr),ge.append(Se),tr.append(ge),ht.append(tr),Ge.append(ht),me.append(Ge),xe.append(me),ne.addEventListener("click",()=>{if(!xe)return;let mr=ne.getAttribute("aria-expanded")==="true";ne.setAttribute("aria-expanded",mr?"false":"true"),ne.setAttribute("aria-label",mr?"Show confusion matrix detail":"Hide confusion matrix detail"),ne.textContent=mr?"\u25B8":"\u25BE",xe.hidden=mr})}if(R.append(le),u){let ne=z?.model??nn,me=z?.model?l.get(z.model):void 0;R.append(_o(t,ne,"rtichoke-performance-table__model",me))}if(p){let ne=z?.population??nn,me=z?.population?h.get(z.population):void 0;R.append(_o(t,ne,"rtichoke-performance-table__population",me))}b&&R.append(_o(t,z?.label??z?.id??nn,"rtichoke-performance-table__evaluation"));let Me=new Map(A.values.map(ne=>[ne.metricId,ne]));if(C){let ne=A.operatingPoint.type==="probability_threshold"?A.operatingPoint.value:void 0,me=ne!==void 0?ne.toFixed(V):nn;R.append(_o(t,me,"rtichoke-performance-table__op"))}if(N){let ne=Me.get("predicted_positives")?.estimate,me=Me.get("ppcr")?.estimate??(A.operatingPoint.type==="ppcr"?A.operatingPoint.value:void 0),Ge=nn,Pt=NaN;if(ne!=null&&me!==void 0&&me!==null){let ht=Rg(ne),er=(me*100).toFixed(2);Ge=`${ht} (${er}%)`,Pt=me*100}else me!=null&&(Ge=`${(me*100).toFixed(2)}%`,Pt=me*100);let ot=_o(t,Ge,"rtichoke-performance-table__op");isNaN(Pt)||rp(ot,t,Pt,!1,!1,"neutral"),R.append(ot)}if(K){let ne=A.operatingPoint.type==="ppcr"?A.operatingPoint.value:Me.get("ppcr")?.estimate,me=ne!=null?`PPCR ${ne.toFixed(2)}`:nn,Ge=_o(t,me,"rtichoke-performance-table__op");ne!=null&&rp(Ge,t,ne*100,!1,!1,"neutral"),R.append(Ge)}if(F){let ne=A.operatingPoint.type==="ppcr"?`PPCR ${A.operatingPoint.value.toFixed(2)}`:`Threshold ${A.operatingPoint.value.toFixed(V)}`;R.append(_o(t,ne,"rtichoke-performance-table__op"))}if(x&&R.append(_o(t,A.horizon!==void 0?Rg(A.horizon):nn,"rtichoke-performance-table__horizon")),g){let ne=A.context?.censoringHeuristic;R.append(_o(t,ne?Yk(ne):nn,"rtichoke-performance-table__context"))}if(S){let ne=A.context?.competingEventHeuristic;R.append(_o(t,ne?Yk(ne):nn,"rtichoke-performance-table__context"))}for(let ne of G){let me=Me.get(ne.id),Ge=jL(me,VL),Pt=_o(t,Ge,"rtichoke-performance-table__metric");if(Pt.dataset.metricId=ne.id,me&&me.estimate!==null&&me.estimate!==void 0&&isFinite(me.estimate)){let ot=me.estimate;if(["sensitivity","specificity","ppv","npv"].includes(ne.id))rp(Pt,t,ot*100);else if(ne.id==="lift"){let ht=Y>0?ot/Y*100:0;rp(Pt,t,ht)}else if(ne.id==="net_benefit"&&W>0){let ht=ot<0,er=Math.abs(ot)/W*50;rp(Pt,t,er,!0,ht)}}R.append(Pt)}L.append(R),xe&&L.append(xe)}return o.append(L),n.append(o),r.append(n),r}var UL=0,BL=0;function GL(e,t){let{emphasizedTrue:r,nonEmphasizedTrue:n,emphasizedFalse:o,nonEmphasizedFalse:i}=e;switch(t){case"predicted_positives":return{tp:r,fp:o,tn:n,fn:i};case"predicted_negatives":return{tn:r,fn:o,tp:n,fp:i};case"real_positives":return{tp:r,fn:o,tn:n,fp:i};case"real_negatives":return{tn:r,fp:o,tp:n,fn:i};case"all_observations":default:return{tp:r,fp:o,tn:r,fn:o}}}function Wk(e,t,r,n,o){let i=e.operatingPoints.filter(_=>_.evaluationId===t&&_.type===r).sort((_,v)=>_.value-v.value),a=i.find(_=>Math.abs(_.value-n)<1e-6)??i[0],s=a?a.cutoff:0,c=a?a.realizedPpcr:0,f=e.bins.filter(_=>_.evaluationId===t).sort((_,v)=>_.lower-v.lower),u=0;for(let _ of f)u+=_.nPositive+_.nNegative;let p=null,l=null;if(a?.performance&&a.performance.length>0){let _=T=>{let V=a.performance?.find(D=>D.metricId===T);return V&&V.estimate!==void 0&&V.estimate!==null?V.estimate:null},v=_("true_positives"),I=_("false_positives"),O=_("true_negatives"),M=_("false_negatives"),E=_("sensitivity"),C=_("specificity"),N=_("ppv"),K=_("npv"),F=_("lift");if((E!==null||C!==null||N!==null||K!==null||F!==null)&&(p={sensitivity:E,specificity:C,ppv:N,npv:K,lift:F}),v!==null&&I!==null&&O!==null&&M!==null){let T=v+M,V=O+I,D=v+I,H=O+M;l={tp:v,fp:I,tn:O,fn:M,totalPositives:T,totalNegatives:V,totalPredictedPos:D,totalPredictedNeg:H}}}let m=e.evaluations.find(_=>_.id===t),h=m?.label??m?.model??m?.population??t,y=[],b=[];if(r==="probability_threshold"){let _=f.find(I=>I.lower===0&&I.upper===0),v=f.filter(I=>!(I.lower===0&&I.upper===0));if(_){let I=s===0?!0:_.upper>s,O=I?"TP":"FN",M=I?"True Positive (TP)":"False Negative (FN)",E=I?"FP":"TN",C=I?"False Positive (FP)":"True Negative (TN)";_.nPositive>0&&b.push({category:"Observed Positives",count:_.nPositive,classificationCell:O,cellLabel:M,title:Vt(o,[["Evaluation",h],["Score Interval","[0, 0]"],["Outcome","Observed Positive"],["Count",_.nPositive],["Classification",M]])}),_.nNegative>0&&b.push({category:"Observed Negatives",count:_.nNegative,classificationCell:E,cellLabel:C,title:Vt(o,[["Evaluation",h],["Score Interval","[0, 0]"],["Outcome","Observed Negative"],["Count",_.nNegative],["Classification",C]])})}for(let I=0;Is,K=N?"TP":"FN",F=N?"True Positive (TP)":"False Negative (FN)",T=N?"FP":"TN",V=N?"False Positive (FP)":"True Negative (TN)",D=s===0?!0:O.upper>s,H=D?"TP":"FN",G=D?"True Positive (TP)":"False Negative (FN)",Y=D?"FP":"TN",W=D?"False Positive (FP)":"True Negative (TN)",Z=_.nPositive+O.nPositive,q=_.nNegative+O.nNegative;K===H?Z>0&&y.push({x1:M,x2:E,category:"Observed Positives",count:Z,classificationCell:H,cellLabel:G,isPredictedPositive:D,title:Vt(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Positive"],["Count",Z],["Classification",G]])}):(_.nPositive>0&&y.push({x1:M,x2:E,category:"Observed Positives",count:_.nPositive,classificationCell:K,cellLabel:F,isPredictedPositive:N,title:Vt(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Positive"],["Count",_.nPositive],["Classification",F]])}),O.nPositive>0&&y.push({x1:M,x2:E,category:"Observed Positives",count:O.nPositive,classificationCell:H,cellLabel:G,isPredictedPositive:D,title:Vt(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Positive"],["Count",O.nPositive],["Classification",G]])})),T===Y?q>0&&y.push({x1:M,x2:E,category:"Observed Negatives",count:q,classificationCell:Y,cellLabel:W,isPredictedPositive:D,title:Vt(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Negative"],["Count",q],["Classification",W]])}):(_.nNegative>0&&y.push({x1:M,x2:E,category:"Observed Negatives",count:_.nNegative,classificationCell:T,cellLabel:V,isPredictedPositive:N,title:Vt(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Negative"],["Count",_.nNegative],["Classification",V]])}),O.nNegative>0&&y.push({x1:M,x2:E,category:"Observed Negatives",count:O.nNegative,classificationCell:Y,cellLabel:W,isPredictedPositive:D,title:Vt(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Negative"],["Count",O.nNegative],["Classification",W]])}))}else{let N=s===0?!0:O.upper>s,K=N?"TP":"FN",F=N?"True Positive (TP)":"False Negative (FN)",T=N?"FP":"TN",V=N?"False Positive (FP)":"True Negative (TN)";O.nPositive>0&&y.push({x1:M,x2:E,category:"Observed Positives",count:O.nPositive,classificationCell:K,cellLabel:F,isPredictedPositive:N,title:Vt(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Positive"],["Count",O.nPositive],["Classification",F]])}),O.nNegative>0&&y.push({x1:M,x2:E,category:"Observed Negatives",count:O.nNegative,classificationCell:T,cellLabel:V,isPredictedPositive:N,title:Vt(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Negative"],["Count",O.nNegative],["Classification",V]])})}}}else{let _=(e.rankBins??[]).filter(v=>v.evaluationId===t).sort((v,I)=>v.rankLower-I.rankLower);for(let v of _){let I=v.rankLower,O=v.rankUpper,M=v.positiveMass+v.negativeMass,E=I>=1-n-1e-9,C=E?"TP":"FN",N=E?"True Positive (TP)":"False Negative (FN)",K=E?"FP":"TN",F=E?"False Positive (FP)":"True Negative (TN)";if(M>0){let T=`[${I.toFixed(o)}, ${O.toFixed(o)}]`;v.positiveMass>0&&y.push({x1:I,x2:O,category:"Observed Positives",count:v.positiveMass,classificationCell:C,cellLabel:N,isPredictedPositive:E,title:Vt(o,[["Evaluation",h],["Population Rank Percentile",T],["Outcome","Observed Positive"],["Count",v.positiveMass],["Classification",N]])}),v.negativeMass>0&&y.push({x1:I,x2:O,category:"Observed Negatives",count:v.negativeMass,classificationCell:K,cellLabel:F,isPredictedPositive:E,title:Vt(o,[["Evaluation",h],["Population Rank Percentile",T],["Outcome","Observed Negative"],["Count",v.negativeMass],["Classification",F]])})}}}let x=s,g="Prediction Score",S="Count",w=1;if(r==="probability_threshold"){x=s,g="Prediction Score";let _=0,v=new Map;for(let I of y)v.set(I.x1,(v.get(I.x1)??0)+I.count);for(let I of v.values())_=Math.max(_,I);w=Math.max(1,Math.ceil(_*1.15))}else{x=1-n,g="Prediction Percentile";let _=0,v=new Map;for(let I of y)v.set(I.x1,(v.get(I.x1)??0)+I.count);for(let I of v.values())_=Math.max(_,I);w=Math.max(1,Math.ceil(_*1.15))}return{evalId:t,evalLabel:h,dim:r,currentValue:n,cutoff:s,realizedPpcr:c,cutoffX:x,xAxisLabel:g,yAxisLabel:S,yMax:w,totalN:u,performanceMetrics:p,confusion:l,ordinaryPlotData:y,zeroAtomPlotData:b}}function Uw(e,t={}){cf(e);let r=++BL,n=rn(2,t),{theme:o}=n,i=o.tip.digits,a=e.evaluations[0].id,s=P=>{let A=new Set;for(let R of e.operatingPoints)R.evaluationId===P&&A.add(R.type);let z=[];return A.has("probability_threshold")&&z.push("probability_threshold"),A.has("ppcr")&&z.push("ppcr"),z},c=(P,A)=>e.operatingPoints.filter(z=>z.evaluationId===P&&z.type===A).sort((z,R)=>z.value-R.value),f=s(a),u=e.operatingPoint?.dimension&&f.includes(e.operatingPoint.dimension)?e.operatingPoint.dimension:f[0]??"probability_threshold",p=(P,A)=>{let z=c(P,A);return[...new Set(z.map(R=>R.value))].sort((R,Q)=>R-Q)},l=(P,A,z)=>{let R=p(P,A);return R.length===0?0:z!==void 0&&R.some(Q=>Math.abs(Q-z)<1e-6)?z:R.some(Q=>Math.abs(Q-.5)<1e-6)?.5:R[0]},m=l(a,u),h="stacked",y="confusion_matrix_cell",b="all_observations",x=document.createElement("div");x.className="rtichoke-prediction-distribution",x.style.width=`${o.width}px`,x.style.maxWidth="100%";let g=document.createElement("div");g.className="rtichoke-prediction-distribution__controls";let S=document.createElement("select");S.className="rtichoke-prediction-distribution__select",S.setAttribute("aria-label","Evaluation"),S.style.display="none";let w=document.createElement("select");w.className="rtichoke-prediction-distribution__select",w.setAttribute("aria-label","Color bars by"),w.style.display="none";let _=document.createElement("option");_.value="confusion_matrix_cell",_.textContent="Confusion matrix cell";let v=document.createElement("option");v.value="observed_outcome",v.textContent="Observed outcome",w.append(_,v);let I=document.createElement("label");I.className="rtichoke-prediction-distribution__control-group";let O=document.createElement("select");O.className="rtichoke-prediction-distribution__select",O.setAttribute("aria-label","Condition on");let M=document.createElement("option");M.value="predicted_positives",M.textContent="Predicted positives";let E=document.createElement("option");E.value="predicted_negatives",E.textContent="Predicted negatives";let C=document.createElement("option");C.value="real_positives",C.textContent="Real positives";let N=document.createElement("option");N.value="real_negatives",N.textContent="Real negatives",O.append(M,E,C,N),I.append(O);let K=document.createElement("select");K.className="rtichoke-prediction-distribution__select",K.setAttribute("aria-label","Operating point dimension"),K.style.display="none",S.addEventListener("change",()=>{a=S.value,L()}),w.addEventListener("change",()=>{y=w.value,L()}),O.addEventListener("change",()=>{b=O.value,L()}),K.addEventListener("change",()=>{u=K.value,m=l(a,u,m),L()});let F=(P,A,z,R,Q)=>{let X=document.createElement("div");X.className="rtichoke-pd-radio-group",X.setAttribute("role","radiogroup"),X.setAttribute("aria-label",P);let le=document.createElement("span");le.className="rtichoke-pd-radio-group-label",le.textContent=`${P}:`,X.append(le);let xe=document.createElement("div");xe.className="rtichoke-pd-radio-options";for(let Me of z){let ne=document.createElement("label");ne.className="rtichoke-pd-radio-option";let me=document.createElement("input");me.type="radio",me.name=A,me.value=Me.value,me.checked=Me.value===R,me.addEventListener("change",()=>{me.checked&&Q(Me.value)});let Ge=document.createElement("span");Ge.textContent=Me.label,ne.append(me,Ge),xe.append(ne)}return X.append(xe),X},T=document.createElement("div");T.className="rtichoke-pd-controls-row";let V=()=>{T.replaceChildren(),S.replaceChildren();for(let P of e.evaluations){let A=document.createElement("option");A.value=P.id,A.textContent=P.label??P.model??P.population??P.id,S.append(A)}if(S.value=a,e.evaluations.length>1){let P=e.evaluations.map(z=>({value:z.id,label:z.label??z.model??z.population??z.id})),A=F("Reference Group",`pd-ref-group-${r}`,P,a,z=>{a=z,L()});T.append(A)}},D=document.createElement("div");D.className="rtichoke-pd-controls-row";let H=document.createElement("div");H.className="rtichoke-operating-point-control",H.style.marginLeft=`${o.margins.left}px`,H.style.marginRight=`${o.margins.right}px`;let G=`rtichoke-pd-slider-${++UL}`,Y=document.createElement("label");Y.className="rtichoke-operating-point-label",Y.htmlFor=G;let W=document.createElement("span"),Z=document.createElement("span");Z.className="rtichoke-operating-point-value",Y.append(W,Z);let q=document.createElement("input");q.type="range",q.id=G,q.className="rtichoke-operating-point-slider",H.append(Y,q);let ie=document.createElement("div");ie.className="rtichoke-legend",ie.style.paddingLeft=`${o.margins.left}px`;let ee=(P,A)=>{let z=document.createElement("div");z.className="rtichoke-legend-item";let R=document.createElement("span");R.className="rtichoke-legend-swatch";let Q=document.createElement("span");Q.className="rtichoke-legend-line",Q.style.backgroundColor=A,Q.style.border=`1px solid ${o.axis.color}`,Q.style.boxSizing="border-box",Q.style.height="10px",Q.style.borderRadius="2px",R.append(Q);let X=document.createElement("span");return X.className="rtichoke-legend-label",X.textContent=P,z.append(R,X),z},oe=document.createElement("div");oe.className="rtichoke-prediction-distribution__chart";let re=document.createElement("div");re.className="rtichoke-prediction-distribution__summary",g.append(T,D),x.append(g,re,H,ie,oe);let L=()=>{V(),D.replaceChildren(),w.value=y,O.value=b==="all_observations"?"predicted_positives":b,I.style.display=y==="observed_outcome"?"none":"inline-flex",K.replaceChildren();let P=s(a);for(let fe of P){let ge=document.createElement("option");ge.value=fe,ge.textContent=fe==="probability_threshold"?"Probability threshold":"PPCR",K.append(ge)}K.value=u;let A=F("Display",`pd-display-${r}`,[{value:"stacked",label:"Stacked"},{value:"mirrored",label:"Mirrored"}],h,fe=>{h=fe,L()}),z=F("Color Bars By",`pd-color-${r}`,[{value:"confusion_matrix_cell",label:"Confusion Matrix Cell"},{value:"observed_outcome",label:"Observed Outcome"}],y,fe=>{y=fe,L()});if(D.append(A,z,S,w,I,K),P.length>1){let fe=F("Dimension",`pd-dim-${r}`,[{value:"probability_threshold",label:"Probability Threshold"},{value:"ppcr",label:"PPCR"}],u,ge=>{u=ge,m=l(a,u,m),L()});D.append(fe)}let R=p(a,u),Q=R.find(fe=>Math.abs(fe-m)<1e-6);Q!==void 0?m=Q:m=l(a,u,m);let X=R.indexOf(m);q.min="0",q.max=String(Math.max(0,R.length-1)),q.step="1",q.value=String(Math.max(0,X));let le=u==="probability_threshold"?"Probability threshold":"PPCR";W.textContent=`${le}: `,Z.textContent=m.toFixed(i),q.setAttribute("aria-label",le),q.setAttribute("aria-valuetext",m.toFixed(i));let xe=Wk(e,a,u,m,i),{cutoff:Me,cutoffX:ne,xAxisLabel:me,yAxisLabel:Ge,yMax:Pt,totalN:ot,performanceMetrics:ht,confusion:er,ordinaryPlotData:No}=xe,qt=GL(o.predictionDistribution,b);ie.replaceChildren(),y==="observed_outcome"&&ie.append(ee("Observed Positives",o.predictionDistribution.observedPositive),ee("Observed Negatives",o.predictionDistribution.observedNegative));let tr=[],Ht=u==="probability_threshold"?`Cutoff = ${Me.toFixed(i)}`:`PPCR = ${m.toFixed(i)}`,ja=Pt,Ro=h==="mirrored"?-Pt:0;tr.push(Fs([ne],{stroke:o.axis.color,strokeWidth:2,strokeDasharray:"4,3"})),tr.push(Ea([{x:ne,label:Ht}],{x:"x",y:ja,text:"label",dy:-10,fill:o.axis.color,fontSize:11,fontWeight:700})),h==="mirrored"&&tr.push(Io([0],{stroke:o.axis.color,strokeWidth:1.5}));let Ua=fe=>{let ge="";if(y==="observed_outcome")ge=fe.category==="Observed Positives"?o.predictionDistribution.observedPositive:o.predictionDistribution.observedNegative;else switch(fe.classificationCell){case"TP":ge=qt.tp;break;case"FP":ge=qt.fp;break;case"TN":ge=qt.tn;break;case"FN":ge=qt.fn;break}let Se=!0;switch(b){case"all_observations":Se=!0;break;case"predicted_positives":Se=fe.isPredictedPositive;break;case"predicted_negatives":Se=!fe.isPredictedPositive;break;case"real_positives":Se=fe.category==="Observed Positives";break;case"real_negatives":Se=fe.category==="Observed Negatives";break}return{fill:ge,fillOpacity:Se?.88:.18,strokeOpacity:Se?.4:.1}};if(h==="stacked"){let fe=No.map(ge=>{let{fill:Se,fillOpacity:Yt,strokeOpacity:Kr}=Ua(ge);return{...ge,fill:Se,fillOpacity:Yt,strokeOpacity:Kr}});tr.push(Wi(fe,Fa({x1:"x1",x2:"x2",y:"count",fill:"fill",fillOpacity:"fillOpacity",stroke:o.axis.color,strokeOpacity:"strokeOpacity",strokeWidth:.75,title:ge=>ge.title,tip:!0})))}else{let fe=No.filter(Se=>Se.category==="Observed Positives").map(Se=>{let{fill:Yt,fillOpacity:Kr,strokeOpacity:mr}=Ua(Se);return{...Se,fill:Yt,fillOpacity:Kr,strokeOpacity:mr}}),ge=No.filter(Se=>Se.category==="Observed Negatives").map(Se=>{let{fill:Yt,fillOpacity:Kr,strokeOpacity:mr}=Ua(Se);return{...Se,fill:Yt,fillOpacity:Kr,strokeOpacity:mr}});fe.length>0&&tr.push(Wi(fe,{x1:"x1",x2:"x2",y1:0,y2:"count",fill:"fill",fillOpacity:"fillOpacity",stroke:o.axis.color,strokeOpacity:"strokeOpacity",strokeWidth:.75,title:Se=>Se.title,tip:!0})),ge.length>0&&tr.push(Wi(ge,{x1:"x1",x2:"x2",y1:0,y2:Se=>-Se.count,fill:"fill",fillOpacity:"fillOpacity",stroke:o.axis.color,strokeOpacity:"strokeOpacity",strokeWidth:.75,title:Se=>Se.title,tip:!0}))}let Du={width:o.width,height:Math.round(o.height*.68),marginTop:o.margins.top+10,marginRight:o.margins.right,marginBottom:o.margins.bottom,marginLeft:o.margins.left,style:{background:o.background,color:o.axis.color,fontFamily:o.typography.fontFamily,fontSize:`${o.typography.fontSize}px`},x:{label:me,domain:[0,1],grid:!1,line:!0,ticks:o.axis.ticks,tickSize:o.axis.tickSize,tickPadding:o.axis.tickPadding,tickFormat:o.axis.numberFormat},y:{label:Ge,domain:[Ro,ja],grid:!1,line:!0,ticks:5,tickSize:o.axis.tickSize,tickPadding:o.axis.tickPadding,tickFormat:fe=>String(Math.abs(fe))},marks:tr},_n=qn(Du,o);if(oe.replaceChildren(_n),re.replaceChildren(),er){let{tp:fe,fp:ge,tn:Se,fn:Yt,totalPositives:Kr,totalNegatives:mr,totalPredictedPos:sp,totalPredictedNeg:dr}=er,an=document.createElement("table");an.className="rtichoke-pd-matrix";let Lu=document.createElement("colgroup"),Ks=document.createElement("col");Ks.style.width="28%";let qs=document.createElement("col");qs.style.width="24%";let Hs=document.createElement("col");Hs.style.width="24%";let cp=document.createElement("col");cp.style.width="24%",Lu.append(Ks,qs,Hs,cp),an.append(Lu);let Vu=(et,ct)=>{let Qi=document.createElement("label");Qi.className=`rtichoke-pd-cond-option ${b===et?"rtichoke-pd-cond-option--active":""}`;let Hn=document.createElement("input");Hn.type="radio",Hn.name=`pd-cond-${r}`,Hn.value=et,Hn.checked=b===et,Hn.addEventListener("change",()=>{Hn.checked&&(b=et,L())});let li=document.createElement("span");return li.textContent=ct,Qi.append(Hn,li),Qi},o2=document.createElement("thead"),i2=document.createElement("tr"),Jg=document.createElement("th");Jg.className="rtichoke-pd-matrix__corner",Jg.append(Vu("all_observations","All Observations"));let eb=document.createElement("th");eb.className=`rtichoke-pd-matrix__col-header ${b==="real_positives"?"rtichoke-pd-matrix__col-header--active":""}`,eb.append(Vu("real_positives","Real Positive"));let tb=document.createElement("th");tb.className=`rtichoke-pd-matrix__col-header ${b==="real_negatives"?"rtichoke-pd-matrix__col-header--active":""}`,tb.append(Vu("real_negatives","Real Negative"));let a2=document.createElement("th");a2.className="rtichoke-pd-matrix__col-header rtichoke-pd-matrix__col-header--blank",i2.append(Jg,eb,tb,a2),o2.append(i2);let s2=document.createElement("tbody"),v6=y==="observed_outcome"?o.predictionDistribution.observedPositive:qt.tp,I6=y==="observed_outcome"?o.predictionDistribution.observedPositive:qt.fn,_6=y==="observed_outcome"?o.predictionDistribution.observedNegative:qt.fp,P6=y==="observed_outcome"?o.predictionDistribution.observedNegative:qt.tn,M6=o.predictionDistribution.observedPositive,T6=o.predictionDistribution.observedNegative,rb="#E5E7EB",O6=et=>{if(ot===0)return null;switch(b){case"all_observations":return`(${((et==="TP"?fe:et==="FP"?ge:et==="TN"?Se:Yt)/ot*100).toFixed(1)}%)`;case"predicted_positives":{let ct=fe+ge;return ct===0?null:et==="TP"?`(${(fe/ct*100).toFixed(1)}%)`:et==="FP"?`(${(ge/ct*100).toFixed(1)}%)`:null}case"predicted_negatives":{let ct=Se+Yt;return ct===0?null:et==="TN"?`(${(Se/ct*100).toFixed(1)}%)`:et==="FN"?`(${(Yt/ct*100).toFixed(1)}%)`:null}case"real_positives":{let ct=fe+Yt;return ct===0?null:et==="TP"?`(${(fe/ct*100).toFixed(1)}%)`:et==="FN"?`(${(Yt/ct*100).toFixed(1)}%)`:null}case"real_negatives":{let ct=Se+ge;return ct===0?null:et==="TN"?`(${(Se/ct*100).toFixed(1)}%)`:et==="FP"?`(${(ge/ct*100).toFixed(1)}%)`:null}}},up=(et,ct,Qi,Hn)=>{et.replaceChildren(),et.className=`rtichoke-prediction-distribution__cell--${ct.toLowerCase()} rtichoke-pd-matrix__cell`,et.style.backgroundColor="#ffffff",et.style.color=o.axis.color;let li=ot>0?Qi/ot*100:0,Ji=document.createElement("div");Ji.className="rtichoke-pd-cell-bar",Ji.style.width=`${li}%`,Ji.style.backgroundColor=Hn;let Ba=document.createElement("div");Ba.className="rtichoke-pd-cell-content";let cb=document.createElement("span");cb.className="rtichoke-pd-cell-label",cb.textContent=ct;let ub=document.createElement("div");ub.className="rtichoke-pd-cell-num";let fb=document.createElement("span");fb.className="rtichoke-pd-cell-count",fb.textContent=Qi.toLocaleString();let C6=O6(ct),lb=document.createElement("span");lb.className="rtichoke-pd-cell-pct",lb.textContent=C6??"",ub.append(fb,lb),Ba.append(cb,ub),et.append(Ji,Ba)},zu=(et,ct,Qi)=>{et.replaceChildren(),et.className="rtichoke-prediction-distribution__cell--total rtichoke-pd-matrix__cell",et.style.backgroundColor="#ffffff";let Hn=ot>0?ct/ot*100:0,li=document.createElement("div");li.className="rtichoke-pd-cell-bar",li.style.width=`${Hn}%`,li.style.backgroundColor=Qi;let Ji=document.createElement("div");Ji.className="rtichoke-pd-cell-content rtichoke-pd-cell-content--margin";let Ba=document.createElement("span");Ba.className="rtichoke-pd-cell-count",Ba.textContent=ct.toLocaleString(),Ji.append(Ba),et.append(li,Ji)},nb=document.createElement("tr");b==="predicted_positives"&&(nb.className="rtichoke-pd-matrix__row--active");let ob=document.createElement("th");ob.className=`rtichoke-pd-matrix__row-header ${b==="predicted_positives"?"rtichoke-pd-matrix__row-header--active":""}`,ob.append(Vu("predicted_positives","Predicted Positive"));let c2=document.createElement("td");up(c2,"TP",fe,v6);let u2=document.createElement("td");up(u2,"FP",ge,_6);let f2=document.createElement("td");zu(f2,sp,rb),nb.append(ob,c2,u2,f2);let ib=document.createElement("tr");b==="predicted_negatives"&&(ib.className="rtichoke-pd-matrix__row--active");let ab=document.createElement("th");ab.className=`rtichoke-pd-matrix__row-header ${b==="predicted_negatives"?"rtichoke-pd-matrix__row-header--active":""}`,ab.append(Vu("predicted_negatives","Predicted Negative"));let l2=document.createElement("td");up(l2,"FN",Yt,I6);let p2=document.createElement("td");up(p2,"TN",Se,P6);let m2=document.createElement("td");zu(m2,dr,rb),ib.append(ab,l2,p2,m2);let sb=document.createElement("tr");sb.className="rtichoke-pd-matrix__tot-row";let d2=document.createElement("th");d2.className="rtichoke-pd-matrix__row-header rtichoke-pd-matrix__row-header--blank";let h2=document.createElement("td");zu(h2,Kr,M6);let g2=document.createElement("td");zu(g2,mr,T6);let b2=document.createElement("td");zu(b2,ot,rb),sb.append(d2,h2,g2,b2),s2.append(nb,ib,sb),an.append(o2,s2),re.append(an)}if(ht){let fe=document.createElement("div");fe.className="rtichoke-pd-metrics-container rtichoke-performance-table";let ge=document.createElement("table");ge.className="rtichoke-performance-table__table rtichoke-pd-metrics-table";let Se=document.createElement("thead"),Yt=document.createElement("tr"),Kr=[{id:"sensitivity",label:"Sensitivity",val:ht.sensitivity,isEmphasized:b==="real_positives",isRatio:!1},{id:"specificity",label:"Specificity",val:ht.specificity,isEmphasized:b==="real_negatives",isRatio:!1},{id:"ppv",label:"PPV",val:ht.ppv,isEmphasized:b==="predicted_positives",isRatio:!1},{id:"npv",label:"NPV",val:ht.npv,isEmphasized:b==="predicted_negatives",isRatio:!1},{id:"lift",label:"Lift",val:ht.lift,isEmphasized:b==="predicted_positives",isRatio:!0}];for(let dr of Kr){let an=document.createElement("th");an.className=`rtichoke-performance-table__metric-header ${dr.isEmphasized?"rtichoke-pd-metric--emphasized-header":""}`,an.textContent=dr.label,Yt.append(an)}Se.append(Yt);let mr=document.createElement("tbody"),sp=document.createElement("tr");for(let dr of Kr){let an=document.createElement("td");an.className=`rtichoke-performance-table__metric ${dr.isEmphasized?"rtichoke-pd-metric--emphasized-cell":""}`;let Lu="\u2014";if(dr.val!==null&&dr.val!==void 0&&(Lu=dr.isRatio?dr.val.toFixed(2):(dr.val*100).toFixed(1)+"%"),dr.val!==null&&dr.val!==void 0&&isFinite(dr.val)){let qs=document.createElement("div");qs.className="rtichoke-performance-table__bar";let Hs=document.createElement("div");Hs.className="rtichoke-performance-table__bar-fill rtichoke-performance-table__bar-fill--positive";let cp=dr.isRatio?Math.min(100,dr.val/3*100):Math.min(100,dr.val*100);Hs.style.width=`${cp}%`,qs.append(Hs),an.append(qs)}let Ks=document.createElement("span");Ks.className="rtichoke-performance-table__cell-text",Ks.textContent=Lu,an.append(Ks),sp.append(an)}mr.append(sp),ge.append(Se,mr),fe.append(ge),re.append(fe)}};return q.addEventListener("input",()=>{let P=p(a,u),A=Number(q.value);A>=0&&A0?n[0]:void 0,i=[];if(n.length>1){let m=t.createElement("label");m.className="rtichoke-horizon-control",m.textContent="Fixed Time Horizon: ";let h=t.createElement("select");h.className="rtichoke-horizon-select",h.setAttribute("aria-label","Fixed Time Horizon");for(let y of n){let b=t.createElement("option");b.value=String(y),b.textContent=String(y),h.append(b)}h.value=String(o),h.addEventListener("change",()=>{o=Number(h.value),l()}),m.append(h),r.append(m)}let a=t.createElement("table");a.className="rtichoke-summary-metrics__table";let s=t.createElement("thead"),c=t.createElement("tr");for(let m of["Owner","Metric","Estimate"])c.append(qL(t,m));s.append(c),a.append(s);let f=new Map(e.evaluations.map(m=>[m.id,m])),u=new Map(e.populations.map(m=>[m.id,m])),p=t.createElement("tbody");for(let m of e.metrics){let h=t.createElement("tr"),y="",b="",x;if(m.metric==="auroc"){let S=f.get(m.owner.evaluationId);y=S.label??S.model??S.population??S.id,b="AUROC",h.dataset.metric="auroc",h.dataset.evaluationId=m.owner.evaluationId}else m.metric==="prevalence"?(y=u.get(m.owner.populationId).label,b="Prevalence",h.dataset.metric="prevalence",h.dataset.populationId=m.owner.populationId):m.metric==="event_risk"&&(y=u.get(m.owner.populationId).label,b="Event Probability",x=m.horizon,h.dataset.metric="event_risk",h.dataset.populationId=m.owner.populationId,h.dataset.horizon=String(m.horizon));h.append(Bw(t,y,"rtichoke-summary-metrics__owner"),Bw(t,b,"rtichoke-summary-metrics__metric"));let g=Bw(t,HL(m.estimate),"rtichoke-summary-metrics__estimate");m.estimate===null?g.dataset.unavailable="true":g.dataset.estimate=String(m.estimate),h.append(g),i.push({element:h,horizon:x}),p.append(h)}a.append(p),r.append(a);function l(){for(let{element:m,horizon:h}of i)h===void 0||h===o?m.style.display="":m.style.display="none"}return l(),r}function YL(e){switch(e.errorType){case $.ArrayContains:return"Expected array to contain at least one matching value";case $.ArrayMaxContains:return`Expected array to contain no more than ${e.schema.maxContains} matching values`;case $.ArrayMinContains:return`Expected array to contain at least ${e.schema.minContains} matching values`;case $.ArrayMaxItems:return`Expected array length to be less or equal to ${e.schema.maxItems}`;case $.ArrayMinItems:return`Expected array length to be greater or equal to ${e.schema.minItems}`;case $.ArrayUniqueItems:return"Expected array elements to be unique";case $.Array:return"Expected array";case $.AsyncIterator:return"Expected AsyncIterator";case $.BigIntExclusiveMaximum:return`Expected bigint to be less than ${e.schema.exclusiveMaximum}`;case $.BigIntExclusiveMinimum:return`Expected bigint to be greater than ${e.schema.exclusiveMinimum}`;case $.BigIntMaximum:return`Expected bigint to be less or equal to ${e.schema.maximum}`;case $.BigIntMinimum:return`Expected bigint to be greater or equal to ${e.schema.minimum}`;case $.BigIntMultipleOf:return`Expected bigint to be a multiple of ${e.schema.multipleOf}`;case $.BigInt:return"Expected bigint";case $.Boolean:return"Expected boolean";case $.DateExclusiveMinimumTimestamp:return`Expected Date timestamp to be greater than ${e.schema.exclusiveMinimumTimestamp}`;case $.DateExclusiveMaximumTimestamp:return`Expected Date timestamp to be less than ${e.schema.exclusiveMaximumTimestamp}`;case $.DateMinimumTimestamp:return`Expected Date timestamp to be greater or equal to ${e.schema.minimumTimestamp}`;case $.DateMaximumTimestamp:return`Expected Date timestamp to be less or equal to ${e.schema.maximumTimestamp}`;case $.DateMultipleOfTimestamp:return`Expected Date timestamp to be a multiple of ${e.schema.multipleOfTimestamp}`;case $.Date:return"Expected Date";case $.Function:return"Expected function";case $.IntegerExclusiveMaximum:return`Expected integer to be less than ${e.schema.exclusiveMaximum}`;case $.IntegerExclusiveMinimum:return`Expected integer to be greater than ${e.schema.exclusiveMinimum}`;case $.IntegerMaximum:return`Expected integer to be less or equal to ${e.schema.maximum}`;case $.IntegerMinimum:return`Expected integer to be greater or equal to ${e.schema.minimum}`;case $.IntegerMultipleOf:return`Expected integer to be a multiple of ${e.schema.multipleOf}`;case $.Integer:return"Expected integer";case $.IntersectUnevaluatedProperties:return"Unexpected property";case $.Intersect:return"Expected all values to match";case $.Iterator:return"Expected Iterator";case $.Literal:return`Expected ${typeof e.schema.const=="string"?`'${e.schema.const}'`:e.schema.const}`;case $.Never:return"Never";case $.Not:return"Value should not match";case $.Null:return"Expected null";case $.NumberExclusiveMaximum:return`Expected number to be less than ${e.schema.exclusiveMaximum}`;case $.NumberExclusiveMinimum:return`Expected number to be greater than ${e.schema.exclusiveMinimum}`;case $.NumberMaximum:return`Expected number to be less or equal to ${e.schema.maximum}`;case $.NumberMinimum:return`Expected number to be greater or equal to ${e.schema.minimum}`;case $.NumberMultipleOf:return`Expected number to be a multiple of ${e.schema.multipleOf}`;case $.Number:return"Expected number";case $.Object:return"Expected object";case $.ObjectAdditionalProperties:return"Unexpected property";case $.ObjectMaxProperties:return`Expected object to have no more than ${e.schema.maxProperties} properties`;case $.ObjectMinProperties:return`Expected object to have at least ${e.schema.minProperties} properties`;case $.ObjectRequiredProperty:return"Expected required property";case $.Promise:return"Expected Promise";case $.RegExp:return"Expected string to match regular expression";case $.StringFormatUnknown:return`Unknown format '${e.schema.format}'`;case $.StringFormat:return`Expected string to match '${e.schema.format}' format`;case $.StringMaxLength:return`Expected string length less or equal to ${e.schema.maxLength}`;case $.StringMinLength:return`Expected string length greater or equal to ${e.schema.minLength}`;case $.StringPattern:return`Expected string to match '${e.schema.pattern}'`;case $.String:return"Expected string";case $.Symbol:return"Expected symbol";case $.TupleLength:return`Expected tuple to have ${e.schema.maxItems||0} elements`;case $.Tuple:return"Expected tuple";case $.Uint8ArrayMaxByteLength:return`Expected byte length less or equal to ${e.schema.maxByteLength}`;case $.Uint8ArrayMinByteLength:return`Expected byte length greater or equal to ${e.schema.minByteLength}`;case $.Uint8Array:return"Expected Uint8Array";case $.Undefined:return"Expected undefined";case $.Union:return"Expected union value";case $.Void:return"Expected void";case $.Kind:return`Expected kind '${e.schema[U]}'`;default:return"Unknown error type"}}var WL=YL;function Xk(){return WL}var Kw=class extends be{constructor(t){super(`Unable to dereference schema with $id '${t.$ref}'`),this.schema=t}};function XL(e,t){let r=t.find(n=>n.$id===e.$ref);if(r===void 0)throw new Kw(e);return Ve(r,t)}function fr(e,t){return!Be(e.$id)||t.some(r=>r.$id===e.$id)||t.push(e),t}function Ve(e,t){return e[U]==="This"||e[U]==="Ref"?XL(e,t):e}var qw=class extends be{constructor(t){super("Unable to hash value"),this.value=t}},Sn;(function(e){e[e.Undefined=0]="Undefined",e[e.Null=1]="Null",e[e.Boolean=2]="Boolean",e[e.Number=3]="Number",e[e.String=4]="String",e[e.Object=5]="Object",e[e.Array=6]="Array",e[e.Date=7]="Date",e[e.Uint8Array=8]="Uint8Array",e[e.Symbol=9]="Symbol",e[e.BigInt=10]="BigInt"})(Sn||(Sn={}));var Eu=BigInt("14695981039346656037"),[ZL,QL]=[BigInt("1099511628211"),BigInt("18446744073709551616")],JL=Array.from({length:256}).map((e,t)=>BigInt(t)),Zk=new Float64Array(1),Qk=new DataView(Zk.buffer),Jk=new Uint8Array(Zk.buffer);function*eV(e){let t=e===0?1:Math.ceil(Math.floor(Math.log2(e)+1)/8);for(let r=0;r>8*(t-1-r)&255}function tV(e){Er(Sn.Array);for(let t of e)Au(t)}function rV(e){Er(Sn.Boolean),Er(e?1:0)}function nV(e){Er(Sn.BigInt),Qk.setBigInt64(0,e);for(let t of Jk)Er(t)}function oV(e){Er(Sn.Date),Au(e.getTime())}function iV(e){Er(Sn.Null)}function aV(e){Er(Sn.Number),Qk.setFloat64(0,e);for(let t of Jk)Er(t)}function sV(e){Er(Sn.Object);for(let t of globalThis.Object.getOwnPropertyNames(e).sort())Au(t),Au(e[t])}function cV(e){Er(Sn.String);for(let t=0;t=e.minItems)||Te(e.maxItems)&&!(r.length<=e.maxItems))return!1;for(let i of r)if(!lr(e.items,t,i))return!1;if(e.uniqueItems===!0&&!(function(){let i=new Set;for(let a of r){let s=Fu(a);if(i.has(s))return!1;i.add(s)}return!0})())return!1;if(!(Te(e.contains)||lt(e.minContains)||lt(e.maxContains)))return!0;let n=Te(e.contains)?e.contains:_e(),o=r.reduce((i,a)=>lr(n,t,a)?i+1:i,0);return!(o===0||lt(e.minContains)&&oe.maxContains)}function gV(e,t,r){return pp(r)}function bV(e,t,r){return!(!Yn(r)||Te(e.exclusiveMaximum)&&!(re.exclusiveMinimum)||Te(e.maximum)&&!(r<=e.maximum)||Te(e.minimum)&&!(r>=e.minimum)||Te(e.multipleOf)&&r%e.multipleOf!==BigInt(0))}function yV(e,t,r){return Eo(r)}function xV(e,t,r){return lr(e.returns,t,r.prototype)}function wV(e,t,r){return!(!Ar(r)||Te(e.exclusiveMaximumTimestamp)&&!(r.getTime()e.exclusiveMinimumTimestamp)||Te(e.maximumTimestamp)&&!(r.getTime()<=e.maximumTimestamp)||Te(e.minimumTimestamp)&&!(r.getTime()>=e.minimumTimestamp)||Te(e.multipleOfTimestamp)&&r.getTime()%e.multipleOfTimestamp!==0)}function SV(e,t,r){return ea(r)}function vV(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return lr(o,[...t,...n],r)}function IV(e,t,r){return!(!hp(r)||Te(e.exclusiveMaximum)&&!(re.exclusiveMinimum)||Te(e.maximum)&&!(r<=e.maximum)||Te(e.minimum)&&!(r>=e.minimum)||Te(e.multipleOf)&&r%e.multipleOf!==0)}function _V(e,t,r){let n=e.allOf.every(o=>lr(o,t,r));if(e.unevaluatedProperties===!1){let o=new RegExp(cc(e)),i=Object.getOwnPropertyNames(r).every(a=>o.test(a));return n&&i}else if(bt(e.unevaluatedProperties)){let o=new RegExp(cc(e)),i=Object.getOwnPropertyNames(r).every(a=>o.test(a)||lr(e.unevaluatedProperties,t,r[a]));return n&&i}else return n}function PV(e,t,r){return mp(r)}function MV(e,t,r){return r===e.const}function TV(e,t,r){return!1}function OV(e,t,r){return!lr(e.not,t,r)}function CV(e,t,r){return di(r)}function kV(e,t,r){return!(!zt.IsNumberLike(r)||Te(e.exclusiveMaximum)&&!(re.exclusiveMinimum)||Te(e.minimum)&&!(r>=e.minimum)||Te(e.maximum)&&!(r<=e.maximum)||Te(e.multipleOf)&&r%e.multipleOf!==0)}function NV(e,t,r){if(!zt.IsObjectLike(r)||Te(e.minProperties)&&!(Object.getOwnPropertyNames(r).length>=e.minProperties)||Te(e.maxProperties)&&!(Object.getOwnPropertyNames(r).length<=e.maxProperties))return!1;let n=Object.getOwnPropertyNames(e.properties);for(let o of n){let i=e.properties[o];if(e.required&&e.required.includes(o)){if(!lr(i,t,r[o])||(Ja(i)||pV(i))&&!(o in r))return!1}else if(zt.IsExactOptionalProperty(r,o)&&!lr(i,t,r[o]))return!1}if(e.additionalProperties===!1){let o=Object.getOwnPropertyNames(r);return e.required&&e.required.length===n.length&&o.length===n.length?!0:o.every(i=>n.includes(i))}else return typeof e.additionalProperties=="object"?Object.getOwnPropertyNames(r).every(i=>n.includes(i)||lr(e.additionalProperties,t,r[i])):!0}function RV(e,t,r){return dp(r)}function EV(e,t,r){if(!zt.IsRecordLike(r)||Te(e.minProperties)&&!(Object.getOwnPropertyNames(r).length>=e.minProperties)||Te(e.maxProperties)&&!(Object.getOwnPropertyNames(r).length<=e.maxProperties))return!1;let[n,o]=Object.entries(e.patternProperties)[0],i=new RegExp(n),a=Object.entries(r).every(([f,u])=>i.test(f)?lr(o,t,u):!0),s=typeof e.additionalProperties=="object"?Object.entries(r).every(([f,u])=>i.test(f)?!0:lr(e.additionalProperties,t,u)):!0,c=e.additionalProperties===!1?Object.getOwnPropertyNames(r).every(f=>i.test(f)):!0;return a&&s&&c}function AV(e,t,r){return lr(Ve(e,t),t,r)}function FV(e,t,r){let n=new RegExp(e.source,e.flags);return Te(e.minLength)&&!(r.length>=e.minLength)||Te(e.maxLength)&&!(r.length<=e.maxLength)?!1:n.test(r)}function $V(e,t,r){return!Be(r)||Te(e.minLength)&&!(r.length>=e.minLength)||Te(e.maxLength)&&!(r.length<=e.maxLength)||Te(e.pattern)&&!new RegExp(e.pattern).test(r)?!1:Te(e.format)?ia.Has(e.format)?ia.Get(e.format)(r):!1:!0}function DV(e,t,r){return hi(r)}function LV(e,t,r){return Be(r)&&new RegExp(e.pattern).test(r)}function VV(e,t,r){return lr(Ve(e,t),t,r)}function zV(e,t,r){if(!de(r)||e.items===void 0&&r.length!==0||r.length!==e.maxItems)return!1;if(!e.items)return!0;for(let n=0;nlr(n,t,r))}function BV(e,t,r){return!(!Ws(r)||Te(e.maxByteLength)&&!(r.length<=e.maxByteLength)||Te(e.minByteLength)&&!(r.length>=e.minByteLength))}function GV(e,t,r){return!0}function KV(e,t,r){return zt.IsVoidLike(r)}function qV(e,t,r){return ro.Has(e[U])?ro.Get(e[U])(e,r):!1}function lr(e,t,r){let n=Te(e.$id)?fr(e,t):t,o=e;switch(o[U]){case"Any":return mV(o,n,r);case"Argument":return dV(o,n,r);case"Array":return hV(o,n,r);case"AsyncIterator":return gV(o,n,r);case"BigInt":return bV(o,n,r);case"Boolean":return yV(o,n,r);case"Constructor":return xV(o,n,r);case"Date":return wV(o,n,r);case"Function":return SV(o,n,r);case"Import":return vV(o,n,r);case"Integer":return IV(o,n,r);case"Intersect":return _V(o,n,r);case"Iterator":return PV(o,n,r);case"Literal":return MV(o,n,r);case"Never":return TV(o,n,r);case"Not":return OV(o,n,r);case"Null":return CV(o,n,r);case"Number":return kV(o,n,r);case"Object":return NV(o,n,r);case"Promise":return RV(o,n,r);case"Record":return EV(o,n,r);case"Ref":return AV(o,n,r);case"RegExp":return FV(o,n,r);case"String":return $V(o,n,r);case"Symbol":return DV(o,n,r);case"TemplateLiteral":return LV(o,n,r);case"This":return VV(o,n,r);case"Tuple":return zV(o,n,r);case"Undefined":return jV(o,n,r);case"Union":return UV(o,n,r);case"Uint8Array":return BV(o,n,r);case"Unknown":return GV(o,n,r);case"Void":return KV(o,n,r);default:if(!ro.Has(o[U]))throw new Hw(o);return qV(o,n,r)}}function Ie(...e){return e.length===3?lr(e[0],e[1],e[2]):lr(e[0],[],e[1])}var $;(function(e){e[e.ArrayContains=0]="ArrayContains",e[e.ArrayMaxContains=1]="ArrayMaxContains",e[e.ArrayMaxItems=2]="ArrayMaxItems",e[e.ArrayMinContains=3]="ArrayMinContains",e[e.ArrayMinItems=4]="ArrayMinItems",e[e.ArrayUniqueItems=5]="ArrayUniqueItems",e[e.Array=6]="Array",e[e.AsyncIterator=7]="AsyncIterator",e[e.BigIntExclusiveMaximum=8]="BigIntExclusiveMaximum",e[e.BigIntExclusiveMinimum=9]="BigIntExclusiveMinimum",e[e.BigIntMaximum=10]="BigIntMaximum",e[e.BigIntMinimum=11]="BigIntMinimum",e[e.BigIntMultipleOf=12]="BigIntMultipleOf",e[e.BigInt=13]="BigInt",e[e.Boolean=14]="Boolean",e[e.DateExclusiveMaximumTimestamp=15]="DateExclusiveMaximumTimestamp",e[e.DateExclusiveMinimumTimestamp=16]="DateExclusiveMinimumTimestamp",e[e.DateMaximumTimestamp=17]="DateMaximumTimestamp",e[e.DateMinimumTimestamp=18]="DateMinimumTimestamp",e[e.DateMultipleOfTimestamp=19]="DateMultipleOfTimestamp",e[e.Date=20]="Date",e[e.Function=21]="Function",e[e.IntegerExclusiveMaximum=22]="IntegerExclusiveMaximum",e[e.IntegerExclusiveMinimum=23]="IntegerExclusiveMinimum",e[e.IntegerMaximum=24]="IntegerMaximum",e[e.IntegerMinimum=25]="IntegerMinimum",e[e.IntegerMultipleOf=26]="IntegerMultipleOf",e[e.Integer=27]="Integer",e[e.IntersectUnevaluatedProperties=28]="IntersectUnevaluatedProperties",e[e.Intersect=29]="Intersect",e[e.Iterator=30]="Iterator",e[e.Kind=31]="Kind",e[e.Literal=32]="Literal",e[e.Never=33]="Never",e[e.Not=34]="Not",e[e.Null=35]="Null",e[e.NumberExclusiveMaximum=36]="NumberExclusiveMaximum",e[e.NumberExclusiveMinimum=37]="NumberExclusiveMinimum",e[e.NumberMaximum=38]="NumberMaximum",e[e.NumberMinimum=39]="NumberMinimum",e[e.NumberMultipleOf=40]="NumberMultipleOf",e[e.Number=41]="Number",e[e.ObjectAdditionalProperties=42]="ObjectAdditionalProperties",e[e.ObjectMaxProperties=43]="ObjectMaxProperties",e[e.ObjectMinProperties=44]="ObjectMinProperties",e[e.ObjectRequiredProperty=45]="ObjectRequiredProperty",e[e.Object=46]="Object",e[e.Promise=47]="Promise",e[e.RegExp=48]="RegExp",e[e.StringFormatUnknown=49]="StringFormatUnknown",e[e.StringFormat=50]="StringFormat",e[e.StringMaxLength=51]="StringMaxLength",e[e.StringMinLength=52]="StringMinLength",e[e.StringPattern=53]="StringPattern",e[e.String=54]="String",e[e.Symbol=55]="Symbol",e[e.TupleLength=56]="TupleLength",e[e.Tuple=57]="Tuple",e[e.Uint8ArrayMaxByteLength=58]="Uint8ArrayMaxByteLength",e[e.Uint8ArrayMinByteLength=59]="Uint8ArrayMinByteLength",e[e.Uint8Array=60]="Uint8Array",e[e.Undefined=61]="Undefined",e[e.Union=62]="Union",e[e.Void=63]="Void"})($||($={}));var Yw=class extends be{constructor(t){super("Unknown type"),this.schema=t}};function Xi(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function Oe(e){return e!==void 0}var Va=class{constructor(t){this.iterator=t}[Symbol.iterator](){return this.iterator}First(){let t=this.iterator.next();return t.done?void 0:t.value}};function te(e,t,r,n,o=[]){return{type:e,schema:t,path:r,value:n,message:Xk()({errorType:e,path:r,schema:t,value:n,errors:o}),errors:o}}function*HV(e,t,r,n){}function*YV(e,t,r,n){}function*WV(e,t,r,n){if(!de(n))return yield te($.Array,e,r,n);Oe(e.minItems)&&!(n.length>=e.minItems)&&(yield te($.ArrayMinItems,e,r,n)),Oe(e.maxItems)&&!(n.length<=e.maxItems)&&(yield te($.ArrayMaxItems,e,r,n));for(let a=0;apr(o,t,`${r}${c}`,s).next().done===!0?a+1:a,0);i===0&&(yield te($.ArrayContains,e,r,n)),lt(e.minContains)&&ie.maxContains&&(yield te($.ArrayMaxContains,e,r,n))}function*XV(e,t,r,n){pp(n)||(yield te($.AsyncIterator,e,r,n))}function*ZV(e,t,r,n){if(!Yn(n))return yield te($.BigInt,e,r,n);Oe(e.exclusiveMaximum)&&!(ne.exclusiveMinimum)&&(yield te($.BigIntExclusiveMinimum,e,r,n)),Oe(e.maximum)&&!(n<=e.maximum)&&(yield te($.BigIntMaximum,e,r,n)),Oe(e.minimum)&&!(n>=e.minimum)&&(yield te($.BigIntMinimum,e,r,n)),Oe(e.multipleOf)&&n%e.multipleOf!==BigInt(0)&&(yield te($.BigIntMultipleOf,e,r,n))}function*QV(e,t,r,n){Eo(n)||(yield te($.Boolean,e,r,n))}function*JV(e,t,r,n){yield*pr(e.returns,t,r,n.prototype)}function*ez(e,t,r,n){if(!Ar(n))return yield te($.Date,e,r,n);Oe(e.exclusiveMaximumTimestamp)&&!(n.getTime()e.exclusiveMinimumTimestamp)&&(yield te($.DateExclusiveMinimumTimestamp,e,r,n)),Oe(e.maximumTimestamp)&&!(n.getTime()<=e.maximumTimestamp)&&(yield te($.DateMaximumTimestamp,e,r,n)),Oe(e.minimumTimestamp)&&!(n.getTime()>=e.minimumTimestamp)&&(yield te($.DateMinimumTimestamp,e,r,n)),Oe(e.multipleOfTimestamp)&&n.getTime()%e.multipleOfTimestamp!==0&&(yield te($.DateMultipleOfTimestamp,e,r,n))}function*tz(e,t,r,n){ea(n)||(yield te($.Function,e,r,n))}function*rz(e,t,r,n){let o=globalThis.Object.values(e.$defs),i=e.$defs[e.$ref];yield*pr(i,[...t,...o],r,n)}function*nz(e,t,r,n){if(!hp(n))return yield te($.Integer,e,r,n);Oe(e.exclusiveMaximum)&&!(ne.exclusiveMinimum)&&(yield te($.IntegerExclusiveMinimum,e,r,n)),Oe(e.maximum)&&!(n<=e.maximum)&&(yield te($.IntegerMaximum,e,r,n)),Oe(e.minimum)&&!(n>=e.minimum)&&(yield te($.IntegerMinimum,e,r,n)),Oe(e.multipleOf)&&n%e.multipleOf!==0&&(yield te($.IntegerMultipleOf,e,r,n))}function*oz(e,t,r,n){let o=!1;for(let i of e.allOf)for(let a of pr(i,t,r,n))o=!0,yield a;if(o)return yield te($.Intersect,e,r,n);if(e.unevaluatedProperties===!1){let i=new RegExp(cc(e));for(let a of Object.getOwnPropertyNames(n))i.test(a)||(yield te($.IntersectUnevaluatedProperties,e,`${r}/${a}`,n))}if(typeof e.unevaluatedProperties=="object"){let i=new RegExp(cc(e));for(let a of Object.getOwnPropertyNames(n))if(!i.test(a)){let s=pr(e.unevaluatedProperties,t,`${r}/${a}`,n[a]).next();s.done||(yield s.value)}}}function*iz(e,t,r,n){mp(n)||(yield te($.Iterator,e,r,n))}function*az(e,t,r,n){n!==e.const&&(yield te($.Literal,e,r,n))}function*sz(e,t,r,n){yield te($.Never,e,r,n)}function*cz(e,t,r,n){pr(e.not,t,r,n).next().done===!0&&(yield te($.Not,e,r,n))}function*uz(e,t,r,n){di(n)||(yield te($.Null,e,r,n))}function*fz(e,t,r,n){if(!zt.IsNumberLike(n))return yield te($.Number,e,r,n);Oe(e.exclusiveMaximum)&&!(ne.exclusiveMinimum)&&(yield te($.NumberExclusiveMinimum,e,r,n)),Oe(e.maximum)&&!(n<=e.maximum)&&(yield te($.NumberMaximum,e,r,n)),Oe(e.minimum)&&!(n>=e.minimum)&&(yield te($.NumberMinimum,e,r,n)),Oe(e.multipleOf)&&n%e.multipleOf!==0&&(yield te($.NumberMultipleOf,e,r,n))}function*lz(e,t,r,n){if(!zt.IsObjectLike(n))return yield te($.Object,e,r,n);Oe(e.minProperties)&&!(Object.getOwnPropertyNames(n).length>=e.minProperties)&&(yield te($.ObjectMinProperties,e,r,n)),Oe(e.maxProperties)&&!(Object.getOwnPropertyNames(n).length<=e.maxProperties)&&(yield te($.ObjectMaxProperties,e,r,n));let o=Array.isArray(e.required)?e.required:[],i=Object.getOwnPropertyNames(e.properties),a=Object.getOwnPropertyNames(n);for(let s of o)a.includes(s)||(yield te($.ObjectRequiredProperty,e.properties[s],`${r}/${Xi(s)}`,void 0));if(e.additionalProperties===!1)for(let s of a)i.includes(s)||(yield te($.ObjectAdditionalProperties,e,`${r}/${Xi(s)}`,n[s]));if(typeof e.additionalProperties=="object")for(let s of a)i.includes(s)||(yield*pr(e.additionalProperties,t,`${r}/${Xi(s)}`,n[s]));for(let s of i){let c=e.properties[s];e.required&&e.required.includes(s)?(yield*pr(c,t,`${r}/${Xi(s)}`,n[s]),Ja(e)&&!(s in n)&&(yield te($.ObjectRequiredProperty,c,`${r}/${Xi(s)}`,void 0))):zt.IsExactOptionalProperty(n,s)&&(yield*pr(c,t,`${r}/${Xi(s)}`,n[s]))}}function*pz(e,t,r,n){dp(n)||(yield te($.Promise,e,r,n))}function*mz(e,t,r,n){if(!zt.IsRecordLike(n))return yield te($.Object,e,r,n);Oe(e.minProperties)&&!(Object.getOwnPropertyNames(n).length>=e.minProperties)&&(yield te($.ObjectMinProperties,e,r,n)),Oe(e.maxProperties)&&!(Object.getOwnPropertyNames(n).length<=e.maxProperties)&&(yield te($.ObjectMaxProperties,e,r,n));let[o,i]=Object.entries(e.patternProperties)[0],a=new RegExp(o);for(let[s,c]of Object.entries(n))a.test(s)&&(yield*pr(i,t,`${r}/${Xi(s)}`,c));if(typeof e.additionalProperties=="object")for(let[s,c]of Object.entries(n))a.test(s)||(yield*pr(e.additionalProperties,t,`${r}/${Xi(s)}`,c));if(e.additionalProperties===!1){for(let[s,c]of Object.entries(n))if(!a.test(s))return yield te($.ObjectAdditionalProperties,e,`${r}/${Xi(s)}`,c)}}function*dz(e,t,r,n){yield*pr(Ve(e,t),t,r,n)}function*hz(e,t,r,n){if(!Be(n))return yield te($.String,e,r,n);if(Oe(e.minLength)&&!(n.length>=e.minLength)&&(yield te($.StringMinLength,e,r,n)),Oe(e.maxLength)&&!(n.length<=e.maxLength)&&(yield te($.StringMaxLength,e,r,n)),!new RegExp(e.source,e.flags).test(n))return yield te($.RegExp,e,r,n)}function*gz(e,t,r,n){if(!Be(n))return yield te($.String,e,r,n);Oe(e.minLength)&&!(n.length>=e.minLength)&&(yield te($.StringMinLength,e,r,n)),Oe(e.maxLength)&&!(n.length<=e.maxLength)&&(yield te($.StringMaxLength,e,r,n)),Be(e.pattern)&&(new RegExp(e.pattern).test(n)||(yield te($.StringPattern,e,r,n))),Be(e.format)&&(ia.Has(e.format)?ia.Get(e.format)(n)||(yield te($.StringFormat,e,r,n)):yield te($.StringFormatUnknown,e,r,n))}function*bz(e,t,r,n){hi(n)||(yield te($.Symbol,e,r,n))}function*yz(e,t,r,n){if(!Be(n))return yield te($.String,e,r,n);new RegExp(e.pattern).test(n)||(yield te($.StringPattern,e,r,n))}function*xz(e,t,r,n){yield*pr(Ve(e,t),t,r,n)}function*wz(e,t,r,n){if(!de(n))return yield te($.Tuple,e,r,n);if(e.items===void 0&&n.length!==0)return yield te($.TupleLength,e,r,n);if(n.length!==e.maxItems)return yield te($.TupleLength,e,r,n);if(e.items)for(let o=0;onew Va(pr(i,t,r,n)));yield te($.Union,e,r,n,o)}function*Iz(e,t,r,n){if(!Ws(n))return yield te($.Uint8Array,e,r,n);Oe(e.maxByteLength)&&!(n.length<=e.maxByteLength)&&(yield te($.Uint8ArrayMaxByteLength,e,r,n)),Oe(e.minByteLength)&&!(n.length>=e.minByteLength)&&(yield te($.Uint8ArrayMinByteLength,e,r,n))}function*_z(e,t,r,n){}function*Pz(e,t,r,n){zt.IsVoidLike(n)||(yield te($.Void,e,r,n))}function*Mz(e,t,r,n){ro.Get(e[U])(e,n)||(yield te($.Kind,e,r,n))}function*pr(e,t,r,n){let o=Oe(e.$id)?[...t,e]:t,i=e;switch(i[U]){case"Any":return yield*HV(i,o,r,n);case"Argument":return yield*YV(i,o,r,n);case"Array":return yield*WV(i,o,r,n);case"AsyncIterator":return yield*XV(i,o,r,n);case"BigInt":return yield*ZV(i,o,r,n);case"Boolean":return yield*QV(i,o,r,n);case"Constructor":return yield*JV(i,o,r,n);case"Date":return yield*ez(i,o,r,n);case"Function":return yield*tz(i,o,r,n);case"Import":return yield*rz(i,o,r,n);case"Integer":return yield*nz(i,o,r,n);case"Intersect":return yield*oz(i,o,r,n);case"Iterator":return yield*iz(i,o,r,n);case"Literal":return yield*az(i,o,r,n);case"Never":return yield*sz(i,o,r,n);case"Not":return yield*cz(i,o,r,n);case"Null":return yield*uz(i,o,r,n);case"Number":return yield*fz(i,o,r,n);case"Object":return yield*lz(i,o,r,n);case"Promise":return yield*pz(i,o,r,n);case"Record":return yield*mz(i,o,r,n);case"Ref":return yield*dz(i,o,r,n);case"RegExp":return yield*hz(i,o,r,n);case"String":return yield*gz(i,o,r,n);case"Symbol":return yield*bz(i,o,r,n);case"TemplateLiteral":return yield*yz(i,o,r,n);case"This":return yield*xz(i,o,r,n);case"Tuple":return yield*wz(i,o,r,n);case"Undefined":return yield*Sz(i,o,r,n);case"Union":return yield*vz(i,o,r,n);case"Uint8Array":return yield*Iz(i,o,r,n);case"Unknown":return yield*_z(i,o,r,n);case"Void":return yield*Pz(i,o,r,n);default:if(!ro.Has(i[U]))throw new Yw(e);return yield*Mz(i,o,r,n)}}function za(...e){let t=e.length===3?pr(e[0],e[1],"",e[2]):pr(e[0],[],"",e[1]);return new Va(t)}var Tz=function(e,t,r,n,o){if(n==="m")throw new TypeError("Private method is not writable");if(n==="a"&&!o)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return n==="a"?o.call(e,r):o?o.value=r:t.set(e,r),r},t6=function(e,t,r,n){if(r==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?n:r==="a"?n.call(e):n?n.value:t.get(e)},Ww,Eg,r6,Xw=class extends be{constructor(t){let r=t.First();super(r===void 0?"Invalid Value":r.message),Ww.add(this),Eg.set(this,void 0),Tz(this,Eg,t,"f"),this.error=r}Errors(){return new Va(t6(this,Ww,"m",r6).call(this))}};Eg=new WeakMap,Ww=new WeakSet,r6=function*(){this.error&&(yield this.error),yield*t6(this,Eg,"f")};function e6(e,t,r){if(!Ie(e,t,r))throw new Xw(za(e,t,r))}function Ag(...e){return e.length===3?e6(e[0],e[1],e[2]):e6(e[0],[],e[1])}function Oz(e){let t={};for(let r of Object.getOwnPropertyNames(e))t[r]=Ee(e[r]);for(let r of Object.getOwnPropertySymbols(e))t[r]=Ee(e[r]);return t}function Cz(e){return e.map(t=>Ee(t))}function kz(e){return e.slice()}function Nz(e){return new Map(Ee([...e.entries()]))}function Rz(e){return new Set(Ee([...e.entries()]))}function Ez(e){return new Date(e.toISOString())}function Ee(e){if(de(e))return Cz(e);if(Ar(e))return Ez(e);if(Pn(e))return kz(e);if(y2(e))return Nz(e);if(x2(e))return Rz(e);if(we(e))return Oz(e);if(cn(e))return e;throw new Error("ValueClone: Unable to clone value")}var vn=class extends be{constructor(t,r){super(r),this.schema=t}};function Ae(e){return ea(e)?e():Ee(e)}function Az(e,t){return pe(e,"default")?Ae(e.default):{}}function Fz(e,t){return{}}function $z(e,t){if(e.uniqueItems===!0&&!pe(e,"default"))throw new vn(e,"Array with the uniqueItems constraint requires a default value");if("contains"in e&&!pe(e,"default"))throw new vn(e,"Array with the contains constraint requires a default value");return"default"in e?Ae(e.default):e.minItems!==void 0?Array.from({length:e.minItems}).map(r=>In(e.items,t)):[]}function Dz(e,t){return pe(e,"default")?Ae(e.default):(async function*(){})()}function Lz(e,t){return pe(e,"default")?Ae(e.default):BigInt(0)}function Vz(e,t){return pe(e,"default")?Ae(e.default):!1}function zz(e,t){if(pe(e,"default"))return Ae(e.default);{let r=In(e.returns,t);return typeof r=="object"&&!Array.isArray(r)?class{constructor(){for(let[n,o]of Object.entries(r)){let i=this;i[n]=o}}}:class{}}}function jz(e,t){return pe(e,"default")?Ae(e.default):e.minimumTimestamp!==void 0?new Date(e.minimumTimestamp):new Date}function Uz(e,t){return pe(e,"default")?Ae(e.default):()=>In(e.returns,t)}function Bz(e,t){let r=globalThis.Object.values(e.$defs),n=e.$defs[e.$ref];return In(n,[...t,...r])}function Gz(e,t){return pe(e,"default")?Ae(e.default):e.minimum!==void 0?e.minimum:0}function Kz(e,t){if(pe(e,"default"))return Ae(e.default);{let r=e.allOf.reduce((n,o)=>{let i=In(o,t);return typeof i=="object"?{...n,...i}:i},{});if(!Ie(e,t,r))throw new vn(e,"Intersect produced invalid value. Consider using a default value.");return r}}function qz(e,t){return pe(e,"default")?Ae(e.default):(function*(){})()}function Hz(e,t){return pe(e,"default")?Ae(e.default):e.const}function Yz(e,t){if(pe(e,"default"))return Ae(e.default);throw new vn(e,"Never types cannot be created. Consider using a default value.")}function Wz(e,t){if(pe(e,"default"))return Ae(e.default);throw new vn(e,"Not types must have a default value")}function Xz(e,t){return pe(e,"default")?Ae(e.default):null}function Zz(e,t){return pe(e,"default")?Ae(e.default):e.minimum!==void 0?e.minimum:0}function Qz(e,t){if(pe(e,"default"))return Ae(e.default);{let r=new Set(e.required),n={};for(let[o,i]of Object.entries(e.properties))r.has(o)&&(n[o]=In(i,t));return n}}function Jz(e,t){return pe(e,"default")?Ae(e.default):Promise.resolve(In(e.item,t))}function ej(e,t){return pe(e,"default")?Ae(e.default):{}}function tj(e,t){return pe(e,"default")?Ae(e.default):In(Ve(e,t),t)}function rj(e,t){if(pe(e,"default"))return Ae(e.default);throw new vn(e,"RegExp types cannot be created. Consider using a default value.")}function nj(e,t){if(e.pattern!==void 0){if(pe(e,"default"))return Ae(e.default);throw new vn(e,"String types with patterns must specify a default value")}else if(e.format!==void 0){if(pe(e,"default"))return Ae(e.default);throw new vn(e,"String types with formats must specify a default value")}else return pe(e,"default")?Ae(e.default):e.minLength!==void 0?Array.from({length:e.minLength}).map(()=>" ").join(""):""}function oj(e,t){return pe(e,"default")?Ae(e.default):"value"in e?Symbol.for(e.value):Symbol()}function ij(e,t){if(pe(e,"default"))return Ae(e.default);if(!xp(e))throw new vn(e,"Can only create template literals that produce a finite variants. Consider using a default value.");return oc(e)[0]}function aj(e,t){if(n6++>dj)throw new vn(e,"Cannot create recursive type as it appears possibly infinite. Consider using a default.");return pe(e,"default")?Ae(e.default):In(Ve(e,t),t)}function sj(e,t){return pe(e,"default")?Ae(e.default):e.items===void 0?[]:Array.from({length:e.minItems}).map((r,n)=>In(e.items[n],t))}function cj(e,t){if(pe(e,"default"))return Ae(e.default)}function uj(e,t){if(pe(e,"default"))return Ae(e.default);if(e.anyOf.length===0)throw new Error("ValueCreate.Union: Cannot create Union with zero variants");return In(e.anyOf[0],t)}function fj(e,t){return pe(e,"default")?Ae(e.default):e.minByteLength!==void 0?new Uint8Array(e.minByteLength):new Uint8Array(0)}function lj(e,t){return pe(e,"default")?Ae(e.default):{}}function pj(e,t){if(pe(e,"default"))return Ae(e.default)}function mj(e,t){if(pe(e,"default"))return Ae(e.default);throw new Error("User defined types must specify a default value")}function In(e,t){let r=fr(e,t),n=e;switch(n[U]){case"Any":return Az(n,r);case"Argument":return Fz(n,r);case"Array":return $z(n,r);case"AsyncIterator":return Dz(n,r);case"BigInt":return Lz(n,r);case"Boolean":return Vz(n,r);case"Constructor":return zz(n,r);case"Date":return jz(n,r);case"Function":return Uz(n,r);case"Import":return Bz(n,r);case"Integer":return Gz(n,r);case"Intersect":return Kz(n,r);case"Iterator":return qz(n,r);case"Literal":return Hz(n,r);case"Never":return Yz(n,r);case"Not":return Wz(n,r);case"Null":return Xz(n,r);case"Number":return Zz(n,r);case"Object":return Qz(n,r);case"Promise":return Jz(n,r);case"Record":return ej(n,r);case"Ref":return tj(n,r);case"RegExp":return rj(n,r);case"String":return nj(n,r);case"Symbol":return oj(n,r);case"TemplateLiteral":return ij(n,r);case"This":return aj(n,r);case"Tuple":return sj(n,r);case"Undefined":return cj(n,r);case"Union":return uj(n,r);case"Uint8Array":return fj(n,r);case"Unknown":return lj(n,r);case"Void":return pj(n,r);default:if(!ro.Has(n[U]))throw new vn(n,"Unknown type");return mj(n,r)}}var dj=512,n6=0;function Po(...e){return n6=0,e.length===2?In(e[0],e[1]):In(e[0],[])}var Fg=class extends be{constructor(t,r){super(r),this.schema=t}};function o6(e,t,r){if(e[U]==="Object"&&typeof r=="object"&&!di(r)){let n=e,o=Object.getOwnPropertyNames(r);return Object.entries(n.properties).reduce((a,[s,c])=>{let f=c[U]==="Literal"&&c.const===r[s]?100:0,u=Ie(c,t,r[s])?10:0,p=o.includes(s)?1:0;return a+(f+u+p)},0)}else if(e[U]==="Union"){let o=e.anyOf.map(i=>Ve(i,t)).map(i=>o6(i,t,r));return Math.max(...o)}else return Ie(e,t,r)?1:0}function hj(e,t,r){let n=e.anyOf.map(a=>Ve(a,t)),[o,i]=[n[0],0];for(let a of n){let s=o6(a,t,r);s>i&&(o=a,i=s)}return o}function gj(e,t,r){if("default"in e)return typeof r=="function"?e.default:Ee(e.default);{let n=hj(e,t,r);return np(n,t,r)}}function bj(e,t,r){return Ie(e,t,r)?Ee(r):Po(e,t)}function yj(e,t,r){return Ie(e,t,r)?r:Po(e,t)}function xj(e,t,r){if(Ie(e,t,r))return Ee(r);let n=de(r)?Ee(r):Po(e,t),o=lt(e.minItems)&&n.lengthnull)]:n,a=(lt(e.maxItems)&&o.length>e.maxItems?o.slice(0,e.maxItems):o).map(c=>Mo(e.items,t,c));if(e.uniqueItems!==!0)return a;let s=[...new Set(a)];if(!Ie(e,t,s))throw new Fg(e,"Array cast produced invalid data due to uniqueItems constraint");return s}function wj(e,t,r){if(Ie(e,t,r))return Po(e,t);let n=new Set(e.returns.required||[]),o=function(){};for(let[i,a]of Object.entries(e.returns.properties))!n.has(i)&&r.prototype[i]===void 0||(o.prototype[i]=Mo(a,t,r.prototype[i]));return o}function Sj(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return Mo(o,[...t,...n],r)}function i6(e,t){return we(e)&&!we(t)||!we(e)&&we(t)?e:!we(e)||!we(t)?t:globalThis.Object.getOwnPropertyNames(e).reduce((r,n)=>{let o=n in t?i6(e[n],t[n]):e[n];return{...r,[n]:o}},{})}function vj(e,t,r){if(Ie(e,t,r))return r;let n=Po(e,t),o=i6(n,r);return Ie(e,t,o)?o:n}function Ij(e,t,r){throw new Fg(e,"Never types cannot be cast")}function _j(e,t,r){if(Ie(e,t,r))return r;if(r===null||typeof r!="object")return Po(e,t);let n=new Set(e.required||[]),o={};for(let[i,a]of Object.entries(e.properties))!n.has(i)&&r[i]===void 0||(o[i]=Mo(a,t,r[i]));if(typeof e.additionalProperties=="object"){let i=Object.getOwnPropertyNames(e.properties);for(let a of Object.getOwnPropertyNames(r))i.includes(a)||(o[a]=Mo(e.additionalProperties,t,r[a]))}return o}function Pj(e,t,r){if(Ie(e,t,r))return Ee(r);if(r===null||typeof r!="object"||Array.isArray(r)||r instanceof Date)return Po(e,t);let n=Object.getOwnPropertyNames(e.patternProperties)[0],o=e.patternProperties[n],i={};for(let[a,s]of Object.entries(r))i[a]=Mo(o,t,s);return i}function Mj(e,t,r){return Mo(Ve(e,t),t,r)}function Tj(e,t,r){return Mo(Ve(e,t),t,r)}function Oj(e,t,r){return Ie(e,t,r)?Ee(r):de(r)?e.items===void 0?[]:e.items.map((n,o)=>Mo(n,t,r[o])):Po(e,t)}function Cj(e,t,r){return Ie(e,t,r)?Ee(r):gj(e,t,r)}function Mo(e,t,r){let n=Be(e.$id)?fr(e,t):t,o=e;switch(e[U]){case"Array":return xj(o,n,r);case"Constructor":return wj(o,n,r);case"Import":return Sj(o,n,r);case"Intersect":return vj(o,n,r);case"Never":return Ij(o,n,r);case"Object":return _j(o,n,r);case"Record":return Pj(o,n,r);case"Ref":return Mj(o,n,r);case"This":return Tj(o,n,r);case"Tuple":return Oj(o,n,r);case"Union":return Cj(o,n,r);case"Date":case"Symbol":case"Uint8Array":return bj(e,t,r);default:return yj(o,n,r)}}function np(...e){return e.length===3?Mo(e[0],e[1],e[2]):Mo(e[0],[],e[1])}function kj(e){return ra(e)&&e[U]!=="Unsafe"}function Nj(e,t,r){return de(r)?r.map(n=>on(e.items,t,n)):r}function Rj(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return on(o,[...t,...n],r)}function Ej(e,t,r){let n=e.unevaluatedProperties,i=e.allOf.map(s=>on(s,t,Ee(r))).reduce((s,c)=>we(c)?{...s,...c}:c,{});if(!we(r)||!we(i)||!ra(n))return i;let a=Wr(e);for(let s of Object.getOwnPropertyNames(r))a.includes(s)||Ie(n,t,r[s])&&(i[s]=on(n,t,r[s]));return i}function Aj(e,t,r){if(!we(r)||de(r))return r;let n=e.additionalProperties;for(let o of Object.getOwnPropertyNames(r)){if(pe(e.properties,o)){r[o]=on(e.properties[o],t,r[o]);continue}if(ra(n)&&Ie(n,t,r[o])){r[o]=on(n,t,r[o]);continue}delete r[o]}return r}function Fj(e,t,r){if(!we(r))return r;let n=e.additionalProperties,o=Object.getOwnPropertyNames(r),[i,a]=Object.entries(e.patternProperties)[0],s=new RegExp(i);for(let c of o){if(s.test(c)){r[c]=on(a,t,r[c]);continue}if(ra(n)&&Ie(n,t,r[c])){r[c]=on(n,t,r[c]);continue}delete r[c]}return r}function $j(e,t,r){return on(Ve(e,t),t,r)}function Dj(e,t,r){return on(Ve(e,t),t,r)}function Lj(e,t,r){if(!de(r))return r;if(ft(e.items))return[];let n=Math.min(r.length,e.items.length);for(let o=0;on?r.slice(0,n):r}function Vj(e,t,r){for(let n of e.anyOf)if(kj(n)&&Ie(n,t,r))return on(n,t,r);return r}function on(e,t,r){let n=Be(e.$id)?fr(e,t):t,o=e;switch(o[U]){case"Array":return Nj(o,n,r);case"Import":return Rj(o,n,r);case"Intersect":return Ej(o,n,r);case"Object":return Aj(o,n,r);case"Record":return Fj(o,n,r);case"Ref":return $j(o,n,r);case"This":return Dj(o,n,r);case"Tuple":return Lj(o,n,r);case"Union":return Vj(o,n,r);default:return r}}function $g(...e){return e.length===3?on(e[0],e[1],e[2]):on(e[0],[],e[1])}function Dg(e){return Be(e)&&!isNaN(e)&&!isNaN(parseFloat(e))}function zj(e){return Yn(e)||Eo(e)||lt(e)}function op(e){return e===!0||lt(e)&&e===1||Yn(e)&&e===BigInt("1")||Be(e)&&(e.toLowerCase()==="true"||e==="1")}function ip(e){return e===!1||lt(e)&&(e===0||Object.is(e,-0))||Yn(e)&&e===BigInt("0")||Be(e)&&(e.toLowerCase()==="false"||e==="0"||e==="-0")}function jj(e){return Be(e)&&/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i.test(e)}function Uj(e){return Be(e)&&/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)?$/i.test(e)}function Bj(e){return Be(e)&&/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i.test(e)}function Gj(e){return Be(e)&&/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)?$/i.test(e)}function Kj(e){return Be(e)&&/^\d\d\d\d-[0-1]\d-[0-3]\d$/i.test(e)}function qj(e,t){let r=s6(e);return r===t?r:e}function Hj(e,t){let r=c6(e);return r===t?r:e}function Yj(e,t){let r=a6(e);return r===t?r:e}function Wj(e,t){return Be(e.const)?qj(t,e.const):lt(e.const)?Hj(t,e.const):Eo(e.const)?Yj(t,e.const):t}function a6(e){return op(e)?!0:ip(e)?!1:e}function Xj(e){let t=r=>r.split(".")[0];return Dg(e)?BigInt(t(e)):lt(e)?BigInt(Math.trunc(e)):ip(e)?BigInt(0):op(e)?BigInt(1):e}function s6(e){return hi(e)&&e.description!==void 0?e.description.toString():zj(e)?e.toString():e}function c6(e){return Dg(e)?parseFloat(e):op(e)?1:ip(e)?0:e}function Zj(e){return Dg(e)?parseInt(e):lt(e)?Math.trunc(e):op(e)?1:ip(e)?0:e}function Qj(e){return Be(e)&&e.toLowerCase()==="null"?null:e}function Jj(e){return Be(e)&&e==="undefined"?void 0:e}function eU(e){return Ar(e)?e:lt(e)?new Date(e):op(e)?new Date(1):ip(e)?new Date(0):Dg(e)?new Date(parseInt(e)):Uj(e)?new Date(`1970-01-01T${e}.000Z`):jj(e)?new Date(`1970-01-01T${e}`):Gj(e)?new Date(`${e}.000Z`):Bj(e)?new Date(e):Kj(e)?new Date(`${e}T00:00:00.000Z`):e}function tU(e,t,r){return(de(r)?r:[r]).map(o=>To(e.items,t,o))}function rU(e,t,r){return Xj(r)}function nU(e,t,r){return a6(r)}function oU(e,t,r){return eU(r)}function iU(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return To(o,[...t,...n],r)}function aU(e,t,r){return Zj(r)}function sU(e,t,r){return e.allOf.reduce((n,o)=>To(o,t,n),r)}function cU(e,t,r){return Wj(e,r)}function uU(e,t,r){return Qj(r)}function fU(e,t,r){return c6(r)}function lU(e,t,r){if(!we(r)||de(r))return r;for(let n of Object.getOwnPropertyNames(e.properties))pe(r,n)&&(r[n]=To(e.properties[n],t,r[n]));return r}function pU(e,t,r){if(!(we(r)&&!de(r)))return r;let o=Object.getOwnPropertyNames(e.patternProperties)[0],i=e.patternProperties[o];for(let[a,s]of Object.entries(r))r[a]=To(i,t,s);return r}function mU(e,t,r){return To(Ve(e,t),t,r)}function dU(e,t,r){return s6(r)}function hU(e,t,r){return Be(r)||lt(r)?Symbol(r):r}function gU(e,t,r){return To(Ve(e,t),t,r)}function bU(e,t,r){return de(r)&&!ft(e.items)?r.map((o,i)=>iOo(e.items,t,`${r}/${i}`,o))):xt(e,r,n)}function SU(e,t,r,n){if(!we(n)||cn(n))return xt(e,r,n);let o=_p(e),i=o.map(u=>u[0]),a={...n};for(let[u,p]of o)u in a&&(a[u]=Oo(p,t,`${r}/${u}`,a[u]));if(!Fe(e.unevaluatedProperties))return xt(e,r,a);let s=Object.getOwnPropertyNames(a),c=e.unevaluatedProperties,f={...a};for(let u of s)i.includes(u)||(f[u]=xt(c,`${r}/${u}`,f[u]));return xt(e,r,f)}function vU(e,t,r,n){let o=globalThis.Object.values(e.$defs),i=e.$defs[e.$ref],a=Oo(i,[...t,...o],r,n);return xt(e,r,a)}function IU(e,t,r,n){return xt(e,r,Oo(e.not,t,r,n))}function _U(e,t,r,n){if(!we(n))return xt(e,r,n);let o=Wr(e),i={...n};for(let f of o)pe(i,f)&&(ft(i[f])&&(!yi(e.properties[f])||zt.IsExactOptionalProperty(i,f))||(i[f]=Oo(e.properties[f],t,`${r}/${f}`,i[f])));if(!bt(e.additionalProperties))return xt(e,r,i);let a=Object.getOwnPropertyNames(i),s=e.additionalProperties,c={...i};for(let f of a)o.includes(f)||(c[f]=xt(s,`${r}/${f}`,c[f]));return xt(e,r,c)}function PU(e,t,r,n){if(!we(n))return xt(e,r,n);let o=Object.getOwnPropertyNames(e.patternProperties)[0],i=new RegExp(o),a={...n};for(let u of Object.getOwnPropertyNames(n))i.test(u)&&(a[u]=Oo(e.patternProperties[o],t,`${r}/${u}`,a[u]));if(!bt(e.additionalProperties))return xt(e,r,a);let s=Object.getOwnPropertyNames(a),c=e.additionalProperties,f={...a};for(let u of s)i.test(u)||(f[u]=xt(c,`${r}/${u}`,f[u]));return xt(e,r,f)}function MU(e,t,r,n){let o=Ve(e,t);return xt(e,r,Oo(o,t,r,n))}function TU(e,t,r,n){let o=Ve(e,t);return xt(e,r,Oo(o,t,r,n))}function OU(e,t,r,n){return de(n)&&de(e.items)?xt(e,r,e.items.map((o,i)=>Oo(o,t,`${r}/${i}`,n[i]))):xt(e,r,n)}function CU(e,t,r,n){for(let o of e.anyOf){if(!Ie(o,t,n))continue;let i=Oo(o,t,r,n);return xt(e,r,i)}return xt(e,r,n)}function Oo(e,t,r,n){let o=fr(e,t),i=e;switch(e[U]){case"Array":return wU(i,o,r,n);case"Import":return vU(i,o,r,n);case"Intersect":return SU(i,o,r,n);case"Not":return IU(i,o,r,n);case"Object":return _U(i,o,r,n);case"Record":return PU(i,o,r,n);case"Ref":return MU(i,o,r,n);case"Symbol":return xt(i,r,n);case"This":return TU(i,o,r,n);case"Tuple":return OU(i,o,r,n);case"Union":return CU(i,o,r,n);default:return xt(i,r,n)}}function zg(e,t,r){return Oo(e,t,"",r)}var jg=class extends be{constructor(t,r,n){super("The encoded value does not match the expected schema"),this.schema=t,this.value=r,this.error=n}},Qw=class extends be{constructor(t,r,n,o){super(`${o instanceof Error?o.message:"Unknown error"}`),this.schema=t,this.path=r,this.value=n,this.error=o}};function Sr(e,t,r){try{return Fe(e)?e[gt].Encode(r):r}catch(n){throw new Qw(e,t,r,n)}}function kU(e,t,r,n){let o=Sr(e,r,n);return de(o)?o.map((i,a)=>Co(e.items,t,`${r}/${a}`,i)):o}function NU(e,t,r,n){let o=globalThis.Object.values(e.$defs),i=e.$defs[e.$ref],a=Sr(e,r,n);return Co(i,[...t,...o],r,a)}function RU(e,t,r,n){let o=Sr(e,r,n);if(!we(n)||cn(n))return o;let i=_p(e),a=i.map(p=>p[0]),s={...o};for(let[p,l]of i)p in s&&(s[p]=Co(l,t,`${r}/${p}`,s[p]));if(!Fe(e.unevaluatedProperties))return s;let c=Object.getOwnPropertyNames(s),f=e.unevaluatedProperties,u={...s};for(let p of c)a.includes(p)||(u[p]=Sr(f,`${r}/${p}`,u[p]));return u}function EU(e,t,r,n){return Sr(e.not,r,Sr(e,r,n))}function AU(e,t,r,n){let o=Sr(e,r,n);if(!we(o))return o;let i=Wr(e),a={...o};for(let u of i)pe(a,u)&&(ft(a[u])&&(!yi(e.properties[u])||zt.IsExactOptionalProperty(a,u))||(a[u]=Co(e.properties[u],t,`${r}/${u}`,a[u])));if(!bt(e.additionalProperties))return a;let s=Object.getOwnPropertyNames(a),c=e.additionalProperties,f={...a};for(let u of s)i.includes(u)||(f[u]=Sr(c,`${r}/${u}`,f[u]));return f}function FU(e,t,r,n){let o=Sr(e,r,n);if(!we(n))return o;let i=Object.getOwnPropertyNames(e.patternProperties)[0],a=new RegExp(i),s={...o};for(let p of Object.getOwnPropertyNames(n))a.test(p)&&(s[p]=Co(e.patternProperties[i],t,`${r}/${p}`,s[p]));if(!bt(e.additionalProperties))return s;let c=Object.getOwnPropertyNames(s),f=e.additionalProperties,u={...s};for(let p of c)a.test(p)||(u[p]=Sr(f,`${r}/${p}`,u[p]));return u}function $U(e,t,r,n){let o=Ve(e,t),i=Co(o,t,r,n);return Sr(e,r,i)}function DU(e,t,r,n){let o=Ve(e,t),i=Co(o,t,r,n);return Sr(e,r,i)}function LU(e,t,r,n){let o=Sr(e,r,n);return de(e.items)?e.items.map((i,a)=>Co(i,t,`${r}/${a}`,o[a])):[]}function VU(e,t,r,n){for(let o of e.anyOf){if(!Ie(o,t,n))continue;let i=Co(o,t,r,n);return Sr(e,r,i)}for(let o of e.anyOf){let i=Co(o,t,r,n);if(Ie(e,t,i))return Sr(e,r,i)}return Sr(e,r,n)}function Co(e,t,r,n){let o=fr(e,t),i=e;switch(e[U]){case"Array":return kU(i,o,r,n);case"Import":return NU(i,o,r,n);case"Intersect":return RU(i,o,r,n);case"Not":return EU(i,o,r,n);case"Object":return AU(i,o,r,n);case"Record":return FU(i,o,r,n);case"Ref":return $U(i,o,r,n);case"This":return DU(i,o,r,n);case"Tuple":return LU(i,o,r,n);case"Union":return VU(i,o,r,n);default:return Sr(i,r,n)}}function Ug(e,t,r){return Co(e,t,"",r)}function zU(e,t){return Fe(e)||Jt(e.items,t)}function jU(e,t){return Fe(e)||Jt(e.items,t)}function UU(e,t){return Fe(e)||Jt(e.returns,t)||e.parameters.some(r=>Jt(r,t))}function BU(e,t){return Fe(e)||Jt(e.returns,t)||e.parameters.some(r=>Jt(r,t))}function GU(e,t){return Fe(e)||Fe(e.unevaluatedProperties)||e.allOf.some(r=>Jt(r,t))}function KU(e,t){let r=globalThis.Object.getOwnPropertyNames(e.$defs).reduce((o,i)=>[...o,e.$defs[i]],[]),n=e.$defs[e.$ref];return Fe(e)||Jt(n,[...r,...t])}function qU(e,t){return Fe(e)||Jt(e.items,t)}function HU(e,t){return Fe(e)||Jt(e.not,t)}function YU(e,t){return Fe(e)||Object.values(e.properties).some(r=>Jt(r,t))||bt(e.additionalProperties)&&Jt(e.additionalProperties,t)}function WU(e,t){return Fe(e)||Jt(e.item,t)}function XU(e,t){let r=Object.getOwnPropertyNames(e.patternProperties)[0],n=e.patternProperties[r];return Fe(e)||Jt(n,t)||bt(e.additionalProperties)&&Fe(e.additionalProperties)}function ZU(e,t){return Fe(e)?!0:Jt(Ve(e,t),t)}function QU(e,t){return Fe(e)?!0:Jt(Ve(e,t),t)}function JU(e,t){return Fe(e)||!ft(e.items)&&e.items.some(r=>Jt(r,t))}function eB(e,t){return Fe(e)||e.anyOf.some(r=>Jt(r,t))}function Jt(e,t){let r=fr(e,t),n=e;if(e.$id&&Jw.has(e.$id))return!1;switch(e.$id&&Jw.add(e.$id),e[U]){case"Array":return zU(n,r);case"AsyncIterator":return jU(n,r);case"Constructor":return UU(n,r);case"Function":return BU(n,r);case"Import":return KU(n,r);case"Intersect":return GU(n,r);case"Iterator":return qU(n,r);case"Not":return HU(n,r);case"Object":return YU(n,r);case"Promise":return WU(n,r);case"Record":return XU(n,r);case"Ref":return ZU(n,r);case"This":return QU(n,r);case"Tuple":return JU(n,r);case"Union":return eB(n,r);default:return Fe(e)}}var Jw=new Set;function Bs(e,t){return Jw.clear(),Jt(e,t)}function u6(...e){let[t,r,n]=e.length===3?[e[0],e[1],e[2]]:[e[0],[],e[1]];if(!Ie(t,r,n))throw new Vg(t,n,za(t,r,n).First());return Bs(t,r)?zg(t,r,n):n}function Zi(e,t){let r=pe(e,"default")?e.default:void 0,n=ea(r)?r():Ee(r);return ft(t)?n:we(t)&&we(n)?Object.assign(n,t):t}function e2(e){return ra(e)&&"default"in e}function tB(e,t,r){if(de(r)){for(let o=0;o{let a=Gr(i,t,n);return we(a)?{...o,...a}:a},{})}function iB(e,t,r){let n=Zi(e,r);if(!we(n))return n;let o=Object.getOwnPropertyNames(e.properties);for(let i of o){let a=Gr(e.properties[i],t,n[i]);ft(a)||(n[i]=Gr(e.properties[i],t,n[i]))}if(!e2(e.additionalProperties))return n;for(let i of Object.getOwnPropertyNames(n))o.includes(i)||(n[i]=Gr(e.additionalProperties,t,n[i]));return n}function aB(e,t,r){let n=Zi(e,r);if(!we(n))return n;let o=e.additionalProperties,[i,a]=Object.entries(e.patternProperties)[0],s=new RegExp(i);for(let c of Object.getOwnPropertyNames(n))s.test(c)&&e2(a)&&(n[c]=Gr(a,t,n[c]));if(!e2(o))return n;for(let c of Object.getOwnPropertyNames(n))s.test(c)||(n[c]=Gr(o,t,n[c]));return n}function sB(e,t,r){return Gr(Ve(e,t),t,Zi(e,r))}function cB(e,t,r){return Gr(Ve(e,t),t,r)}function uB(e,t,r){let n=Zi(e,r);if(!de(n)||ft(e.items))return n;let[o,i]=[e.items,Math.max(e.items.length,n.length)];for(let a=0;apB,Format:()=>ap,Get:()=>dB,Has:()=>mB,Set:()=>lB,ValuePointerRootDeleteError:()=>Kg,ValuePointerRootSetError:()=>Gg});var Gg=class extends be{constructor(t,r,n){super("Cannot set root value"),this.value=t,this.path=r,this.update=n}},Kg=class extends be{constructor(t,r){super("Cannot delete root value"),this.value=t,this.path=r}};function f6(e){return e.indexOf("~")===-1?e:e.replace(/~1/g,"/").replace(/~0/g,"~")}function*ap(e){if(e==="")return;let[t,r]=[0,0];for(let n=0;nGs(e[o],t[o]))}function gB(e,t){return Ar(t)&&e.getTime()===t.getTime()}function bB(e,t){return!de(t)||e.length!==t.length?!1:e.every((r,n)=>Gs(r,t[n]))}function yB(e,t){return!Pn(t)||e.length!==t.length||Object.getPrototypeOf(e).constructor.name!==Object.getPrototypeOf(t).constructor.name?!1:e.every((r,n)=>Gs(r,t[n]))}function xB(e,t){return e===t}function Gs(e,t){if(Ar(e))return gB(e,t);if(Pn(e))return yB(e,t);if(de(e))return bB(e,t);if(we(e))return hB(e,t);if(cn(e))return xB(e,t);throw new Error("ValueEquals: Unable to compare value")}var wB=De({type:ke("insert"),path:Fr(),value:no()}),SB=De({type:ke("update"),path:Fr(),value:no()}),vB=De({type:ke("delete"),path:Fr()}),p6=$e([wB,SB,vB]),qg=class extends be{constructor(t,r){super(r),this.value=t}};function Hg(e,t){return{type:"update",path:e,value:t}}function m6(e,t){return{type:"insert",path:e,value:t}}function d6(e){return{type:"delete",path:e}}function l6(e){if(globalThis.Object.getOwnPropertySymbols(e).length>0)throw new qg(e,"Cannot diff objects with symbols")}function*IB(e,t,r){if(l6(t),l6(r),!bb(r))return yield Hg(e,r);let n=globalThis.Object.getOwnPropertyNames(t),o=globalThis.Object.getOwnPropertyNames(r);for(let i of o)pe(t,i)||(yield m6(`${e}/${i}`,r[i]));for(let i of n)pe(r,i)&&(Gs(t,r)||(yield*Yg(`${e}/${i}`,t[i],r[i])));for(let i of n)pe(r,i)||(yield d6(`${e}/${i}`))}function*_B(e,t,r){if(!de(r))return yield Hg(e,r);for(let n=0;n=0;n--)n0&&e[0].path===""&&e[0].type==="update"}function OB(e){return e.length===0}function g6(e,t){if(TB(t))return Ee(t[0].value);if(OB(t))return Ee(e);let r=Ee(e);for(let n of t)switch(n.type){case"insert":{ko.Set(r,n.path,n.value);break}case"update":{ko.Set(r,n.path,n.value);break}case"delete":{ko.Delete(r,n.path);break}}return r}function b6(...e){let[t,r,n]=e.length===3?[e[0],e[1],e[2]]:[e[0],[],e[1]],o=Bs(t,r)?Ug(t,r,n):n;if(!Ie(t,r,o))throw new jg(t,o,za(t,r,o).First());return o}function Wg(e){return we(e)&&!de(e)}var Xg=class extends be{constructor(t){super(t)}};function CB(e,t,r,n){if(!Wg(r))ko.Set(e,t,Ee(n));else{let o=Object.getOwnPropertyNames(r),i=Object.getOwnPropertyNames(n);for(let a of o)i.includes(a)||delete r[a];for(let a of i)o.includes(a)||(r[a]=null);for(let a of i)t2(e,`${t}/${a}`,r[a],n[a])}}function kB(e,t,r,n){if(!de(r))ko.Set(e,t,Ee(n));else{for(let o=0;o(Ag(i,a,s),s)],["Cast",(i,a,s)=>np(i,a,s)],["Clean",(i,a,s)=>$g(i,a,s)],["Clone",(i,a,s)=>Ee(s)],["Convert",(i,a,s)=>Lg(i,a,s)],["Decode",(i,a,s)=>Bs(i,a)?zg(i,a,s):s],["Default",(i,a,s)=>Bg(i,a,s)],["Encode",(i,a,s)=>Bs(i,a)?Ug(i,a,s):s]]);function r(i){t.delete(i)}e.Delete=r;function n(i,a){t.set(i,a)}e.Set=n;function o(i){return t.get(i)}e.Get=o})(r2||(r2={}));var w6=["Clone","Clean","Default","Convert","Assert","Decode"];function AB(e,t,r,n){return e.reduce((o,i)=>{let a=r2.Get(i);if(ft(a))throw new Zg(`Unable to find Parse operation '${i}'`);return a(t,r,o)},n)}function S6(...e){let[t,r,n,o]=e.length===4?[e[0],e[1],e[2],e[3]]:e.length===3?de(e[0])?[e[0],e[1],[],e[2]]:[w6,e[0],e[1],e[2]]:e.length===2?[w6,e[0],[],e[1]]:(()=>{throw new Zg("Invalid Arguments")})();return AB(t,r,n,o)}var $u={};Ga($u,{Assert:()=>Ag,Cast:()=>np,Check:()=>Ie,Clean:()=>$g,Clone:()=>Ee,Convert:()=>Lg,Create:()=>Po,Decode:()=>u6,Default:()=>Bg,Diff:()=>h6,Edit:()=>p6,Encode:()=>b6,Equal:()=>Gs,Errors:()=>za,Hash:()=>Fu,Mutate:()=>x6,Parse:()=>S6,Patch:()=>g6,ValueErrorIterator:()=>Va});function Qg(e){switch(e.type){case"summary_metrics":return Gw(e);case"performance_table":return jw(e);case"prediction_distribution":return Uw(e);case"outcome_distribution":return zw(e);case"roc":return kw(e);case"calibration":return Gk(e);case"precision_recall":return Rw(e);case"gains":return Ew(e);case"lift":return Aw(e);case"decision_curve":return Fw(e);case"interventions_avoided":return $w(e)}}function fi(e,t){let r=e.toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"id";/^[a-z]/i.test(r)||(r=`id-${r}`);let n=r,o=1;for(;t.has(n);)n=`${r}-${o}`,o++;return t.add(n),n}function n2(e,t){let r=(n,o=!0)=>{e.forEach((i,a)=>{let s=a===n;i.setAttribute("aria-selected",s?"true":"false"),i.tabIndex=s?0:-1,t[a].hidden=!s}),o&&e[n].focus()};e.forEach((n,o)=>{n.addEventListener("click",()=>{r(o,!1)}),n.addEventListener("keydown",i=>{let a=null;i.key==="ArrowRight"?a=(o+1)%e.length:i.key==="ArrowLeft"?a=(o-1+e.length)%e.length:i.key==="Home"?a=0:i.key==="End"&&(a=e.length-1),a!==null&&(i.preventDefault(),r(a,!0))})})}function FB(e){if(!$u.Check(Lp,e))throw new Error("Invalid ReportSpec");zp(e);let t=document.createElement("div");if(t.className="rtichoke-report",e.title){let r=document.createElement("h1");r.className="rtichoke-report__title",r.textContent=e.title,t.append(r)}for(let r of e.components){let n=document.createElement("section");if(n.className="rtichoke-report__component",n.dataset.componentId=r.id,r.title){let i=document.createElement("h2");i.className="rtichoke-report__component-title",i.textContent=r.title,n.append(i)}let o=document.createElement("div");o.className="rtichoke-report__component-content",o.append(Qg(r.spec)),n.append(o),t.append(n)}return t}function $B(e,t){if(!$u.Check(Vp,e))throw new Error("Invalid ReportSpec");zp(e);let r=!!e.title,n=new Set,o=document.createElement("article");if(o.className="rtichoke-report",e.title){let m=document.createElement("header");m.className="rtichoke-report__header";let h=document.createElement("h1");h.className="rtichoke-report__title",h.textContent=e.title,m.append(h),o.append(m)}let i=[],a=0;for(let m of e.sections){let h=fi(m.id,n);a++;let y=[];for(let b of m.items)if(b.type==="group"){let x=fi(b.id,n);a++,y.push({rawId:b.id,title:b.title,domId:x})}i.push({rawId:m.id,title:m.title,domId:h,groups:y})}if(a>1){let m=document.createElement("nav");m.className="rtichoke-report__nav",m.setAttribute("aria-label","Report sections");let h=document.createElement("ul");h.className="rtichoke-report__nav-list";for(let y of i){let b=document.createElement("li");b.className="rtichoke-report__nav-item";let x=document.createElement("a");if(x.className="rtichoke-report__nav-link",x.href=`#${y.domId}`,x.textContent=y.title,b.append(x),y.groups.length>0){let g=document.createElement("ul");g.className="rtichoke-report__nav-sublist";for(let S of y.groups){let w=document.createElement("li");w.className="rtichoke-report__nav-subitem";let _=document.createElement("a");_.className="rtichoke-report__nav-link",_.href=`#${S.domId}`,_.textContent=S.title,w.append(_),g.append(w)}b.append(g)}h.append(b)}m.append(h),o.append(m)}let s=r?"h2":"h1",c=r?"h3":"h2",f=r?"h3":"h2",u=r?"h4":"h3",p=(m,h)=>{let y=document.createElement("section");if(y.className="rtichoke-report__component",y.dataset.componentId=m.id,m.title){let x=fi(`heading-${m.id}`,n),g=document.createElement(h);g.className="rtichoke-report__component-title",g.id=x,g.textContent=m.title,y.setAttribute("aria-labelledby",x),y.append(g)}let b=document.createElement("div");return b.className="rtichoke-report__component-content",b.append(Qg(m.spec)),y.append(b),y},l=(m,h,y)=>{let b=document.createElement("section");b.className="rtichoke-report__group",b.id=h.domId,b.dataset.groupId=m.id;let x=fi(`heading-${m.id}`,n),g=document.createElement(c);if(g.className="rtichoke-report__group-title",y&&g.classList.add("rtichoke-report__group-title--tab-panel"),g.id=x,g.textContent=m.title,b.setAttribute("aria-labelledby",y??x),b.append(g),t.groupPresentation==="tabs"){let S=document.createElement("div");S.className="rtichoke-report__tablist",S.setAttribute("role","tablist"),S.setAttribute("aria-labelledby",x);let w=[],_=[];m.components.forEach((v,I)=>{let O=fi(`tab-${m.id}-${v.id}`,n),M=fi(`panel-${m.id}-${v.id}`,n),E=document.createElement("button");E.className="rtichoke-report__tab",E.type="button",E.id=O,E.setAttribute("role","tab"),E.setAttribute("aria-controls",M),E.setAttribute("aria-selected",I===0?"true":"false"),E.tabIndex=I===0?0:-1,E.textContent=v.title||v.id;let C=document.createElement("section");C.className="rtichoke-report__component rtichoke-report__tabpanel",C.id=M,C.setAttribute("role","tabpanel"),C.setAttribute("aria-labelledby",O),C.tabIndex=0,C.dataset.componentId=v.id,C.hidden=I!==0;let N=document.createElement("div");N.className="rtichoke-report__component-content",N.append(Qg(v.spec)),C.append(N),w.push(E),_.push(C),S.append(E)}),n2(w,_),b.append(S,..._)}else for(let S of m.components)b.append(p(S,u));return b};for(let m=0;mO.type==="group"),w=t.sectionGroupPresentation==="tabs"&&S.length>1,_=0,v=!1,I=0;for(;I1){let N=document.createElement("div");N.className="rtichoke-report__tablist",N.setAttribute("role","tablist"),N.setAttribute("aria-labelledby",x);let K=[],F=[];E.forEach((T,V)=>{let D=fi(`tab-${h.id}-${T.id}`,n),H=fi(`panel-${h.id}-${T.id}`,n),G=document.createElement("button");G.className="rtichoke-report__tab",G.type="button",G.id=D,G.setAttribute("role","tab"),G.setAttribute("aria-controls",H),G.setAttribute("aria-selected",V===0?"true":"false"),G.tabIndex=V===0?0:-1,G.textContent=T.title||T.id;let Y=document.createElement("section");Y.className="rtichoke-report__component rtichoke-report__tabpanel",Y.id=H,Y.setAttribute("role","tabpanel"),Y.setAttribute("aria-labelledby",D),Y.tabIndex=0,Y.dataset.componentId=T.id,Y.hidden=V!==0;let W=document.createElement("div");W.className="rtichoke-report__component-content",W.append(Qg(T.spec)),Y.append(W),K.push(G),F.push(Y),N.append(G)}),n2(K,F),b.append(N,...F),I=M}else b.append(p(O,f)),I++}else if(O.type==="group"){if(w){if(!v){v=!0;let M=document.createElement("div");M.className="rtichoke-report__tablist rtichoke-report__section-group-tablist",M.setAttribute("role","tablist"),M.setAttribute("aria-labelledby",x);let E=[],C=[];S.forEach((N,K)=>{let F=y.groups[K],T=fi(`section-group-tab-${h.id}-${N.id}`,n),V=document.createElement("button");V.className="rtichoke-report__tab",V.type="button",V.id=T,V.setAttribute("role","tab"),V.setAttribute("aria-controls",F.domId),V.setAttribute("aria-selected",K===0?"true":"false"),V.tabIndex=K===0?0:-1,V.textContent=N.title;let D=l(N,F,T);D.classList.add("rtichoke-report__tabpanel"),D.setAttribute("role","tabpanel"),D.setAttribute("aria-labelledby",T),D.tabIndex=0,D.hidden=K!==0,E.push(V),C.push(D),M.append(V)}),n2(E,C),b.append(M,...C)}}else b.append(l(O,y.groups[_++]));I++}}o.append(b)}return o}function DB(e,t){if(!e||typeof e!="object")throw new Error("Invalid ReportSpec");let r=t?.groupPresentation??"stacked",n=t?.sectionGroupPresentation??"stacked",o=t?.sectionComponentPresentation??"stacked";if(t!==void 0&&(typeof t!="object"||t===null||t.groupPresentation!==void 0&&t.groupPresentation!=="stacked"&&t.groupPresentation!=="tabs"))throw new Error("Invalid render options: groupPresentation must be 'stacked' or 'tabs'");if(t!==void 0&&t.sectionGroupPresentation!==void 0&&t.sectionGroupPresentation!=="stacked"&&t.sectionGroupPresentation!=="tabs")throw new Error("Invalid render options: sectionGroupPresentation must be 'stacked' or 'tabs'");if(t!==void 0&&t.sectionComponentPresentation!==void 0&&t.sectionComponentPresentation!=="stacked"&&t.sectionComponentPresentation!=="tabs")throw new Error("Invalid render options: sectionComponentPresentation must be 'stacked' or 'tabs'");if(e.schemaVersion==="1.0")return FB(e);if(e.schemaVersion==="1.1")return $B(e,{groupPresentation:r,sectionGroupPresentation:n,sectionComponentPresentation:o});throw new Error("Invalid ReportSpec")}var LB=["#1b9e77","#d95f02","#7570b3","#e7298a","#07004D","#E6AB02","#FE5F55","#54494B","#006E90","#BC96E6"];function VB(e){let t=e.data.map(n=>({...n,false_positive_rate:1-n.specificity})),r=[Qt(t,{x:"false_positive_rate",y:"sensitivity",stroke:"model",strokeWidth:2,tip:!0})];return e.references?.some(n=>n.type==="identity")&&r.unshift(Qt([{x:0,y:0},{x:1,y:1}],{x:"x",y:"y",stroke:"#BEBEBE",strokeWidth:2})),ui({width:600,height:600,marginLeft:64,marginBottom:56,style:{background:"transparent",color:"#222",fontFamily:"Arial, Helvetica, sans-serif",fontSize:"13px"},x:{label:e.xAxis.label,domain:e.xAxis.domain,grid:!1,ticks:6},y:{label:e.yAxis.label,domain:e.yAxis.domain,grid:!1,ticks:6},color:{legend:!0,range:LB},marks:r})}export{uy as AUROCSummaryMetricSchema,Wb as CalibrationSpecSchema,$v as CalibrationV2DatumSchema,Qb as CalibrationV2SpecSchema,Uv as DecisionCurveV2DatumSchema,Bv as DecisionCurveV2EvaluationSchema,Hv as DecisionCurveV2ReferenceSchema,Gv as DecisionCurveV2SeriesSchema,ty as DecisionCurveV2SpecSchema,Av as DiscreteCalibrationV2DatumSchema,Rv as DisplayGroupingSpecSchema,Nv as DisplayRoleSchema,$r as EvaluationSpecSchema,ry as GainsV2SpecSchema,Qv as InterventionsAvoidedTreatAllReferenceSchema,Jv as InterventionsAvoidedTreatNoneReferenceSchema,Wv as InterventionsAvoidedV2DatumSchema,Xv as InterventionsAvoidedV2EvaluationSchema,eI as InterventionsAvoidedV2ReferenceSchema,Zv as InterventionsAvoidedV2SeriesSchema,ny as InterventionsAvoidedV2SpecSchema,oy as LiftV2SpecSchema,of as OperatingPointDimensionSchema,Lv as OperatingPointSchema,Si as OperatingPointSpecSchema,py as OutcomeDistributionSpecSchema,tI as OutcomeStateSchema,Vv as PerformanceEvaluationContextSchema,Dv as PerformanceMetricDefinitionSchema,Jb as PerformanceMetricIdSchema,Mr as PerformanceMetricValueSchema,zv as PerformanceTableRowSchema,ey as PerformanceTableSpecSchema,cy as PopulationSummaryOwnerSpecSchema,iy as PrecisionRecallV2SpecSchema,nI as PredictionDistributionBinSchema,oI as PredictionDistributionOperatingPointSchema,sf as PredictionDistributionSpecSchema,fy as PrevalenceSummaryMetricSchema,Rr as RTICHOKE_BROWSER_THEME,jk as RTICHOKE_COLORS,Ev as ReferenceLineV2SpecSchema,aI as ReportComponentSchema,dy as ReportComponentV1_1Schema,sI as ReportGroupSchema,cI as ReportSectionSchema,V8 as ReportSpecSchema,Lp as ReportSpecV1_0Schema,Vp as ReportSpecV1_1Schema,Xb as RocSpecSchema,ay as RocV2SpecSchema,I8 as RtichokeChartSpecSchema,sy as RtichokeChartSpecV2Schema,gc as SeriesSpecSchema,Fv as SmoothCalibrationV2DatumSchema,my as StandaloneCanonicalSpecSchema,af as StateDistributionSchema,rI as StateStratumSchema,$8 as SummaryMetricSchema,ly as SummaryMetricsSpecSchema,qv as TreatAllReferenceSchema,Kv as TreatNoneReferenceSchema,gy as assertOutcomeDistributionReferentialIntegrity,hy as assertPerformanceTableReferentialIntegrity,cf as assertPredictionDistributionReferentialIntegrity,zp as assertReportReferentialIntegrity,jp as assertStateDistributionValid,by as assertSummaryMetricsReferentialIntegrity,vi as assertV2ReferentialIntegrity,U8 as calibrationSpecFromRtichokeRows,q8 as calibrationV2SpecFromRtichokeRows,Uk as extractOperatingPointValues,Wk as preparePredictionDistributionPlotData,tL as renderCalibration,SL as renderCalibrationV2,Fw as renderDecisionCurveV2,Ew as renderGainsV2,$w as renderInterventionsAvoidedV2,Aw as renderLiftV2,zw as renderOutcomeDistribution,jw as renderPerformanceTable,Rw as renderPrecisionRecallV2,Uw as renderPredictionDistribution,DB as renderReport,VB as renderRoc,kw as renderRocV2,Gw as renderSummaryMetrics,js as renderWithOperatingPointSelection,rn as resolveV2RenderOptions,j8 as rocSpecFromRtichokePython,z8 as rocSpecFromRtichokeR,K8 as rocV2SpecFromRtichokePython,G8 as rocV2SpecFromRtichokeR}; diff --git a/tests/test_reals_distribution_steps_browser_acceptance.py b/tests/test_reals_distribution_steps_browser_acceptance.py new file mode 100644 index 00000000..cfc53215 --- /dev/null +++ b/tests/test_reals_distribution_steps_browser_acceptance.py @@ -0,0 +1,183 @@ +from contextlib import contextmanager +from functools import partial +from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer +from pathlib import Path +from threading import Thread +from typing import Iterator + +import polars as pl +import pytest +from rtichoke.reals_distribution import create_reals_distribution_steps + + +@contextmanager +def _serve(directory: Path) -> Iterator[str]: + handler = partial(SimpleHTTPRequestHandler, directory=str(directory)) + server = ThreadingHTTPServer(("127.0.0.1", 0), handler) + thread = Thread(target=server.serve_forever, daemon=True) + thread.start() + try: + yield f"http://127.0.0.1:{server.server_port}" + finally: + server.shutdown() + thread.join() + server.server_close() + + +def test_reals_distribution_steps_browser_acceptance(tmp_path: Path): + try: + from playwright.sync_api import sync_playwright + except ImportError: + pytest.skip("playwright is not available") + + df = pl.DataFrame( + { + "id": [1, 1, 1, 2, 2, 2, 3, 3, 3], + "step": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "reals": [ + "None", + "Mild", + "Moderate", + "None", + "Mild", + "Mild", + "None", + "None", + "Mild", + ], + } + ) + + # 1. Raw / Excluded outcome distribution chart + chart_excl = create_reals_distribution_steps( + df, + reals_order=["None", "Mild", "Moderate"], + reals_scale="ordinal", + censoring_heuristic="excluded", + ) + html_file_excl = tmp_path / "reals_dist_excl.html" + chart_excl.write_html(html_file_excl) + + # 2. AJ / Adjusted outcome distribution chart + chart_adj = create_reals_distribution_steps( + df, + reals_order=["None", "Mild", "Moderate"], + reals_scale="ordinal", + censoring_heuristic="adjusted", + ) + html_file_adj = tmp_path / "reals_dist_adj.html" + chart_adj.write_html(html_file_adj) + + # Verify rendering over local HTTP server + with _serve(tmp_path) as base_url: + with sync_playwright() as p: + browser = p.chromium.launch(headless=True) + + # Test Excluded Mode HTML + page = browser.new_page() + errors: list[str] = [] + page.on( + "console", + lambda msg: ( + errors.append(msg.text) + if msg.type in ["error", "warning"] + else None + ), + ) + page.on("pageerror", lambda err: errors.append(str(err))) + page.goto(f"{base_url}/reals_dist_excl.html") + page.wait_for_selector("svg") + + assert page.locator("svg").count() >= 1 + assert len(errors) == 0, f"Console errors in excluded mode: {errors}" + page.close() + + # Test Adjusted Mode HTML + page_adj = browser.new_page() + errors_adj: list[str] = [] + page_adj.on( + "console", + lambda msg: ( + errors_adj.append(msg.text) + if msg.type in ["error", "warning"] + else None + ), + ) + page_adj.on("pageerror", lambda err: errors_adj.append(str(err))) + page_adj.goto(f"{base_url}/reals_dist_adj.html") + page_adj.wait_for_selector("svg") + + assert page_adj.locator("svg").count() >= 1 + assert len(errors_adj) == 0, ( + f"Console errors in adjusted mode: {errors_adj}" + ) + page_adj.close() + + browser.close() + + # Verify direct file:// loading + with sync_playwright() as p: + browser = p.chromium.launch( + headless=True, + args=["--allow-file-access-from-files"], + ) + page = browser.new_page() + errors = [] + page.on( + "console", + lambda msg: ( + errors.append(msg.text) if msg.type in ["error", "warning"] else None + ), + ) + page.on("pageerror", lambda err: errors.append(str(err))) + page.goto(html_file_excl.as_uri()) + page.wait_for_selector("svg") + + assert page.locator("svg").count() >= 1 + assert len(errors) == 0, f"Console errors found over file://: {errors}" + browser.close() + + +def test_reals_distribution_nominal_browser_acceptance(tmp_path: Path): + try: + from playwright.sync_api import sync_playwright + except ImportError: + pytest.skip("playwright is not available") + + df = pl.DataFrame( + { + "id": [1, 1, 2, 2], + "step": [0, 1, 0, 1], + "reals": ["Red", "Blue", "Green", "Red"], + } + ) + + chart = create_reals_distribution_steps( + df, + reals_order=["Red", "Green", "Blue"], + reals_scale="nominal", + censoring_heuristic="excluded", + ) + html_file = tmp_path / "reals_dist_nominal.html" + chart.write_html(html_file) + + with sync_playwright() as p: + browser = p.chromium.launch( + headless=True, + args=["--allow-file-access-from-files"], + ) + page = browser.new_page() + errors: list[str] = [] + page.on( + "console", + lambda msg: ( + errors.append(msg.text) if msg.type in ["error", "warning"] else None + ), + ) + page.on("pageerror", lambda err: errors.append(str(err))) + page.goto(html_file.as_uri()) + page.wait_for_selector("svg") + + assert page.locator("svg").count() >= 1 + assert len(errors) == 0, f"Console errors in nominal mode: {errors}" + browser.close() diff --git a/tests/test_rtichoke_viz_vendor.py b/tests/test_rtichoke_viz_vendor.py index d7ed7ddc..e63e8df4 100644 --- a/tests/test_rtichoke_viz_vendor.py +++ b/tests/test_rtichoke_viz_vendor.py @@ -3,19 +3,19 @@ from pathlib import Path _VENDOR = Path(__file__).parents[1] / "src" / "rtichoke" / "_vendor" / "rtichoke_viz" -_RELEASE_DIR = "rtichoke-viz-0.23.2" -_SHA256 = "63981f4e4f78b38e6442b663052c17592d3355312ba16fb370321d25af456bfe" -_SOURCE_COMMIT = "af70152c884b351ed7c407047a92cad5c1bd7007" +_RELEASE_DIR = "rtichoke-viz-0.24.0" +_SHA256 = "58f153fbfb5aa57affbec983c4e4960fd0889c26e64ef1d25dbf982654fa90f0" +_SOURCE_COMMIT = "9ff8c40138c7b2d11332483e0ede900d8b50b935" -def test_vendored_rtichoke_viz_v0232_provenance_archive_and_schemas(): +def test_vendored_rtichoke_viz_v0240_provenance_archive_and_schemas(): provenance = (_VENDOR / "VENDORED_FROM").read_text() - assert "release=v0.23.2" in provenance + assert "release=v0.24.0" in provenance assert f"source_commit={_SOURCE_COMMIT}" in provenance - assert "archive=rtichoke-viz-0.23.2.tar.gz" in provenance + assert "archive=rtichoke-viz-0.24.0.tar.gz" in provenance assert f"sha256={_SHA256}" in provenance - archive = _VENDOR / "rtichoke-viz-0.23.2.tar.gz" + archive = _VENDOR / "rtichoke-viz-0.24.0.tar.gz" assert hashlib.sha256(archive.read_bytes()).hexdigest() == _SHA256 with tarfile.open(archive, "r:gz") as release: assert set(release.getnames()) == { @@ -30,7 +30,7 @@ def test_vendored_rtichoke_viz_v0232_provenance_archive_and_schemas(): manifest = release.extractfile(f"{_RELEASE_DIR}/MANIFEST") assert manifest is not None assert manifest.read().decode() == ( - f"version=0.23.2\ncommit={_SOURCE_COMMIT}\n" + f"version=0.24.0\ncommit={_SOURCE_COMMIT}\n" ) for filename in ( "rtichoke-viz.css", @@ -43,6 +43,7 @@ def test_vendored_rtichoke_viz_v0232_provenance_archive_and_schemas(): assert packaged is not None assert (_VENDOR / filename).read_bytes() == packaged.read() + assert not (_VENDOR / "rtichoke-viz-0.23.2.tar.gz").exists() assert not (_VENDOR / "rtichoke-viz-0.23.0.tar.gz").exists() assert not (_VENDOR / "rtichoke-viz-0.22.3.tar.gz").exists() assert not (_VENDOR / "rtichoke-viz-0.22.2.tar.gz").exists() @@ -67,7 +68,7 @@ def test_vendored_rtichoke_viz_v0232_provenance_archive_and_schemas(): assert '"summary_metrics"' in report_schema -def test_v0232_bundle_keeps_existing_exports_and_prediction_distribution(): +def test_v0240_bundle_keeps_existing_exports_and_outcome_distribution(): bundle = (_VENDOR / "rtichoke-viz.js").read_text(encoding="utf-8") for export_name in ( "renderRoc", @@ -87,6 +88,8 @@ def test_v0232_bundle_keeps_existing_exports_and_prediction_distribution(): "SummaryMetricsSpecSchema", "renderPredictionDistribution", "PredictionDistributionSpecSchema", + "renderOutcomeDistribution", + "OutcomeDistributionSpecSchema", ): assert export_name in bundle